A 2D tile-based game engine using axis-aligned bounding boxes.
Used by Abacus.
Handles state management, physics, entities and camera tracking out-of-the-box, with no external dependencies.
Supports 45 degree floor and ceiling slopes, and new tile types can easily be added.
Entities can easily be extended with additional properties and behaviour using a flexible component-based system.
Window creation, rendering and input handling are abstracted; the engine is not tied to any existing libraries.
A demo project using the Java Swing library is included, but the basic steps are detailed here.