blob: e8ee1b287c7e17ab16f77a0a6d97d4af2abe1bad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# 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/`.
|