Sid Meier’s Civilization VI

As a Civilization fan of almost a decade I couldn’t wait to work on the Android port. This was a very new type of project for me. I hadn’t worked on Android previously, I hadn’t used Google Firebase, Crashlytics, Cloud Functions or interacted with the Play Store back-end at all.

The project presented many challenges, QA was provided by the publisher in another time zone, the game featured a huge C++ and Lua codebase with only a very slim Java layer, it was the first Android project for many of us, and we quickly discovered that OpenGL was too slow and Vulkan drivers varied greatly in quality and performance across devices.

I was primarily tasked with investigating/understanding Firebase and then implementing it into the app. Our plan was to use Firebase for authenticating DLC purchases within the game, as well as collecting and analysing crash dumps. I ended up using a combination of Firebase authentication, cloud functions and the database features.

Outside of purchase authentication I spent a substantial amount of time bug-fixing. Often these were very low level engine and platform-abstraction layer issues. Some examples include tracking down file and memory mapping problems, visual artifacting and device-specific crashes.

One very interesting problem we encountered was that the size of the project was just way larger than Android Studio was ever built to cope with. As such it was completely unusable. We had to transition over to Visual Studio during the project just to be able to continue development.

Previous
Previous

Destroy All Humans! 2 - Reprobed (Windows, Playstation 5, Xbox Series S/X)

Next
Next

Hotline Miami Collection (Windows, Mac, Linux, Xbox One)