No Game, No Game Engine

In August 2021, we set out to work on a new mobile strategy game. Mobile apps are by no means new to the team, as we have successfully created several of them in recent years. For instance, last year we released a driving theory app specifically for use in Switzerland. One of the challenges that emerges in app development is the lack of a framework that allows us to develop native apps for both Android and iOS. However, most of our development team had previous experience with Flutter, so it was relatively simple to create the first screens for the game. Additionally, about half of the team has worked for many years on backend code. We have collective experience creating that which is invisible to the user but absolutely essential for all things Internet. In a matter of weeks, we had a Java backend service, a database, and an authentication server for the mobile app to tap into. This allowed us to create user accounts and display and save your hero selection for users. But something important was missing…
In a mobile strategy game we need to render a map, show troop movement, and display visual features like trees, hills, and castles. These requirements mark a slight departure from the familiarity of business apps where we display inputs, text, and images. With this in mind, we started on a quest to use the right game engine for our project, something that would allow us to display a dynamic map throughout the game. Bonfire proved to provide a very promising library. It allowed us to display all the things we needed, add non-player characters, and let the user move their avatar across the world. It’s a game engine that can’t be beat when it comes to creating an RPG.
“In a mobile strategy game we need to render a map, show troop movement, and display visual features like trees, hills, and castles.”
After experimenting with the underlying flame engine, we realized how much work it would be to implement low-level features like path-finding, collision detection, map rendering, and other minutiae that should not concern developers. We ultimately needed to integrate a mature game engine that would save us from the need to reinvent the wheel. After some more research, we discovered the answer: Unity. After alternating bouts of fear, hope, and late-night coding, we managed to integrate the Unity Engine into Flutter thanks to the Flutter Unity Widget project.
This integration proved to be a tricky leap of faith, as no one on the team had worked with Unity before. However, with some help from Dmytro, we were finally able to integrate Unity into our Flutter app successfully and the next part of our game development journey could continue. We achieved the integration five months ago and are very happy that, despite all of the challenges we face right now, we have a reliable and mature game engine to lean on for the bulk of the heavy lifting. We can’t wait to see how else we can grow and adapt to make this the best gaming experience possible for developers, users, and everyone in between.
No Comments