Skip to content

Repository files navigation

Nova Engine

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.

Features

Core

  • 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

Rendering

  • 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

ECS & Scene

  • Sparse-set ECS — cache-friendly component pools, views, groups
  • Scene graph — hierarchical transforms, prefab-style duplication
  • Serialization — human-readable scene files

Physics

  • 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

Audio

  • miniaudio backend — 2D/3D positional sound, streaming music, sound groups

Scripting

  • Lua 5.4 — hot-reloadable behavior scripts bound to the ECS: transform, input, rigidbody velocity/impulses, raycasts

Tooling

  • NovaForge editor — dockable viewport, scene hierarchy, inspector, content browser, gizmos, play-in-editor
  • Sandbox — demo application

Building

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 Release

All third-party dependencies (GLFW, GLM, glad, Dear ImGui, stb, miniaudio, Lua) are fetched automatically via CMake FetchContent — no manual setup.

Architecture

┌─────────────────────────────────────────────┐
│              NovaForge (Editor)             │
├─────────────────────────────────────────────┤
│   Scene · ECS · Physics · Audio · Scripts   │
├─────────────────────────────────────────────┤
│     Renderer2D / Renderer3D  ·  RHI         │
├─────────────────────────────────────────────┤
│  Core · Events · Jobs · Memory · Profiling  │
├─────────────────────────────────────────────┤
│        Platform (GLFW · OpenGL · OS)        │
└─────────────────────────────────────────────┘

License

MIT — see LICENSE.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages