The project
Built in C++ using the NYP graphics framework in 2017, Alive Organisms combines tile-based platforming with melee and ranged combat, equipment and boss encounters. Dead Cells influenced both the gameplay and the name.
My contribution
My main responsibilities were the combat input queue, boss attack strategies and part of the spatial partitioning design. I also implemented melee hitboxes, directional projectiles, damage handling and invulnerability frames, and worked on movement fixes and animation integration.
Queuing combat input
I designed the input queue to coordinate player commands with the action already in progress. The controller tracks the current action, its animation timing and when it can be cancelled. Directional attack combinations are dispatched through function tables.
I also fixed cases where a command triggered two actions.
Modular boss behaviour
I organised boss attacks into separate strategy classes with a common interface for initialisation and updates. Each boss selects an attack, runs it until completion, then returns to idle.
Plague can summon enemies, release poison bubbles and charge, while Famine uses melee attacks and arcing projectiles. Keeping each attack in its own class separated its behaviour from the boss logic that selects it.
Processing nearby entities
I helped design a fixed grid that groups entities by their location in the level. During exploration, the entity manager first gathers entities from the player’s region and its surrounding regions. It then checks them against an expanded bounding box around the player.
The resulting list is used for dynamic entity updates, collision checks and rendering. Entities in the global group are always included, while moving entities are reassigned when they cross region boundaries. Boss encounters use a separate set of regions.
Spatial partitioning playground
Move the player to see which regions are queried and which entities pass the bounding-box check. Adjust the population and query bounds to see how the candidate and nearby entity counts change.
Open playground ↗