My 2D engine, Slate2D, has been a long-term on and off personal project since July 2016. It's primarily just been a fun thing to work on, without any real end goal for shipping a game. It also has served to be one of the biggest sources of learning C++ and understanding the consequences of architectural decisions. Despite its tatus, it has successfully been used to take a game to completion! Clive Sturridge's Battlement Defense Legacy Collection and Hot Air use this engine, and the experience of using it was surprisingly pretty good!
The engine doesn't really prescribe any big opinions on structure or API; there's not even any sort of ECS included. The biggest API inspirations were probably PICO-8 and TIC-80. Fantasy console APIs are a great sweet spot of what most people need for making 2D games, and I just wanted something that has a similar API, without their creative restrictions.
It is made up of several pre-existing libraries:
- SDL - windowing, OpenGL context, input, DLL support
- Wren - embedded scripting language
- PhysicsFS - virtual filesystem, zip loading
- dear imgui - debugging tools
- SoLoud - audio engine
- TMX C Loader - loading Tiled maps
- rlgl - OpenGL wrapper
Slate2D currently runs on Windows, OS X, Linux, and web via Emscripten. Maybe it'll be useful to someone else, someday!