- 🎸 Digital Sound Effects (engine/dsp) DSP see also Ohmtal Axe
- 🎵 OPL3 Controller (engine/opl3) with wopl instrument import/export and it's own format. see also Ohmtal Tracker
- 〰️ SFXGenerator(Stereo) a modern implementation of Tomas Pettersson SXFR (engine/sfx)
- 🗂️ ImFlux a collection of Tools and Widgets for ImGui (engine/source/gui/ImFlux)
- 🕹 A lightweight, high-performance, modern C++ game engine. Built around SDL3, it provides a streamlined pipeline for 2D graphics, particle simulations, and cross-platform deployment.
- Cross Platform Software
- fast and easy ImGui implementation using ImFlux and GuiGlue
- Desktop: tested on Linux. FreeBSD and Windows
- WebAssembly: using Emscripten
- Android: Experimental
- SDL3 and OpenGL
- Rendering: inline shaders for Primitives and Sprites using batch rendering.
- Tilemap: methods for loading and saving tilemaps from filesystem.
- Header-Only Loaders: Native PNG, JPG, and TGA support via
stb_imageand TrueType font support viastb_truetype. - Advanced Particle System: High-performance "Swap-and-Pop" particle management with dedicated presets for Fire, Explosions, and Sparks and some more.
- Hybrid Build System: Unified CMake configuration for Native Desktop (OpenGL/GLAD) and WebAssembly (WebGL 2.0).
- TrueType fonts: High-performance text rendering via stb_truetype with dynamic atlas baking, proportional kerning, and batch-optimized UV mapping.
- Audio: High-performance SDL3 streaming with OGG/WAV support, 2D spatial attenuation, and distance-based CPU culling.
- Lights
- FishTankDemo: A stress test for high-entity counts. Press
Spaceto start; reach the fish target and pressSpaceagain to finish. - TestBed: A sandbox environment for testing new engine features and particle presets.
- OpenGL
- Glad
- SDL3 ( require version 3.4 or higher! )
- ImGui
- nlohmann json
- stb
- miniaudio
- ymfm
- Box2D
Requires a C++20 compiler :
# 1. Configure the project
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
# 2. Build everything
cmake --build build --config ReleaseFor Windows-build see also: README_BUILD_WINDOWS.md.
Optimized for Arch Linux and systems with the Emscripten SDK.
# 1. Setup environment (Standard Arch Linux path)
source /etc/profile.d/emscripten.sh
# 2. Configure with Emscripten Toolchain
cmake -DCMAKE_TOOLCHAIN_FILE=/usr/lib/emscripten/cmake/Modules/Platform/Emscripten.cmake -S . -B build_web
# 3. Build
cmake --build build_web
# 4. Run a demo locally
cd FishTankDemo
emrun index.html .For lazy people like me I added a Makefile :
| Command | Description |
|---|---|
| make debug | Build native Desktop (Debug) |
| make release | Build native Desktop (Release) |
| make webdebug | Build WebGL (Debug) |
| make webrelease | Build WebGL (Release) |
| make webdist | Build WebGL Release and deploy to $(WEBDIST_DIR) |
| make clean | Remove build artifacts |
| make distclean | Remove all build artifacts, logs, binaries, and $(WEBDIST_DIR) |
The build system uses a unified macro to make adding new games extremely fast.
-
Create your source: Create
MyGame/src/main.cppand place assets inMyGame/assets/. -
Define path: In
CMakeLists.txt, add under the "Directories" section:set(MYGAME_DIR "${CMAKE_CURRENT_SOURCE_DIR}/MyGame")
-
Copy-Paste Project Block: Append this to the bottom of the file:
option(BUILD_MYGAME "Build MyGame demo" ON) if(BUILD_MYGAME) set(GAME_SOURCES "${MYGAME_DIR}/src/main.cpp") configure_demo_target(MyGame ${MYGAME_DIR} "${MYGAME_DIR}/assets@assets" "${GAME_SOURCES}") endif()