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:

HeaderClassDescription
Nova3D/Context.hNova3D::ContextTop-level context that owns all subsystems
Nova3D/Object.hNova3D::ObjectBase class for all Nova-3D objects
Nova3D/Engine.hNova3D::EngineCore engine and main-loop management
Nova3D/Application.hNova3D::ApplicationBase class for user applications
Nova3D/Scene.hNova3D::SceneRoot of the scene graph
Nova3D/Node.hNova3D::NodeScene-graph node with transform
Nova3D/Component.hNova3D::ComponentBase class for node components
Nova3D/Camera.hNova3D::CameraCamera component
Nova3D/Renderer.hNova3D::RendererRendering subsystem
Nova3D/Input/Input.hNova3D::InputInput subsystem
Nova3D/Log.hNova3D::LogLogging subsystem
Nova3D/Nova3D.hMaster include (all of the above)

What Nova-3D is NOT

Not production-ready. Nova-3D is in early prototype stage. It is not suitable for shipping games or commercial projects. The API will change as the project matures.
  • 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.