Raven is built as a stack of five libraries, each depending only on the layers below it.
| Layer | Role |
|---|---|
| RavenCore | Platform abstraction, logging, memory, core utilities |
| Crux | Math (vectors, matrices, quaternions), ECS, reflection |
| Illumine | Vulkan-based renderer |
| Framework | Application lifecycle, scene graph |
| Pulsar | Jolt-based physics interface |
Ignite sits alongside Framework and exposes a stable C++ scripting API (Raven::Script::*) for use in game logic. It deliberately hides engine internals – you interact with entities by ID and call well-defined API functions rather than touching engine objects directly.
All public scripting functions live under Raven::Script. Sub-namespaces map to engine subsystems:
| Namespace | Subsystem |
|---|---|
| Raven::Script::Log | Logging |
| Raven::Script::Scene | Entity/scene queries |
| Raven::Script::Physics | Physics bodies |
| Raven::Script::Renderer | Rendering hints |
| Raven::Script::Random | RNG utilities |
Functions suffixed _Internal are implementation details and not part of the stable API surface. You can call them, but their signatures may change between versions without notice.