{"id":342,"date":"2026-03-05T03:26:00","date_gmt":"2026-03-05T03:26:00","guid":{"rendered":"https:\/\/kareemelawar.me\/?p=342"},"modified":"2026-03-05T03:26:00","modified_gmt":"2026-03-05T03:26:00","slug":"treekeeper","status":"publish","type":"post","link":"https:\/\/kareemelawar.me\/?p=342","title":{"rendered":"TreeKeeper"},"content":{"rendered":"\n<p>Team Size: 7 | Role: Designer and Programmer<\/p>\n\n\n\n<p>Responsibilities:<br>\u2013 Tower Defense System Designer<br>\u2013 Tower Designer and Programmer<br>\u2013 Enemy Designer and Programmer <br>\u2013 Wave Designer <\/p>\n\n\n\n<!--more READ MORE-->\n\n\n\n<figure class=\"wp-block-image size-full wp-duotone-unset-1\"><img loading=\"lazy\" decoding=\"async\" width=\"630\" height=\"500\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/DVEJ5N.png\" alt=\"\" class=\"wp-image-344\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/DVEJ5N.png 630w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/DVEJ5N-300x238.png 300w\" sizes=\"auto, (max-width: 630px) 100vw, 630px\" \/><\/figure>\n\n\n\n<p>Treekeeper is a 3d, top-down, open field tower defense game where the player plays as a druid defending The Great Tree from the fires of industry. Strategically place natural defenses around the tree to protect it from a fully autonomous corporation that has other plans for the land The Great Tree is on.&nbsp;Move around the map, build up defenses, advance them along upgrade trees and combat the corporation\u2019s legions of AI controlled robots!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-2\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-1024x573.png\" alt=\"\" class=\"wp-image-348\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-1024x573.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-300x168.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-768x429.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-1536x859.png 1536w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I designed TreeKeeper&#8217;s tower defense system to be able to support large scale defenses and massive waves of enemies. To keep the number of active objects low I made the towers utilize an overarching game manager to run all of their targeting systems instead of individual towers running running their own enemy tracking. The same system also controls attacking through direct entity references which makes it so that there are no projectiles used in the game which improved performance. This tracking system supports multiple targeting types that can be assigned to individual towers. These targeting types include:<br>&#8211; First Target &#8211; Closest to The Great Tree<br>&#8211; Last Target &#8211; Farthest from The Great Tree<br>&#8211; Closest Target &#8211; Closest to the tower<br>&#8211; Strongest Target &#8211; Enemy with the highest health<\/p>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-3\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"764\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161420-1024x764.png\" alt=\"\" class=\"wp-image-346\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161420-1024x764.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161420-300x224.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161420-768x573.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161420.png 1189w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-4\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"767\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161439-1024x767.png\" alt=\"\" class=\"wp-image-347\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161439-1024x767.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161439-300x225.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161439-768x575.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161439.png 1191w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-custom-gold-color has-text-color has-link-color wp-elements-7fc90fd2b3e362f87a27ce1aa7c07a48\">I designed the towers to upgrade based on stages rather than pure stats. The tier 1 tower, Greenhorn Ent, acted as a base for all the others. Each upgrade is a objective improvement on the last tier, but has clear advantages and disadvantages compared to other tower types of the same tier. The stats and features of the towers were calculated, displayed, and updated throughout the development and testing of the game. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full wp-duotone-unset-5\"><img loading=\"lazy\" decoding=\"async\" width=\"959\" height=\"307\" src=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-4.png\" alt=\"\" class=\"wp-image-358\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-4.png 959w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-4-300x96.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-4-768x246.png 768w\" sizes=\"auto, (max-width: 959px) 100vw, 959px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-6\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-1024x573.png\" alt=\"\" class=\"wp-image-348\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-1024x573.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-300x168.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-768x429.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526-1536x859.png 1536w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161526.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Similarly, enemies were also calculated and documented in a spreadsheet. Enemies were designed to pose different challenges to the player&#8217;s defenses. Certain enemies require sufficient crowd control while others require focused bursts of damage. The drone in particular was designed to subvert standard defenses by flying over walls and only targeting attack towers and The Great Tree. Enemies were made to navigate to the central defense point from any angle as opposed to other tower defense games that send enemies on designated paths.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full wp-duotone-unset-7\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"96\" src=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-5.png\" alt=\"\" class=\"wp-image-360\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-5.png 960w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-5-300x30.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-5-768x77.png 768w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-8\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161805-1024x571.png\" alt=\"\" class=\"wp-image-351\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161805-1024x571.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161805-300x167.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161805-768x428.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161805-1536x856.png 1536w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161805.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-custom-gold-color has-text-color has-link-color wp-elements-e6e25d3be55c26d9f5345e7bc06831e6\">TreeKeeper features 6 waves that are balanced around the resource economy of passive generation and active generation from destroying enemies. Waves were created through a data table that automatically adjusted per any balance changes to tower, enemy, and economy stats. Each was designed through a flow of resources and damage resulting in a difficulty state that requires the player&#8217;s active attention to win. This comes after multiple playtesting sessions over the course of several weeks where I noted each player&#8217;s progress, spoken thought analysis of their thoughts, and major actions. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full wp-duotone-unset-9\"><img loading=\"lazy\" decoding=\"async\" width=\"958\" height=\"302\" src=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-6.png\" alt=\"\" class=\"wp-image-365\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-6.png 958w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-6-300x95.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Untitled-drawing-6-768x242.png 768w\" sizes=\"auto, (max-width: 958px) 100vw, 958px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-image wp-duotone-unset-10\"><img loading=\"lazy\" decoding=\"async\" width=\"449\" height=\"695\" src=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-205514.png\" alt=\"\" class=\"wp-image-363\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-205514.png 449w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-205514-194x300.png 194w\" sizes=\"auto, (max-width: 449px) 100vw, 449px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p>Waves are created through a Scriptable-Object based phase system where phases are set with enemy types, enemy intervals, direction of attack (or no fixed direction), direction deviation, enemy cluster data, and time till next phase. This system allows for precise creation of waves with specific experience goals as well as controlled deviations.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large wp-duotone-unset-11\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"571\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161613-1024x571.png\" alt=\"\" class=\"wp-image-350\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161613-1024x571.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161613-300x167.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161613-768x429.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161613-1536x857.png 1536w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161613.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-12\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-162023-1024x573.png\" alt=\"\" class=\"wp-image-353\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-162023-1024x573.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-162023-300x168.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-162023-768x430.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-162023-1536x860.png 1536w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-162023.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large wp-duotone-unset-13\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"572\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161951-1024x572.png\" alt=\"\" class=\"wp-image-352\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161951-1024x572.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161951-300x168.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161951-768x429.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161951-1536x858.png 1536w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161951.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large wp-duotone-unset-14\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" src=\"http:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161554-1024x573.png\" alt=\"\" class=\"wp-image-349\" srcset=\"https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161554-1024x573.png 1024w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161554-300x168.png 300w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161554-768x429.png 768w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161554-1536x859.png 1536w, https:\/\/kareemelawar.me\/wp-content\/uploads\/2026\/03\/Screenshot-2026-03-04-161554.png 1919w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/shawareb-knight.itch.io\/treekeeper\">Link to Game<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Team Size: 6 | Role: Tech Designer<\/p>\n<p>Responsibilities:<br \/>\n\u2013 Level Designer<br \/>\n\u2013 Stealth System Designer<br \/>\n\u2013 Gadget Programmer<br \/>\n\u2013 Document Project<\/p>\n","protected":false},"author":1,"featured_media":344,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,7],"tags":[],"class_list":["post-342","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gallery-projects","category-home-page-projects"],"_links":{"self":[{"href":"https:\/\/kareemelawar.me\/index.php?rest_route=\/wp\/v2\/posts\/342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kareemelawar.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kareemelawar.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kareemelawar.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kareemelawar.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=342"}],"version-history":[{"count":5,"href":"https:\/\/kareemelawar.me\/index.php?rest_route=\/wp\/v2\/posts\/342\/revisions"}],"predecessor-version":[{"id":367,"href":"https:\/\/kareemelawar.me\/index.php?rest_route=\/wp\/v2\/posts\/342\/revisions\/367"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kareemelawar.me\/index.php?rest_route=\/wp\/v2\/media\/344"}],"wp:attachment":[{"href":"https:\/\/kareemelawar.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kareemelawar.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kareemelawar.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}