Project Overview
One of the main technical challenges on Magic Brick Wars was the shutdown of Amazon GameSparks, which the original game backend depended on.
To ensure the game remained operational, the backend infrastructure was migrated to Heroic Labs Nakama. This required rebuilding parts of the backend architecture while ensuring existing gameplay systems, multiplayer features, and player data continued working as expected.
The work included server configuration, compatibility layers, backend code, and extensive testing to make sure the migration was transparent to the player.
Key Contributions
- Migrated backend infrastructure from Amazon GameSparks to Heroic Labs Nakama
- Set up and configured new multiplayer backend servers
- Implemented server-side functionality using Go
- Developed a C# wrapper replicating GameSparks data workflows
- Maintained compatibility with existing Unity gameplay systems
- Minimised the amount of client-side code that required rewriting
- Ensured player accounts, progression, and multiplayer systems continued functioning
- Improved backend reliability and long-term maintainability
Backend Migration
The original backend relied on Amazon GameSparks, which was discontinued. To prevent service disruption, the backend was migrated to Heroic Labs Nakama.
The migration required standing up new servers, implementing authentication, matchmaking, and data storage compatibility, and ensuring the Unity client continued working with minimal changes.
To achieve this, I built a custom wrapper layer in C# that replicated the GameSparks data handling patterns. This allowed the client code to continue interacting with backend data in the same way while routing those calls through the new Nakama services.
This significantly reduced the amount of code that needed rewriting and allowed the game to transition to the new infrastructure with minimal disruption.
Server Development
Parts of the backend server logic were implemented using Go as part of the Nakama server environment. This included handling player data operations and server-side game logic previously managed by GameSparks.
Learning Go during the project allowed me to contribute to the server-side code while ensuring it integrated cleanly with the Unity client and existing gameplay systems.
What This Project Demonstrates
- Backend migration: Replacing a discontinued online service while maintaining a live game.
- Multiplayer infrastructure: Setting up and integrating a new backend platform.
- Cross-language development: Writing both Unity client code in C# and server code in Go.
- Compatibility engineering: Building wrapper systems to minimise client-side rewrites.
- Live service maintenance: Ensuring players could continue using online features without disruption.