The game
Zoodiac is a five-person DigiPen game project built in C++ using Alpha Engine. Players explore an isometric world and complete animals’ minigames to befriend them. The game connects an overworld with challenges involving collecting, dodging, climbing and running, supported by shared movement, collision and scene systems.
Architecture and responsibility
I designed the backend architecture, including the approach to ECS systems, scene management, reusable prefabs and shared resources. I implemented substantial parts of that foundation while teammates contributed to the implementation and gameplay built on it. The level editor was shared work with Lim Geng Yang; pet behaviour and the individual minigame systems also include teammates’ contributions.
Making a 2D engine feel three-dimensional
My biggest lesson was simulating a 3D isometric world in a primarily 2D engine. World positions and projected screen positions serve different purposes, while a separate height value supports jumping and elevated terrain. Collision combines planar overlap with height ranges. Rendering needs an explicit order so that characters, tiles and objects overlap convincingly. Keeping movement, collision and drawing consistent was the core challenge.
A templated C++ ECS
Following the C-based system interface in Golden Tortoise, I used C++ templates to express systems in terms of the components they require. Variadic system types hold tuples of component pointers and dispatch update functions over matching entities. A shared abstract interface lets the world manage different system types, while concrete systems work with typed component data.
Gameplay foundations and integration
My contribution log records the initial isometric grid, player movement, jumping, collision and rendering work, followed by render-order implementation and fixes. It also records minigame prototyping, collection-minigame updates, climbing and running win conditions, pause behaviour and result UI integration. These contributions connected the framework to the team’s playable challenges.
Prefabs, persistence and authoring tools
Built JSON serialization and prefab functionality using RapidJSON, so entities could be created from reusable definitions and scenes could be saved and loaded. The shared level editor places prefab entities on an isometric grid with height layers and includes undo/redo logic. This gave the project a content-authoring path alongside its runtime framework.
Scene transitions and shared data
The backend maintains a scene stack and separate collections of entities and systems for each scene. Entity deletion is deferred until after system updates. A scene-scoped dependency registry provides shared data pointers for values such as score, player position, pause state and pet progression, connecting gameplay systems without requiring them to own one another.
Enforcing a shared development workflow
I established and enforced the team’s Git workflow, including forked repositories, pull requests and code reviews. Alongside designing the architecture, I helped define how changes were proposed, reviewed and integrated into the shared project.
What I took forward
The isometric work taught me that adding a projection is only one part of creating depth. A consistent model must connect world coordinates, screen coordinates, height, collision and draw order. Zoodiac was also an opportunity to turn architectural ideas into reusable systems and tools that a team could build its game around.

