A lightweight C++ game engine and editor for rapid prototyping.
Built with OpenGL, CMake, and an intentionally small, portable codebase.
The editor/runtime follows a lightweight ECS-style flow with JSON scene I/O.
- Load and display 3D models
- Basic scene management with load/save support
- Simple editor UI for scene properties
- Real-time rendering with OpenGL
Currently supports macOS and Debian-based Linux distributions.
- C++17 compiler (
g++orclang++) - CMake 3.1 or newer
- OpenGL development libraries
Most dependencies are vendored directly in the repository:
- GLEW for OpenGL extension loading
- GLFW for windowing, input, and context creation
- GLM for math utilities
- SOIL2 for texture and image loading
- Dear ImGui for the editor UI
- tinyobjloader for OBJ and MTL model loading
Scene serialization currently uses an internal parser/writer:
src/SimpleJson.hfor lightweight JSON parsing and writing without an external JSON dependency
Project-specific content lives under projects/<project-name>/:
projects/
default/
project.json
scenes/
default.scene.json
assets/
models/
sponza/
Shared fallback assets remain in res/ for common shaders, images, and legacy scenes.
Install system packages:
sudo apt install cmake build-essential libglew-dev libglfw3-dev libglm-dev libgl1-mesa-dev libxinerama-dev libxcursor-dev libxi-devConfigure and build:
mkdir -p build
cd build
cmake ..
makeRun from the project root:
./NelsonRun with an explicit startup scene JSON:
./Nelson projects/default/scenes/default.scene.json
