
Platforms: iOS, Android, Windows
Links: None
MoFlow is Tag’s inhouse game engine. It has mostly be developed by Scott Downie and Stuart McGaw but I’ve helped out here and there, mostly in relation to cross-platform functionality. The main section I’ve developed is the Android portion of the engine.
Getting MoFlow to run on Android has had many obsticles. First of all MoFlow is a C++ engine, while android applications as mostly written in Java. It is possible to write an Android application entirely in C++, but doing so will only run on android 2.3+ which is less than 40% of the market. This means Android MoFlow is a Java application that calls into native using Java Native Interface(JNI).
The second big obsticle in getting MoFlow running on Android has been the use of the Native Development Kit. In order to do any native development for android use on the NDK is necessary, however the NDK has many limitations. For example, the older platforms(2.2 and down) have no full STL support, RTTI, and the C++ Implementation is incomplete. We’ve solved this for the time being by using a custom version of the NDK called Crystax which fixes alot of these issues. Lastly, we’ve not yet been able to find a decent way of debugging native. The only way we’ve found as of yet only works on 2.2+ and even then not every device. We only have one 2.2 device, and it wont work on that.
However, MoFlow Android is now working, and all future applications can be ported to android with ease! I’ve really enjoyed the project and learned an insane amount from it – more than any other project I’ve ever worked on I think. Of course this is an on-going project and will likely never end. MoFlow is constantly being improved upon and updated, and MoFlow Android is quite abit behind its iOS counterpart!
