This project will completely rewrite!
此工程2025年将会完全重写!请勿PR
An opensource, data-oriented ECS game engine.
use cmake:
git submodule update --init --recursive
cmake -S . -B cmake-build
cmake --build cmake-build
Under Windows, if cmake can't find SDL, you should set SDL2_ROOT
to your SDL path:
cmake -S . -B cmake-build -DSDL2_ROOT=<your-sdl2-path>
in some system, you may want to copy needed dll to your output dir, use:
cmake -S . -B cmake-build -DNICKEL_COPYDLL=ON
to enable auto copy dlls.
Each program should run at project root path
some unittest & demo can build under WASM and show in Web. use
emcmake cmake -S . -B cmake-build
cmake --build cmake-build <your-target>
to build one.
currently support targets are:
rhi_cube
: to show a colorful cuberhi_triangle
: to show basic trianglerhi_texture_cube
: to show a textured cuberhi_normal_map
: to show normal map dmeo
you can view these demos online
library | description |
---|---|
SDL2 | use to support create window, render context and basic input |
gecs | basic ECS framework |
mirrow | TMP framework, use to do dynamic/static reflection and serialization |
stb_image | use to loading images |
Vulkan | Vulkan1.3 |
dear-imgui | use to support GUI in editor |
miniaudio | use to play audio cross platform |
nanobench | use to do benchmark |
nameof | use to get enum name convniently |
freetype2 | use to render ttf font |
lunasvg | use to render svg |
rapidxml | use to parse XML |
tomlplusplus | use to support toml file parse |
esfw | use to watch file changing in editor |
easy_profiler | use to profile |
luau | use to as script |
LuaBridge3 | use to bind cpp to lua/luau |
editor icon: vscode-material-icon-theme
- 2D renderer based on Vulkan
- 3D renderer(currently only in rhi example)
- gltf2.0 load&display(not full support)
- defered rendering
- skybox
- Data Oriented based on ECS
- Animation applyed on arbitary properties
- Text render with UTF8 encoding
- Prefab save/load
- UI(WIP)
- Game physics(WIP)
- RHI covered OpenGL and Vulkan
- vulkan layer
- OpenGLES 3.0 layer(for WASM & Android)
- Game sound playing(WIP)
- 3D rendering
- glTF2.0 support(not full support yet)
- Scene change/load/save
- scene save/load
- multiple scene
- scene change
- script
- luau
- C++ binding(WIP)
- script component
- luau
- features:
- Entity list window
- show entities
- drag entity to reorder/set hierarchy
- Inspector window to show components of selected entity
- Game scene display
- Tilesheet Editor
- Assets window
- show assets
- load/release asset
- asset property window
- texture asset property window
- font asset property window
- audio asset property window
- script asset property window
- Animation editor
- Project Save/Load
- asset save/load
- scene(entities) save/load
- Entity list window