Cobalt Engine is a 2D game engine written in C++ using SDL3 and SDL3 GPU. It is a personal long-term hobby project for learning and experimentation rather than a commercial engine.
Note
The engine is currently in an early stage and not yet capable of making games.
- Windows
- Linux
Note
Only tested on Fedora Workstation 44 and CachyOS
The primary goal for version 0.1 is to make the engine capable of creating a simple game through its editor.
- Asset management
- Input
- Scripting
- Audio
- Physics
- Runtime GUI
- Building and Packaging
- Project launcher
- CMake ≥ 3.24
- C++ Compiler supporting C++23
- MSVC (Visual Studio 2022)
- Gcc ≥ 11
- Clang ≥ 18
- Ninja (optional)
Clone the repository
git clone --recursive https://github.com/Resongeo/Cobalt-EngineChange directory
cd Cobalt-EngineIf you’re building from an IDE, use its built-in CMake tools to configure and build the project. For manual builds, run the following commands:
Configure the project:
cmake --preset debugBuild the project:
cmake --build --preset engine-debugFor a minimum size release build:
cmake --preset min-size-release
cmake --build cmake-min-size-release- AngelScript - Extremely flexible cross-platform scripting library
- Catch 2 - Unit testing framework
- EASTL - Electronic Arts Standard Template Library
- enkiTS - Task Scheduler for creating parallel programs
- EnTT - Fast and reliable ECS
- Glm - Mathematics library for graphics applications
- Dear ImGui - Immediate-mode GUI library for the editor
- ImGuizmo - A collection of Dear ImGui widgets for 3D manipulation and more
- Magic Enum - Static reflection for enums
- optick - C++ Profiler For Games
- rpmalloc - Optimized cross-platform lock free memory allocator
- SDL3 - Simple DirectMedia Layer for low level multi-media
- SDL3 Image - Image decoding for many popular formats
- SDL3 Shadercross - Shader translation library
- simdjson - Fast JSON parser and serializer
- spdlog - Fast C++ logging library
- stb - Single-file public domain libraries
- Toml++ - TOML config parser and serializer
AI tools are used as a support aid for research, build system setup, and library recommendation. They are not used for code generation, agentic development workflows, or code completion. All code in this project is written by hand.
