Joy Engine is a Rust workspace shared by native games, WebAssembly games, and authoring tools: system crates in crates/ behind the joy-engine facade. The public API is src/lib.rs. Generate the API reference with npm run docs:api or browse it with cargo doc --no-deps --open from the engine root.
- Runtime and browser builds: setup, frame phases, renderer, and platform behavior.
- Architecture and dependency layers.
- Coding standards and Rust conventions.
- Scenes, meshes and materials, lighting and shadows, scene effects, postprocessing, and shaders.
- Gameplay, simulation and physics, and environment.
- FORM, particles, terrain, and content formats.
- Input, audio, and storage.
- Live tuning, asset hot reload, the console and profiling, and the authoring kit.
- Joy Editor and engine examples.
- Patch delivery.
- Repository audit: repeatable maintenance checks and independent audit tests.
Games own rules, tuning, assets, cameras, and effect composition. The engine owns reusable mechanisms and never imports a game or tool. Resources have explicit Rust owners; renderers borrow presentation state and never advance simulation or consume gameplay randomness. Separate document state from running simulation and from editor-only preview settings.
Use npm run check, npm test, and an affected native/browser build when changing the engine. Rendering changes also need captures on the affected backends; passing headless or software-rendered tests does not establish hardware performance or browser compatibility.