novolis-governance / imports-todo/gameengine-2d-scene-rendering.md
Import: `Frank.GameEngine` 2D scene + `IRenderer2D`
Policies that keep the org coherent
dotnetgovernancenovolis
**Status (2026-05-25):** **Cancelled** for Raylib `Scene2D` import. Platform lane is [`Novolis.Rendering.TwoD`](../../../novolis-rendering/docs/design-two-d.md) + [`Novolis.Rendering.Backends.TwoD.Silk`](../../../novolis-rendering/src/Novolis.Rendering.Backends.TwoD.Silk). Optional later: `Board<T>` only. Master plan: [platform-import-plan.md](../platform-import-plan.html).
Source:
D:\frankrepos\Frank.GameEngine\src\Frank.GameEngine.Primitives—Scene2D,GameObject2D,Camera2D,Sprite2D,Transform2DD:\frankrepos\Frank.GameEngine\src\Frank.GameEngine.Rendering—IRenderer2DD:\frankrepos\Frank.GameEngine\src\Frank.GameEngine.Rendering.RayLib—RayLibRenderer2D, 3D overlay/underlay
What
Orthographic 2D scene graph and renderer seam for HUDs, board games, and mini-games — separate from novolis-rendering path tracing.
Why
novolis-renderingis 3D framebuffer / RT focused; noScene2D.novolis-raylibhas bindings andGameloop but no shared 2D scene model.- Frank samples:
Hello2D,Pong,Battleship(Board<T>in Primitives) validate the model. - 3D Raylib apps use Underlay2D/Overlay2D for HUD — useful pattern for dogfood.
How
Split import (recommended)
| Piece | Target |
|---|---|
| `Board<T>`, `BoardHistory<T>` (if needed) | `Novolis.Math.Arrays` or `Novolis.Simulation.World` — policy: grid games = Simulation if stateful |
| `Scene2D`, `GameObject2D`, `Camera2D` | `Novolis.Raylib.Scene2D` (new, references Math for `Vector3` XZ or `Rgba32`) |
| `IRenderer2D` + Raylib impl | `Novolis.Raylib.Presentation` or `.Game` |
Do not
- Merge into
novolis-mathas “2D types” — avoidVector2; useVector3Y=0 per stack policy. - Reference
novolis-renderingfrom Raylib 2D facet.
Port steps
- Spike: port
Scene2D+RayLibRenderer2Dminimal draw (solid quads). - One dogfood sample: Pong or Hello2D using PackageReference only.
- Document 3D+2D overlay pattern (Underlay2D) in
novolis-raylib/docs.
Priority
P1 after gameengine-assets-mesh-import.md and gameengine-input.md.
Acceptance
- Sample runs from NuGet packages only.
- No
Frank.GameEngine.Rendering.MonoGameunless separate decision (template already exists).