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-buildUnder 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=ONto 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

