NickelEngine——图形学试验场地
NickelEngine是一个我用来学习图形学方方面面的引擎。大部分的底层都是纯手工造轮子。
工程开源地址:VisualGMQ/NickelEngine: a game engine based on ECS (github.com)
在线Demo
引擎在线Demo(某些Demo因技术原因暂时无法放入网页(菜,就多练)):
引擎内容
引擎底层采用ECS架构。ECS库为自研的Gecs,主要借鉴开源项目EnTT的代码设计和内部算法,并且在API上加以改良,向Bevy-ECS的API设计靠齐。
引擎内部拥有序列化和反序列化/预制体创建操作,核心是自研C++17反射库mirrow,主要借鉴meta,refl-cpp,ponder,RTTR反射库的实现和API设计。在原有的记录类信息反射的功能上添加了自动序列化/反序列化功能(目前仅可序列化为TOML文件,但预留了接口,可非侵入地增加其他文件的序列化功能)
引擎渲染部分后端如下:
平台/图形学API | Vulkan | OpenGL 4.3 | OpenGLES 3.0 |
---|---|---|---|
PC(Windows,MacOS,Linux) | ✔️ | ✔️ | |
Android | 🔨 | ❌ | 🔨 |
Web | ❌ | ❌ | ✔️ |
暂不考虑苹果系列产品。
渲染部分拥有一个抽象层,封装了Vulkan和OpenGL。API风格借鉴WebGPU。
引擎编辑器
为了能够实时查看引擎的功能,制作了一个编辑器。
演示视频可见 Bilibili【NickelEngine简要介绍】
目前只有2D功能,可以创建/删除Entity和Component。可以显示2D图像。并且有一个动画编辑器可以制作简单动画。