I started building math games for kids on Android, because… I saw the pickup of Chromebooks in schools; I wanted to build for those who couldn’t afford an iPad; others built for iOS first, and I wanted to try something different.
My idealism of reaching the most, however, met the reality that the influencers (writers, editors, bloggers, researchers, teachers, investors) who recommend apps have iPads. Over the 7 years I have been creating educational games for kids, I’ve been asked hundreds of times: ‘Where do I get the iOS app?’. The answer has so far been: ‘There isn’t one’. This year I plan to change that.
I’ve been looking at the different ways to do cross-platform development:
- Flutter: The ‘everything is a widget’ is too heavy-weight for game development. I will probably look at this again for supporting screens, but not for games. I will definitely use it if Google decides to replace Dart with Kotlin.
- Xamarin: No. ‘cos C-sharp. I suppose it is useful for someone who already has a lot of investment in the Microsoft eco-system. We don’t. I am fluent in Java and barely know C-sharp.
- Unity: It seems overly complex framework for mere 2D games. ‘Build once, retest everywhere’ paradigm is not appealing. Doesn’t mix well with rest of the apps native screens/code.
- Kotlin-Native: Yes. ‘cos Kotlin. It compiles into native code, so is superfast. Kotlin is already native for Android. With Kotlin-Native, there is native compilation for iOS too. I can use whichever layer of abstraction/platform-library I need or want. Plus, can add other platforms (even windows) in the future.
My easy-peasy-fun plan before I started writing the code was:
The pulling-my-hair-out reality right now is more like:
The good news, however, is that the toughest part i.e. the Game SDK with the drawing, audio, and touch handling in iOS and Android is almost done. I can soon start converting our existing games to multi-platform. Next post on how I built a multi-platform Game SDK wrapper using Kotlin-Native.