novolis-governance / extraction-briefs/wave-9-doom-dogfood.md
Wave 9 — Doom-lite dogfood (3D FPS demo)
Policies that keep the org coherent
dotnetgovernancenovolis
Target repos: novolis-math, novolis-raylib, novolis-physics (phase 2), novolis-dogfooding
Source inspiration: Frank.GameEngine FpsCameraState (redesigned, not copied)
Acceptance app: novolis-dogfooding/apps/DoomLite3D
Scope (in)
| Area | Novolis home | Notes |
|---|---|---|
| First-person yaw/pitch camera | Novolis.Math.Geometry.FirstPersonCamera | Renderer-agnostic; no Frank types |
| Grid wall collision (XZ) | Novolis.Math.Geometry.GridCollision2D | Uses Novolis.Math.Arrays.DenseGrid<byte> |
| 3D billboards + floor plane | Novolis.Raylib codegen (World.DrawBillboard*, DrawPlane) | Manifest + facade |
| Jam texture/billboard helpers | Novolis.Raylib.Game.RayGameContext | LoadTexture, DrawBillboard |
| Single-level demo game | novolis-dogfooding/apps/DoomLite3D | Dogfoods all of the above |
| Room mesh from wall grid (phase 2) | Novolis.Physics.Collision.Simple.RoomMeshBuilder | Optional BVH dogfood |
Out of scope
Frank.GameEngine.Rendering.*(per gameengine-reference-policy.md)- Classic 2.5D raycaster, WAD loader, multiplayer, audio bindings
GameObject,Scene,Scene2D,Sprite2Dengine graph
Dependencies
Novolis.Math.Geometry→Novolis.Math.Arrays(forDenseGrid<byte>in collision)- Dogfood app →
Novolis.Raylib,Novolis.Math.Arrays,Novolis.Math.Geometry - Phase 2:
Novolis.Physics+ math arrays
Assets
- Kenney Tiny Dungeon (CC0) — vendored subset under
apps/DoomLite3D/Assets/withCREDITS.md - No id Software Doom/Wolfenstein art
Done when
dotnet build/dotnet run --project apps/DoomLite3Dfromnovolis-dogfooding- New math APIs have TUnit tests
- Raylib billboards/plane in generated
World+RayGameContext CREDITS.mdlists every external file and source URL