Lanternbound is a survival horror tower defense with a heavy time and resource management focus. Gameplay is split into two distinct phases: the night phase in which folktale monsters emerge from the shadows to attack the central lantern tower, and the day phase which provides temporary relief and time to patch up and expand the base. The player must construct defenses using limited resources, then must prioritize their time to keep turrets from running out of ammo, repair damaged barricades, and rebuild broken structures.
This was a two-week prototype completed as a team of 5: myself as solo programmer, one producer, one designer, and two artists. However, due to lack of studio resources, only half of the projects could go forward. After much deliberation our project was cut in favor of something less risky.
One of the deviations from the classic tower defense formula was a sandbox approach without a full open world. To bring out the horror aspect, enemies attack from all sides rather than travelling along a predefined path. This added a considerable amount of AI scope on its own. A grid is also necessary to simplify structure placement, and to make pathfinding efficient in a dynamic environment.
Another major gameplay element that supported the horror theme was the emphasis on time management. Building and repairing barricades takes time. Demolishing to reclaim resources takes time. Turrets have limited ammo and must be brought more from the central lantern tower, which takes time and imposes a soft limit on how far the player can build. Most of the above happens through the interaction system, which can bind and display as many actions as needed. This is achieved through functional-style callbacks and a small data structure describing how it should appear in the menu, and the name of the button that triggers it.
The combat system is built on a variation of the pub/sub pattern. This typically means sending messages to subscribers, but here subscribers are also capable of modifying or even cancelling those messages. For example, an enemy vulnerable to frost damage might listen for a damage event, check the target and damage type, and double the incoming damage value.
Full documentation here: Lanternbound Technical Plan & Risk Assessment
Unfortunately the repository is not publicly available at this time.