About Nova-3D
An experimental C++ 3D engine with a clean public API designed for long-term portability.
What is Nova-3D?
Nova-3D is an experimental C++ 3D engine in active development. It is designed from the start as a long-term project — not a quick prototype, and not a production-ready engine. The goal is to build a clean, readable, and portable engine layer with an API that feels familiar to developers who have worked with engines like Urho3D.
The project is in its early prototype stage. A working 3D demo already runs, demonstrating the core engine loop, scene graph, camera, and basic rendering. From here, the architecture will be stabilized and more features will be added incrementally.
Design Philosophy
Clean Public API
The Nova-3D public API is modeled after Urho3D-style engine APIs: a context, subsystems, scenes, nodes, and components. Internal implementation layers never leak into user-facing code.
Layered Architecture
Nova-3D is built on top of internal lower-level layers that handle platform portability and graphics. These layers are hidden from the public API and are treated as implementation details.
Long-Term Project
Nova-3D is not being rushed. Features are added when examples and demos need them. The architecture is solidified first, then extended incrementally.
Portability First
Designed to target desktop (Linux, Windows, macOS), Android, and potentially the web. Platform-specific code stays in the internal backend layers.
Public API Overview
All public symbols live in the Nova3D namespace. The public API is intentionally small and will grow alongside the project:
| Header | Class | Description |
|---|---|---|
Nova3D/Context.h | Nova3D::Context | Top-level context that owns all subsystems |
Nova3D/Object.h | Nova3D::Object | Base class for all Nova-3D objects |
Nova3D/Engine.h | Nova3D::Engine | Core engine and main-loop management |
Nova3D/Application.h | Nova3D::Application | Base class for user applications |
Nova3D/Scene.h | Nova3D::Scene | Root of the scene graph |
Nova3D/Node.h | Nova3D::Node | Scene-graph node with transform |
Nova3D/Component.h | Nova3D::Component | Base class for node components |
Nova3D/Camera.h | Nova3D::Camera | Camera component |
Nova3D/Renderer.h | Nova3D::Renderer | Rendering subsystem |
Nova3D/Input/Input.h | Nova3D::Input | Input subsystem |
Nova3D/Log.h | Nova3D::Log | Logging subsystem |
Nova3D/Nova3D.h | — | Master include (all of the above) |
What Nova-3D is NOT
- Not a clone of Urho3D — the API is inspired by it, not copied
- Not a reimplementation of XNA — that is handled by an internal layer
- Not a complete engine — it is growing incrementally toward one
- Not a framework for beginners — it targets C++ developers familiar with 3D engine concepts
Where is it headed?
The long-term vision for Nova-3D is a lightweight, portable C++ 3D engine that can power small games and prototypes, with a clean API and well-documented architecture. Future targets include a 3D prototype built on top of Nova-3D to validate the API in a real scenario.
See the Roadmap for a detailed breakdown of planned phases and milestones.