For our team, developing Creature Quest, the mobile strategy RPG, has been a thrilling adventure all its own. It’s been a journey where our heroic development team needed to slay the fearsome monsters of scaling, client-versus-server data handling, and other tricky impediments – all so that the peace of a seamless player experience may reign throughout the game’s world. Completing our quest required gathering artifacts of power, from a trustworthy game engine to a database capable of delivering us to our destiny.
Our team of experienced PC game development professionals set out as a new company looking to explore the rapidly growing realm of mobile gaming. At its head was Jon Van Caneghem, the creator of the Might and Magic and Heroes of Might and Magic game series. In looking to provide the same enchantment of those games via a mobile experience, our team began learning the lore of the smaller-screen landscape, investigating technology options and the standard stacks while strategizing over how to overcome certain technical obstacles.
We had experience using Node.js and knew that we wanted a document database. That led us to vetting open source NoSQL options, and we found MongoDB to be a strong fit for the task at hand. However, as a startup with a small team that didn’t happen to include a dedicated MongoDB expert, the work of implementing and managing this database soon proved daunting. Our limited resources also meant efficiency and a tight focus on actual game development were essential to getting Creature Quest off the ground, making the prospect of adding an expensive MongoDB expert to the internal team even less likely.
Still, the situation called for putting expert database management into place. Given that the potential user base for a mobile game includes nearly everyone who owns a smartphone, overnight success could mean profound database scalability stresses requiring true expertise to navigate. Ultimately, we decided on a hosted MongoDB strategy that could deliver this proficiency, and affordably achieve the required scalability and reliability while also keeping database management off of the internal engineering team’s plate. The MongoDB database provider mLab had worked well throughout a free trial and assessment period, and allowed us to begin on a small service plan and then easily scale as needed.
In searching for the best framework for building Creature Quest’s client-side app, we sought a solution that could deploy the app to the iOS, Android, and Android for Amazon platforms. For this we chose the Marmalade SDK and game engine, which enabled us to create C++ code and deploy native apps for each of the mobile platforms we targeted. As for the rest of our stack, the Lua programming language saw the most use by our team, with Marmalade offering the integrations required between Lua and the C++ core engine. The libcurl library was also selected to communicate with a backend NodeJS REST API server, while the Mongoose NodeJS library for MongoDB served as a middleware layer. Data flows through this system with the client app first sending requests to the NodeJS server, which in turn sends calls to store or retrieve data in the database. NodeJS supports greater scalability by operating asynchronously, as concurrent handling of requests vastly increases the scale of data the system can process.
Throughout this game development journey, one of the most challenging strategic issues we’ve faced is in striking the balance between handling data on the client or the server. To safeguard the integrity of game data, our early test versions of the game required the client to verify all data with the server. This succeeded in making sure that players couldn’t use hacked versions of the client to cheat – unfortunately it also reduced the game’s performance to a stuttering mess. In mobile gaming, a velvety smooth play experience is a requisite: players will quickly abandon apps with performance issues.
So we adapted, allowing for unverified data to accumulate on the client and be saved to the server only at key transitional moments within the gameplay. For crucial data transactions such as in-game purchases, we focused on getting the architecture around those sequences just right, while at the same time concentrating QA efforts to be certain that the app wouldn’t crash when critical player data could be lost.
As the adventure of developing Creature Quest continues, the journey is already riddled with milestones, including a successful worldwide launch and a loyal and growing audience. But the game’s promising outlook is really helped by the fact that we have trustworthy technology and an effective data strategy in place going forward.