feat: add deterministic goat routine

This commit is contained in:
Rijad Zuzo
2026-07-26 23:52:56 +02:00
parent f79c2bb630
commit e3aa3440a2
61 changed files with 1393 additions and 1057 deletions
+53
View File
@@ -0,0 +1,53 @@
# Jajce Dunja Habitat 08
Captured: 2026-07-26
## File
- [shelter and clover pasture](jajce_dunja_habitat_08.png)
The 1280×720 Metal frame shows Dunja's small timber shelter, fixed feed bowl,
straw bed, warm lantern, and adjacent fenced clover patch in the south-village
clearing. The bowl now belongs to the static habitat instead of moving with
the goat. Dunja also joins the existing `grass_interactors` group, so the
camera-local grass shader bends around her real loaded position.
## Routine proof
The two habitat markers expose stable `dunja_shelter` and `dunja_pasture` IDs.
When the saved routine tick becomes due, `AnimalCareSystem` alternates to the
other site in stable-ID order without drawing RNG. The selected site ID, exact
target position, current position, and next due tick remain in
`AnimalStateRecord`.
`tests/animal_routine_vertical_slice_test.gd` proves the complete loaded-world
contract:
- the authored endpoints are connected by the Jajce navigation map;
- Dunja follows the returned path and reports authoritative position;
- a mid-route schema-v11 save restores the same checksum, destination, and NPC
RNG streams;
- unloading and re-instantiating the goat scene rebinds that same moving state;
- arrival promotes the destination to the current site exactly; and
- hunger stops travel so feeding targets a stationary animal.
## Structure refinement
The reusable goat scene, visual script, habitat, and lookdev scene now live
together under `world/animals/goat/`. Their file names use `snake_case`, while
scene node names remain `PascalCase`. `docs/.gdignore` keeps documentation and
review captures out of Godot's runtime import database, so baseline PNGs no
longer need tracked `.import` sidecars.
## Capture command
```bash
HOME="$PWD/logs/quality/godot_profile" \
APPDATA="$PWD/logs/quality/godot_profile" \
LOCALAPPDATA="$PWD/logs/quality/godot_profile" \
/Applications/Godot.app/Contents/MacOS/Godot \
--path "$PWD" --script res://tools/capture_jajce_lookdev.gd -- \
--scene=res://world/animals/goat/dunja_lookdev.tscn \
--output=res://docs/baselines/jajce_dunja_habitat_08.png \
--hide-debug-labels
```