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
hereAnd you can find Allora sources
here