Table of Contents
Oxide Engine
A general-purpose 3D game engine in Rust, with an in-engine editor
(oxide-editor) developed alongside it. It scales from stylized low-poly to
realistic graphics and ships only what each game uses — every subsystem is a
feature-gated module, and an exported game compiles in only the modules it
registers.
The guiding idea is build tools, not games.
Source: Houmeres/Oxide ·
build and install instructions are in the
README.
Start here
| Page | What it is |
|---|---|
| Working-notes | The project's rules — goals, philosophy, the branch workflow, the tooling choices. Read before changing anything. |
| Roadmap | The authoritative staged plan, Stages 0–16 and the Phase-2 modules. |
| Handoff | Where the work actually is right now, and what to do next. |
| Getting-started | Toolchain, building, running examples, tests and benchmarks. |
| Architecture | Workspace layout, crate responsibilities, the staged model. |
| Conventions | Coordinate system, handedness, units, colour space. |
| Development | Branch workflow (dev/main), testing protocol, how to add a stage. |
By subsystem
| Page | Covers | Stage |
|---|---|---|
| Math | The oxide_engine::math module |
1 |
| Windowing | Window creation, the App trait, the event loop, raw input |
2 |
| Render-context | GPU acquisition, surface configuration, the frame loop | 2 |
| Scene | Scene graph, entities, transform hierarchy, serialization | 3 |
| Rendering | Meshes, materials, camera, the forward renderer | 4 |
| Modules | App, modules and scheduling; system phases, fixed timestep | 5 |
| Layers | Layer, Tags, GroupRegistry and the shared LayerMask filter |
5 |
| Reflection | Type registry; name-keyed component access for dual-editability | 5 |
| Assets | Asset server and handles: ref-counted loading, dedup, reload | 5 |
| Render-pipeline | Data-driven render passes, scalable fidelity, camera visibility | 5 |
| Projects | Project file, folder layout, create/open/save, recents | 6 |
| Settings | Typed settings sections, export/import, per-module and per-project | 6 |
| File-watching | Debounced change events; asset live-reload wiring | 6 |
| Editor-extensions | Module → editor API: menus, panels, tools, inspectors | 6 |
| Editor-shell | Docking shell, menu bar, status bar, Preferences, command stack | 6 |
| Input | InputState, named actions, remapping, RON persistence, axes |
7 |
| UI | Widget tree, layout, theming, text shaping, hit-test and routing | 8 |
| Prefabs | Data-driven named spawn templates | 8.5 |
| Play-mode | PlayState, scene snapshot/restore, the scene-swap runner |
8.7 |
| Physics | oxide-physics on rapier3d: bodies, colliders, filtered collision |
9 |
| Scripting | oxide-script on rhai: the Script component, live reload |
10 |
How this documentation works
Documentation is written alongside the code, not after it: a stage is not done until its page exists here. One topic per page; link between pages rather than duplicating. When an API changes, the page and its code snippets change in the same commit, so the documentation cannot drift from the engine.
These pages used to be docs/, CLAUDE.md, PLAN.md and HANDOFF.md inside
the repository. They moved here on 2026-08-08 and were removed from the
repository's history in the same pass — a repository holds the software and what
ships with it; what is written about the work lives here.