2
Home
Jaroslav Beneš edited this page 2026-08-08 18:11:58 +02:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 016 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.