kitsonlow.
All work/zoodiacPROJECT_10
Browse projects
C++ & ISOMETRIC GAME ARCHITECTUREDigiPen · First-year team project

Zoodiac.

An isometric adventure where players challenge each animal’s minigame to befriend them. I designed the backend architecture and built much of its framework, with the central challenge of creating a world with height and depth inside a primarily 2D engine.

Architecture designer & backend programmer · Team of five
C++ECSISOMETRICSERIALIZATION
PROJECT_10 / ZOODIACJan–Apr 2023

SEP2 / GAM150 · Jan–Apr 2023

C++ & ISOMETRIC GAME ARCHITECTURE

Zoodiac

Read the project
Original pixel-art mountain and island background from Zoodiac
Role
Team
Stack
01 /

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.

02 /

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.

03 /

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.

04 /

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.

05 /

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.

06 /

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.

07 /

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.

08 /

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.

09 /

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.

Original Zoodiac title artwork in yellow lettering
Original Zoodiac title-logo asset. Artwork credit: the project team.
KEEP EXPLORING

The next project.

11 / C++ ENGINE & EDITOR ARCHITECTURE

Liberation Engine 2D

A custom C++ engine and editor connecting a typed ECS, reusable component metadata and explicit dependency injection.