Allora is a game engine for Android, built with OpenGL ES 1.1, C++, and Kotlin/Java, which I developed as a personal project.

It was designed to be fast, run on all devices, and integrate seamlessly into the Android ecosystem. The goal was to enhance what Android offers, not replace or restrict its features (e.g., UI, libraries, etc.).

Few words about Allora:
  • It elegantly bridges native C++ with Kotlin/Java. Native C++ engine or game classes can be mapped or extended into Kotlin/Java via inheritance or extensions (of data and functions) without modifying the C++ headers. This makes it possible to develop game features quickly in Kotlin/Java using Android Studio’s Apply Code Changes while the game is running. Once a feature matures, it can be moved to native C++ for a performance boost.
  • At the core of the C++ ↔ Kotlin/Java bridge is RTTI, which allows dynamically adding data to native instances.
  • For the entity system, I opted for a component-based approach. To optimize it, concepts such as Component Clusters were introduced, allowing all active components to be processed together. This served as an intermediate step toward data-oriented programming.
  • For spatial partitioning, KD-trees were used.
  • The engine includes simple collision testing capabilities and supports batched ray tracing for optimization.
  • It features a multithreaded rendering architecture and supports rendering passes that can be added dynamically as needed.

I used it to develop a simple Android driving game before moving on to other projects.

You can find more about Allora here
And you can find Allora sources here