Skip to content

VisualGMQ/NickelEngine-backup

Repository files navigation

This project will completely rewrite!

此工程2025年将会完全重写!请勿PR

NickelEngine

An opensource, data-oriented ECS game engine.

How-To-Build

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

WASM support

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 cube
  • rhi_triangle: to show basic triangle
  • rhi_texture_cube: to show a textured cube
  • rhi_normal_map: to show normal map dmeo

you can view these demos online

3rd Libraries

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

Features

  • 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

Editor

  • 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

snapshots

editor

gltf

About

NickelEngine的老版本备份

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages