We are happy to announce that a game that we have made using Haxe, “Saban’s Mighty Morphin Power Rangers: Mega Battle”, is going to be published on PS4 and Xbox One by BANDAI NAMCO Entertainment Inc. in January 2017.
We are very grateful to all the Haxe community and the awesome projects like OpenFL, Lime, NME and hxcpp that helped making this game a reality. A special mention to Joshua Granick (@singmajesty) and Hugh Sanderson (@Hugh_Sanderson) for their impressive work and to Nicolas Cannasse and all the people behind the Haxe compiler.
In the process we learned a lot and contributed a little to make hxcpp compatible with our targets and proved that it can work with larger projects.
In order to get the game out, we made a proprietary Flash-like animation and particle effects tool in Qt and a WYSIWYG world editor in Haxe (we used haxeui, thanks @IanHarrigan1982 ) . We ended up with a very customized version of the OpenFL Legacy. We did native extensions for sound, controller, rendering, save data, users, fonts, and trophies (achievements) for both targets. This game console port is a different version from the current OpenFL branch and we focused on a subset of its features. We sticked to the legacy branch because of stability on C++ targets but we solved issues with blending and even memory leaks.
A key benefit of using Haxe was that most of our team was focusing on the game logic itself. Each one could develop locally and test the game on any PC. Artists and designers had a quick feedback. We could later have a build in the development kits to test console-specific features and multiplayer. It also allowed us continuing leveraging our expertise which started by developing Flash games more than ten years ago.
Issues with inconsistent frame rate due to heavy use of the garbage collector (GC) were overcome by avoiding some calls to CFFI and reducing the creation of new objects, particularity Arrays and StringMaps. hxScout (http://hxscout.com) was useful for finding these bottlenecks (thanks @jeff_ward) but we also had our own tool that recorded GC allocations and dumped the information on a spreadsheet file. Furthermore, loading binary files instead of large XML’s, that were output from our editor, reduced the stress in the GC and improved load time.
We also developed an on-screen profiler that let us see the time spent each task in real-time, and compare them among the targets. It showed us that we could have a much better performance when clipping objects in the viewing region.
Since we have finished that project, we have updated to the latest Haxe (3.4.0 RC1) and we see considerable performance improvements.
For future, we see upcoming cool features in Haxe, OpenFL and NME. We would like to better manage asynchronous tasks and have better use of multithreading, use native compressed textures to speed up loading times, and more custom shaders and fullscreen post-processing effects.
“Saban’s Mighty Morphin Power Rangers: Mega Battle” provides fun 4-player co-op action with a high dose of nostalgia.