Maison De Maou
Team Size : 6
About
Maison De Maou is a mobile game with more than 10,000 downloads on iOS and Android devices. Fusing Tower Defense and Apartment Management Simulation, it emulates the well-known PC game Unholy Heights in its basic gameplay, cute characters, and multi-layered resource management.
To play, you’ll build your own customized monster army to fight against the occasional attack from different enemies like farmers, fighters, knights, mages, merchants, and more. The enemies will try and take over your apartment building, so it’s important to make sure the tenants inside are happy and on your side when turmoil arises.
Along with protecting your Maison, you’ll need to take quests to advance in the game. The blend of game genres and beautifully developed graphics make Maison De Maou addicting, enjoyable, and fairly difficult, so don’t let the innocent-looking interface fool you!
Challenges
Previously, Maison De Maou had been outsourced to another company, and then we planned to have it finished by an internal team of game developers. Upon analyzing the existing source code, we identified an abundance of bugs that needed to be fixed, prohibiting us from extending that source code to further development of the game.
Our next challenge was to then build the entire game from the ground up in a short period of time. At the time, Active Gaming Media was a relatively new team. Achieving a thorough build of Maison De Maou was one of the first projects that we carried out as a unit, allowing us to gain a thorough understanding of our workflow and overall strength as a team.
Here are the key points that we wanted to address during the Unity game build:
-
Maintaining an extendable source code.
-
Achieving uninterrupted server-client connectivity.
-
Being able to handle load balancing and scale server sides depending on usage.
-
Achieving secure server-client communication.
-
Avoiding cheating amongst players.
To add to that list of challenges, our team had to find a way to add new features to the game while releasing a new client and updating the server-side. It was quite the challenge to set up a maintenance break and update the server without losing the data of existing players. In this article, I describe how to do versioning as well as things you need to consider before doing a maintenance break.
Approach:
To avoid repeating the mistakes from the last game build, our game developer team knew that we needed the proper architecture on both the client and server sides. To allow for further refinement of the game and the ability to add and remove features, we made sure the source code was extendable and would have the capacity to handle a lot of iterations throughout time.
And of course, as the game grows, we want the ability to add new levels and quests, keeping it relevant and fresh in the world of mobile game development. We decided to save all of the quest data and map data on the server-side. This extra step allows us to add new quests and maps without releasing an entirely new build.
To address player-side cheating, we decided to keep all of the user data and game logic on the server-side. For our server of choice, we decided to use Photon because it gives the build the extendability needed to add game logic within the server. Photon also allows us to do load balancing as well as easily scale the server-side if required.
The user experience is always a top priority for us, so we wanted to ensure strong server-client communication—regardless of how strong their network connection is. For Maison De Maou, we put extra emphasis on transferring as little data as possible so that gamers can play without any issues. Additionally, it was vital that we encrypt the data when transferring between client and server.
We decided to use MySql for our database of choice. When using MySql in combination with NHibernate, it’s quite easy to communicate between a client and the database. For the client’s side of the game, we chose to use Unity’s asset bundles, as Unity enables us to reduce the build size and change the asset data without having to release a new build.