Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
Ember build docs cpp_20 [license]()

[Platforms]() [OpenGL]() [OpenGL ES]() [WebGL]() [Metal]()

Ember is a lightweight and modular 2D/3D game engine/framework written in C/C++, designed to be simple yet powerful. It aims to provide developers with a flexible **_cross-platform_** solution to build 2D/3D games and applications.

⚠️ Note: Currently there is no Editor and it is unlikely one will exist in the future.

</blockquote>

✨ Features

  • 📱 Cross-Platform: Windows, Linux, macOS, Android, iOS, Web (via WebGL)
  • 🎨 Graphics Backend:
    • OpenGL/ES (Windows, Linux, macOS, Android, Web)
    • Metal (macOS, iOS) **(coming soon)**
  • 🛠️ Lightweight Core: Minimal dependencies for fast builds and portability
  • 🎮 Input, Audio, and Texture Management: Simple and extensible management systems

📦 Dependencies

All dependencies are included as git submodules.


📱 Supported Platforms

Platform Backend Status
Windows OpenGL 3.3 ✅ Fully supported
Linux OpenGL 3.3 ✅ Fully supported
macOS OpenGL 3.3 ✅ Fully supported
Android OpenGL ES 3.0 ✅ Fully supported
iOS OpenGL ES 3.0 ✅ Fully supported
Web WebGL 3.0 ✅ Fully supported
iOS Metal 🚧 Coming soon
macOS Metal 🚧 Coming soon

⚠️ Note: Metal backend is planned for future versions.

</blockquote>

Engine Core Architecture

⚠️ Note: This diagram is a work in progress and may not reflect the current state of the engine.

Engine Architecture


🎮 Games Created with Ember

Showcase some projects and demos made with Ember Engine:

Game Screenshot Description
Flappy Bird Flappy Simplest Flappy Bird clone using Ember Engine
Node Physics Example Node Physics Simple node-based physics simulation demo
... ... ...

📚 Documentation


Build System

Ember uses CMake as its build system. Supported toolchains:

  • Visual Studio (Windows)
  • GCC / Clang (Linux / macOS)
  • Android NDK (Android)
  • Xcode (macOS / iOS)
  • Emscripten (WebGL)

Building

```bash git clone https://github.com/vsaint1/ember_engine.git cd ember_engine git submodule update –init –recursive cmake –list-presets emcmake cmake –preset=web-release emmake cmake –build build/webgl/release python3 -m http.server -b 0.0.0.0 8000