A modern C++20 game engine built from scratch.
Rendering • ECS • Physics • Audio • Scripting • Editor
Nova is a data-oriented, modular game engine written in modern C++20. It is designed as a complete engine stack — from custom memory allocators and a lock-free job system at the bottom, to a batched 2D/3D OpenGL renderer, an archetype-free sparse-set ECS, an impulse-based physics engine, Lua scripting, and a full Dear ImGui editor (NovaForge) at the top.
- Application framework — layer stack, event system, precise frame timing
- Logging — fast, colored, multi-sink logger with compile-time filtering
- Custom memory allocators — linear/arena, pool, stack, and free-list allocators with tracking
- Job system — work-stealing thread pool with fibers-style continuations
- Instrumentation profiler — chrome://tracing compatible JSON capture
- OpenGL 4.5 renderer (DSA-style), abstracted behind a RHI layer
- Batched 2D renderer — quads, circles, lines, sprite atlases, TTF text; single draw call batching
- 3D forward renderer — Blinn-Phong materials, directional + point lights, procedural primitives (cube/sphere/plane/capsule), dependency-free OBJ loading
- Sprite flipbook animation over texture atlases
- CPU particle system — ring-buffer pool, job-parallel updates
- Framebuffers, render passes, shader hot-reload
- Sparse-set ECS — cache-friendly component pools, views, groups
- Scene graph — hierarchical transforms, prefab-style duplication
- Serialization — human-readable scene files
- Custom 2D physics — rigid bodies, AABB/circle/OBB colliders, impulse resolution, friction, restitution, spatial-hash broadphase
- Queries — closest-hit raycasts (circle + rotated box) and AABB overlap
- miniaudio backend — 2D/3D positional sound, streaming music, sound groups
- Lua 5.4 — hot-reloadable behavior scripts bound to the ECS: transform, input, rigidbody velocity/impulses, raycasts
- NovaForge editor — dockable viewport, scene hierarchy, inspector, content browser, gizmos, play-in-editor
- Sandbox — demo application
Requirements: CMake ≥ 3.24, a C++20 compiler (MSVC 2022 / Clang 15 / GCC 12).
git clone https://github.com/7XLabs/Nova.git
cd Nova
cmake -S . -B build
cmake --build build --config ReleaseAll third-party dependencies (GLFW, GLM, glad, Dear ImGui, stb, miniaudio, Lua) are
fetched automatically via CMake FetchContent — no manual setup.
┌─────────────────────────────────────────────┐
│ NovaForge (Editor) │
├─────────────────────────────────────────────┤
│ Scene · ECS · Physics · Audio · Scripts │
├─────────────────────────────────────────────┤
│ Renderer2D / Renderer3D · RHI │
├─────────────────────────────────────────────┤
│ Core · Events · Jobs · Memory · Profiling │
├─────────────────────────────────────────────┤
│ Platform (GLFW · OpenGL · OS) │
└─────────────────────────────────────────────┘
MIT — see LICENSE.