godosa-engine

git clone https://git.godosa.eu/godosa-engine

master

raw · 1365 bytes

CLAUDE.md — godosa-engine

Shared engine library for Avalonia + Silk.NET games. Terse everywhere. Private notes (tasks, specs, catalog) are kept outside this repo; never add them here (see .gitignore).

Rules

  • Lib knows no game: no game types, game names, env var names or settings classes. The game passes values in or implements a small interface (IAudioMix, key-target Func, env var name via Configure).
  • Godosa.Core = pure .NET, tested. Godosa.Desktop / Godosa.Audio / Godosa.Gamepad = Avalonia+GL, OpenAL, SDL glue.
  • public for anything a game uses. Warnings are errors. Package versions only in Directory.Packages.props, equal to the games' (Avalonia 12.1.2, all Silk.NET 2.23.0).
  • New tests mutation-checked: scripts/mutate.sh = KILLED.
  • Breaking API is allowed: the games adapt when they take the update.

Build / test (≈ 10 s)

dotnet build Godosa.slnx (0 warnings) · dotnet test Godosa.slnx · python3 -m unittest discover -s scripts -p 'test_*.py'. From a game: its solution includes the lib projects, so its dotnet test runs the lib tests too.

Git

  • Branch master. Games use this repo as the submodule lib/godosa-engine.
  • Work in a git worktree on a branch (.worktrees/<topic>), not in the main tree; ff-merge to master when green.

Where

src/Godosa.* · scripts/ · docs/notes/.