We used Photon and PUN, to improve connection speed and reliability.
The team received backend code in Cake PHP (including admin panel for balancing game on the fly and full backend logic), and protocol based on JSON, where some requests could exceed 100 kb.
On the client-side the project used NGUI as UI framework, not utilizing correctly neither it’s atlas generation, nor masking features, relying on raw images and panels. Also, Unity project used manual animation transitioning for over 100 animations, instead of using Animation Controller and animation blending.
When Stepico was brought to the project, we were tasked with rewriting the core for the client, full rewrite of a backend, to support an array of feature changes and new features, that was not possible with old backend in very short time span (less than three months).
The dedicated team of a lead backend developer, full-stack developer, and two Unity developers, spend time analyzing the project requirements, scalability options, and current project problems. After that, the Stepico team successfully carried out the task of changing, adapting and rewriting the project to the customer’s satisfaction. After estimating the task at hand and consulting with leads, the team decided to use our best experiences with the most applicable technologies to meet the expected deadline.
We used Photon and PUN with a proprietary in-house serialization solution, to improve connection speed and reliability, as well as the added ability for event pushing/broadcasting from server within the same protocol that the whole game is based around. Also, the size of the largest response dropped below 7kb (due to object description optimization, drop of HTTP overhead and binary serialization).
We also rewrote the server in C# (using IIS and ASP.net) to allow code reusability between client and server.
On the client-side, the team updated Unity to a more modern version (unity 4.5 to 5.4 migration) and improved NGUI usage in the project, by more appropriate use of atlases and shaders (materials), which resulted in visible performance boost and memory optimization throughout the project.
After the initial conversion of the project, we’ve continued working with a customer until now, for more than a year.
During this time we have faced a number of challenges. One of the main challenges we had to overcome was database design. Due to time constraints and customer requests we needed to preserve basic database configuration, which restricted us in the possibility of overall architecture change. We had to maximize the usage of caching approaches to boost the performance of slow queries.
In one particular example, we utilized the strength of Redis’ tools (like work with sets and set operations) to implement easy to use and very fast rating system, which allowed filtering and cross-filtering with a large number of different parameters.
Another challenge we successfully overcame was making an improvement to the animation approach, where we vastly simplified the approach of adding and combining new animations. To solve scalability questions, we used a combination of Photon’s gamebalancer and AWS infrastructure to prepare a solution, where monitoring, adding and removing game servers on the fly was not an issue.
Overall Stepico made a significant improvement to a project that suffered from development hell and helped it become an app that attracts hundreds of users even while in open beta tests, much to the customer’s satisfaction. MMA Manager is a gym management game, with city building, fighter progression and async PVP mechanics.