AGE is a multi-threaded game engine for Android with OpenGL ES2 shader-based rendering.
In-depth GL knowledge isn't necessary to start; use the OBJ loader to import models from Blender and elsewhere, attach textures, and start rendering!
Threads run different activities, e.g. initialization, framerate, timer, game cycle. Apartment model with message passing.
The drawing cycle is inverted from typical game loops. Framerate has a dedicated timer, and SurfaceView is in on-demand rendering mode.
Game Objects (GOs) opt-in to services by implementing the "marker" interface for each one it wants.
GOs enter the system via Install Pipeline, an asynchronous "standard" implementation that keys on the marker interfaces and performs the "protocol" for that marker. There are also Event and Uninstall pipelines.
Reference by name is encouraged. A trip through the pipeline includes a Bind Name List; allows GO to connect to interfaces in other GOs on the other End.
Features
- Render using OpenGL ES 2 with shaders
- Minimal knowledge of GL internals required to get started
- Basic shaders supplied for uniform color, per-vertex color, textures, or supply your own
- Load OBJ models exported from Blender et al
- Multi-task single-thread apartment model
- Message-passing for inter-task communication
- Opt-in service model for game components
- Pipeline architecture for "fire-and-forget" setup, teardown, and event delivery
- On-demand rendering for framerate control (very helpful in emulators)
- Full-featured timer service for recurring, continuous, one-shot
- Indirect property model; components need not be tied to Java classes
- Indirect reference model; components access each other just-in-time