Role: Lead Developer
Technologies: Unity, Firebase, Photon Fusion 2, Edgegap
Duration of my involvement: 10 Months - from basic idea to post-launch period (May 2025 - Feb 2026)
1 month - Discovery
7 months - Production until launch
1 month - Post-launch support and additional features
Team: 2-4 Developers (2 developers joined later in the project), 2 Artists, Project Manager, Game Designer, Client
Company: Ingenious Studios
2 to 4 player real-time 2D multiplayer gameplay
Solo and Party Matchmaking
3D Animated Characters with different skins, accessories and animations
Hero Shop with lots of customization items, daily rewards, and weekly featured items
Daily and Weekly Quests
In-App Purchases
Created the first prototype for the initial validation of basic gameplay
Researched and decided on the 3rd party options used for server hosting and matchmaking
Created the developer estimates and participated in the roadmap creation, prioritizing technical unknowns
Defined the project architecture, core systems and their relationships
Led the developer team and made sure that the technical vision is executed
Implemented all of the multiplayer logic
Organized and held the developer planning meetings when they were necessary
Onboarded the newcoming developers
Led the incremental developer estimates between milestones
Mitigated technical issues as they arose
Out-of-the-box projectile movement using Physics 2D was not satisfactory and would not be enough for the needs of the game
Implemented a custom movement logic for projectiles with working multiplayer client prediction
Nobody on the team, including myself, worked with Photon Fusion before
Learned the basics using online resources and advice from other colleagues
Dedicated servers run on Linux, which Firebase libraries don't support
Implemented and tested all of the Firestore calls using the REST API on the server, instead of using the Unity Firestore libraries
Early on, there were performance spikes in the moments when new projectiles were being spawned
Implemented a generic pooling mechanism, which enabled fast and easy adding of different projectile types later with pooling built-in
Potential data conflicts between server and client
Planned out a simple solution for deciding when the server is the authority for the player data vs. when the client is the authority, and implemented it with the team
A lot of the gameplay was not known yet at the start of the project
Exposed game parameters for the game designer to tweak as needed; Prioritized keeping the gameplay code as simple as possible so that it could be changed later
Party matchmaking was not supported by the matchmaking service
Planned out a custom party matchmaking solution using Firestore and Cloud Functions and implemented it with the team
The player inventory had to support buying and owning several different types of items: characters, skins, titles, accessories etc.
Planned out and implement a simple inventory system which treats all of the items similarly and discerns them as needed
The game needed to support 60FPS during gameplay on weak devices
Checked the performance regularly on a weak Android device and made sure it stayed at 60FPS