novolis-governance / gameengine-reference-policy.md
Frank.GameEngine reference policy
Policies that keep the org coherent
dotnetgovernancenovolis
Governs how Frank.GameEngine relates to Novolis graphics and simulation repos.
Decision (locked)
- Primary graphics path: novolis-raylib →
Novolis.Raylib.*per raylib ecosystem spec. - Frank.GameEngine: active selective mining — no bulk migration; personal repo stays unarchived.
Rationale
| Factor | Frank.GameEngine | Novolis.Raylib |
|---|---|---|
| Graphics coupling | Multiple renderers (RayLib, MonoGame, Experimental) | Single focused Raylib stack |
| Packaging | 11+ engine packages, 0.3.x releases | Curated aggregate + facets |
| Strategic fit | General engine (ECS-adjacent) | Platform infra + progressive complexity |
| Overlap | `Frank.GameEngine.Rendering.RayLib` duplicates raylib binding work | Canonical for Novolis games |
Do not migrate
| Frank package / area | Reason |
|---|---|
| `Frank.GameEngine.Rendering.RayLib` | Superseded by `Novolis.Raylib` |
| `Frank.GameEngine.Rendering.MonoGame` | Out of scope unless Novolis adds MonoGame lane |
| `Frank.GameEngine.Rendering.Experimental` | Unstable |
| `Frank.GameEngine.Core` | Orchestrates rendering stack — rebuild under Novolis if needed |
| Samples / AppHost | Stay on personal repo |
Migrated (wave 7)
| Frank source | Novolis package | Repo |
|---|---|---|
| `Frank.GameEngine.Primitives/SubPrimitives/*` | `Novolis.Math.Arrays` | `novolis-math` |
| Geometry subset (Polygon, TriangleMesh, transforms, cameras, …) | `Novolis.Math.Geometry` | `novolis-math` |
| Dogfood-grown occupancy / view controllers | `Novolis.Simulation.*` | `novolis-simulation` (see [simulation-layer-policy.md](./simulation-layer-policy.html)) |
Brief: extraction-briefs/wave-7-gameengine-math.md
May mine later (with issue + review)
Renderer-agnostic modules may inform `novolis-physics`, `novolis-raylib`, or `novolis-math` only if:
- No dependency on
Frank.GameEngine.Rendering.* - Clear Novolis API redesign (not copy-paste)
- Tests ported or rewritten
- Documented in an extraction brief
| Module | Candidate Novolis home | Condition |
|---|---|---|
| `Frank.GameEngine.Physics` | `novolis-physics` or game2D facet | Scene/`GameObject` model — redesign required |
| `Frank.GameEngine.Assets` (`ObjHelper`) | `novolis-raylib` | Wave 7b after geometry ships |
| `Frank.GameEngine.Input` | `Novolis.Raylib` or hosting | Prefer Raylib input path first |
| `Frank.GameEngine.Audio` | Defer | Platform-specific |
| `GameObject`, `Scene`, `Scene2D` | Stay in Frank.GameEngine | Engine graph, not math |
Personal repo README (partial migration — do not archive)
> **Partially on Novolis:** `Novolis.Math.Arrays` and `Novolis.Math.Geometry` live in [novolis-math](https://github.com/Novolis-Platform/novolis-math).
> Graphics: use [Novolis.Raylib](https://github.com/Novolis-Platform/novolis-raylib). This repo remains the home for samples, engine core, and unmigrated code.Distinct from HexGame
HexGame is a personal architecture specification (authoritative core + adapters). It is not Frank.GameEngine and is not a Novolis package family. Do not migrate HexGame NuGet into the platform or invent a GameKit umbrella. Composition guidance: hexgame-authoritative-core.md. Frank.GameEngine remains selective mining into Math / Physics / Raylib / Simulation per this policy.