A learning-oriented 2D game engine, following the game engine series by TheCherno.
- OpenGL 4.6 renderer with batch rendering
- ECS scene system (EnTT)
- ImGui-based editor with scene hierarchy, properties panel, content browser
- Scene serialization (YAML)
- C# scripting via embedded Mono runtime
- C++20 compiler (Clang, GCC, or MSVC)
- CMake 3.24+
- Git
All other dependencies (including the Mono runtime for C# scripting) are vendored in deps/ and require no separate installation.
git clone --recursive https://github.com/qiekn/ck-engine.git
cd ck-engineMSYS2 UCRT64 (recommended for Windows)
Install MSYS2, then open UCRT64 terminal:
# Install toolchain (first time only)
pacman -S --needed \
mingw-w64-ucrt-x86_64-cmake \
mingw-w64-ucrt-x86_64-clang \
mingw-w64-ucrt-x86_64-make \
mingw-w64-ucrt-x86_64-gdb \
git
# Build and run
./run.shOr configure manually:
cmake -B build -G "MinGW Makefiles" \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++
cmake --build build
./build/editor.exeVisual Studio (MSVC)
- Open the project folder in Visual Studio (File > Open > CMake...)
- Visual Studio will auto-detect
CMakeLists.txtand configure the project - Select
editor.exeas the startup target and run
Or from Developer Command Prompt:
cmake -B build
cmake --build build --config Debug
build\Debug\editor.exeLinux
not tested
# Install Mono (Ubuntu/Debian)
sudo apt install libmono-2.0-dev
cmake -B build
cmake --build build
./build/editormacOS
Apple deprecated OpenGL and caps support at OpenGL 4.1. The engine currently targets OpenGL 4.6. To run on macOS, you will need to downgrade the GLFW window hints to OpenGL 4.1 and replace any 4.2+ API calls in
src/engine/platform/opengl/with their legacy equivalents.
Mono is also not bundled for macOS — install it separately:
brew install mono
cmake -B build
cmake --build build
./build/editor| Target | Type | Description |
|---|---|---|
ck |
Static lib | Engine core |
editor |
Executable | Scene editor (main) |
sandbox |
Executable | Test/demo app |
| mark | description |
|---|---|
| ep | episode |
| feat | new feature |
| add | add third party library |
| update | make some progress |
| fix | fix a bug |
| docs | documents (readme or some comments) |
| refactor | refactor code |
| chores | some little changes |