Performance budgets
Soft guidance for public scenes. Hard caps live in Asset budgets.
Geometry
- Prefer well under 2M verts and 8M indices per OBJ.
- Split large worlds into multiple scenes + portals rather than one mega-OBJ.
- Avoid thousands of unique materials; atlases help.
Textures
- Stay under 4k×4k total pixels when possible (hard max 4096² and 8192 per side).
- Prefer compressed-on-disk JPEG for albedo; PNG for masks with alpha.
- Do not ship HDR material maps.
Lighting
- Prefer a small set of lights (directional + few points/spots); hard caps are 32 / 4 / 32.
- Shadows and occlusion are toggles in Settings; heavy shadow casters cost fill rate.
- Occlusion uses HZB compute when available—not HW occlusion queries.
- Do not assume shadow drawing uses the same MDI path as opaque geometry.
Scripts
- Keep
on_updatelight; prefer events/volumes over per-frame work. Engine.httpRequestis async—do not poll aggressively.- Pin scripts with
sha256so cache/CDN cannot silently grow payload.
Audio
- Keep PCM WAV short; stream-like beds still load fully (≤ 32 MiB).
Checkpoints
- Design progress around
on_save/ lights / visibility—not full media/world dumps. See Save & autosave patterns.