Novolis Docs
novolis-governance / gameengine-reference-policy.md

Frank.GameEngine reference policy

dotnetgovernancenovolis

Governs how Frank.GameEngine relates to Novolis graphics and simulation repos.

Decision (locked)

  • Primary graphics path: novolis-raylibNovolis.Raylib.* per raylib ecosystem spec.
  • Frank.GameEngine: active selective mining — no bulk migration; personal repo stays unarchived.

Rationale

FactorFrank.GameEngineNovolis.Raylib
Graphics couplingMultiple renderers (RayLib, MonoGame, Experimental)Single focused Raylib stack
Packaging11+ engine packages, 0.3.x releasesCurated aggregate + facets
Strategic fitGeneral engine (ECS-adjacent)Platform infra + progressive complexity
Overlap`Frank.GameEngine.Rendering.RayLib` duplicates raylib binding workCanonical for Novolis games

Do not migrate

Frank package / areaReason
`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 / AppHostStay on personal repo

Migrated (wave 7)

Frank sourceNovolis packageRepo
`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:

  1. No dependency on Frank.GameEngine.Rendering.*
  2. Clear Novolis API redesign (not copy-paste)
  3. Tests ported or rewritten
  4. Documented in an extraction brief
ModuleCandidate Novolis homeCondition
`Frank.GameEngine.Physics``novolis-physics` or game2D facetScene/`GameObject` model — redesign required
`Frank.GameEngine.Assets` (`ObjHelper`)`novolis-raylib`Wave 7b after geometry ships
`Frank.GameEngine.Input``Novolis.Raylib` or hostingPrefer Raylib input path first
`Frank.GameEngine.Audio`DeferPlatform-specific
`GameObject`, `Scene`, `Scene2D`Stay in Frank.GameEngineEngine 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.

Related