Check Engine

Platform Support |
|
OpenGL | Core 4.3 or ES 3.0 |
Runtime | OpenJDK 11 or similar |
Downloads | Runnable Test Game |

Pathtraced Lighting
Lighting is performed by generating a vector of distance measurements organized in a radial pattern. A path can be drawn along each vector to determine which areas of the screen are in light, and which are cast in shadow.
The result is a hard-edged shadow effect, several of which can be blended to account for multiply-lit scenes.

Behavior System
Non-player characters can be assigned behaviors which update each frame and re-calculate the entity's goal within the game.
Complex behaviors, such as player-following and random wandering algorithms, are implemented in the provided test game.

Dependency Injection
The engine provides automatic injection of singleton types called "engine objects." Types are scanned from the classpath based on annotations.
Engine objects can rely on other singletons to access and affect game state.

AABB Collision, Friction, and Platforming
Limited physics calculations are supported by the engine, including resolving collisions between dynamic and static entities.
Entities which are not affected by gravity (such as platforms) are able to support and carry players, and also give them momentum if they jump off.

Included Imgui bindings
In order to guarantee compatibility with Raspberry Pi and the engine's own rendering, the Java bindings for Imgui were adapted to support OpenGL ES and ARM platforms.
The game engine includes special native libraries and Java bindings which have been specifically verified to work on the Raspberry Pi 4 with OpenGL ES 3.0.
Animation and Resource Loading
The engine supports loading several common image formats, and also supports loading animations as GIFs. GIF images are automatically converted into a knit spritesheet; animation frames are automatically swapped in and out by the engine according to the GIF's animation speed.
Programmers are able to load GIFs just like any other texture due to abstraction layers in the process of creating and binding textures.


