Project Overview
This project involved porting Age of Zombies from Halfbrick’s in-house C++ technology into Unity and C#, while preserving gameplay feel and modernising the surrounding technical systems.
My contribution covered gameplay-facing systems such as achievements, save flow, wave logic, and leaderboards, as well as backend-facing work related to multiplayer, cloud storage, data flow compatibility, and release support.
The goal was not just to recreate the game in a new engine, but to make it maintainable and viable on newer platforms and services without forcing a complete rewrite of every connected system.
Key Contributions
- Rebuilt multiple gameplay systems from the original C++ codebase into C#
- Reimplemented the wave spawning system controlling enemy and boss encounters
- Recreated tile painting and environment interaction systems
- Rebuilt player progression, achievements, leaderboards, and save systems
- Optimised performance across mobile devices through profiling and asset workflow improvements
- Reduced memory usage and improved load times across target platforms
- Authored technical documentation to support cross-timezone collaboration
- Prepared production builds for Google Play and the App Store
- Performed QA testing and bug tracking in Jira alongside release management
Technical Areas
Below are some of the systems and areas I worked on during the project.
I worked on an achievement system that tracked gameplay statistics and checked unlock conditions, while also handling queued pop-up notifications for sequential unlocks.
The flow also needed to account for platform-specific achievement submission, so the local unlock logic had to complete cleanly before reporting to external services such as Google Play and iOS platforms.
This helped bridge the gap between local progression feedback and platform-level achievement systems.
The save flow used Unity components and unique object identifiers so scene objects could be tracked and restored correctly across sessions.
Data was stored through serialised object data and dictionaries, which made the system flexible, but also required careful handling of types when reading the data back into the correct gameplay systems.
This work fed into the broader goal of preserving progression and runtime state reliably inside the Unity version.
The wave system controls the timing, composition, and number of enemies that spawn during gameplay. This system was rebuilt in Unity to match the behaviour of the original C++ implementation while improving maintainability.
A significant amount of iteration and playtesting was required to ensure the spawn timing and encounter pacing felt identical to the original version.
The system manages zombie spawns, boss encounters, and wave progression across levels, ensuring the difficulty curve and gameplay flow remained consistent with the original design.
Leaderboards were implemented using platform services including Google Play Games and Apple Game Center.
Each platform has slightly different behaviour for presenting leaderboard data, so the implementation needed to support platform-specific logic while keeping the gameplay-facing system consistent.
This ensured player scores and progression were correctly reported across devices and platforms.
Alongside implementation work, I carried out extensive QA to help validate the port and its connected services for release on Halfbrick Plus and the new backend/server setup.
That meant checking gameplay behaviour, progression flows, online-connected features, and release readiness across the updated architecture.
What This Project Demonstrates
- Engine porting: Rebuilding gameplay systems from C++ into Unity and C#.
- Gameplay systems: Wave spawning, progression, achievements, save systems and leaderboards.
- Performance optimisation: Profiling memory usage and improving load times on mobile hardware.
- Production workflows: Preparing builds and supporting App Store and Google Play releases.
- Team collaboration: Writing technical documentation and working with QA and release management.