My primary project at the Informatics Centre was to develop a hardware-accelerated 2D game engine for the Android platform. After developing several prototypes, I began to notice significant performance problems when rendering a large number of sprites at once. I attempted to solve these problems with a dynamic batching system, which did create a substantial improvement, but not to the point which I had hoped for. However, I would later learn that the most likely source of the performance problems were the result of releasing large chunks of memory. This would give the garbage collector a chance to run, thus creating random performance spikes. The engine would still prove sufficient for small games with a smaller number of moving sprites.
One of the early true test cases for my engine was to port Andrew Muncey's small iOS game 'Parkgate Pigeons' to the Android platform. Due to the fact that it was written in Objective-C, and built heavily around UI elements and timers, none of the code or algorithms could be ported directly. Instead, I had to adapt the game as close as possible to my own engine's loop-based simulation system, which did not result in an ideal translation. While my port only took a couple of days to make, it raises the problem concerning the portability of larger, more complex iOS/Android projects.
My solution to both problems presented is a plan to adapt a similar engine I am currently writing in C++ into a portable multiplatform solution for general 2D game development. My intention is to allow the development of games for both the Android and iOS platforms to occur simultaneously from the same codebase.