Zach Goethel

Check Engine

Lighting and Game Mode Demo(above: top-down and platformer game world stages)
Platform Support
  • Windows on x86/x86_64
  • Linux on armhf/aarch64
    (Raspberry Pi 4 w/ VideoCore 6)
OpenGLCore 4.3 or ES 3.0
RuntimeOpenJDK 11 or similar
DownloadsRunnable Test Game

Pathtraced 2D Lighting
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.

Non-player Character With Behavior
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 Code Example
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 Physics, Friction, and Momentum
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.

Imgui Integration Example
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.

My Fork

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.

Code to Load a GIF in the Engine
Character Yelling Right Animation
Character Yelling Left Animation

Created by Zach Goethel. Have a wonderful day!