Document pacing test workflow in CLAUDE.md

Add instructions for running the pacing report test and interpreting
results after loot table changes. Also fix stale [if] syntax note.
This commit is contained in:
Samuel Bouchet 2026-03-11 20:57:30 +01:00
parent 71e10ec084
commit 4703ff1e05

View file

@ -42,10 +42,25 @@ Adventures use Loreline `.lor` script format. Custom functions available in scri
- Cosmetics: `hasCosmetic(id)`, `hasEquipped(slot, style)`
- Progression: `hasCompletedAdventure(theme)`, `markSecretBranch(id)`, `hasSecretBranch(id)`, `countSecretBranches()`, `allSecretBranches()`
Hints for disabled choices use `|||` separator: `Option text|||Hint text #label [if condition]`
Hints for disabled choices use `|||` separator: `Option text|||Hint text #label if condition`
full documentation: https://loreline.app/fr/docs/
## Pacing Test
To check game progression balance after modifying loot tables (`content/data/boxes.json`):
```
dotnet test --filter "FullRun_PacingReport" --logger "console;verbosity=detailed"
```
This runs a full simulation (3 seeds: 42, 123, 777) and prints a report showing when each milestone is first reached (UI features, adventures, cosmetics, resources, crafting, lore). Use this to verify that rebalancing changes produce the desired early-game pacing.
Key things to look for:
- **1st Meta UI unlock** should happen before box ~50 for a good early experience
- **1st Adventure** should appear before box ~120
- **All content reachable** within ~1000 boxes (game completion)
- No long gaps between milestones (>100 boxes without progress feels stale)
Weights are in `content/data/boxes.json`. The main generator is `box_of_boxes` (auto-opens, produces the next box). Adjust weights there and in tier boxes (`box_not_great`, `box_ok_tier`, etc.) to tune pacing.
## Conventions
- C# 12 with file-scoped namespaces, primary constructors where appropriate
- Immutable records for value types, sealed classes for services