From 5b76f828e036be2941dbdb3a11c61dd5ed490f73 Mon Sep 17 00:00:00 2001 From: Steven Wroblewski Date: Thu, 1 Oct 2026 13:25:26 +0200 Subject: [PATCH] =?UTF-8?q?CLAUDE.md:=20neue=20Zustandsfelder=20an=20allen?= =?UTF-8?q?=20Kodier-Stellen=20erg=C3=A4nzen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die Regel sagte, wer ein Feld ergänze, tue das in snapshot.rs und prüfe es in check_restorable. Das gilt nur für Felder von World. Spielerfelder kodiert und dekodiert core/src/player.rs, das Inventar inventory.rs, die Karte map.rs; deren Prüfungen stehen im jeweiligen Dekodierer, nicht in check_restorable. M2 ergänzt Welt-, Feld- und Spielerzustand und folgt diesem Satz. Die Regel nennt jetzt alle vier Stellen und sagt, dass ein neues Feld beim Dekodieren oder in check_restorable geprüft wird. Die Namen wurden gegen den Code geprüft: encode_state und from_snapshot, Player::encode und Player::decode, Inventory::encode und Inventory::decode sowie Map::encode und Map::decode. Co-Authored-By: Claude Sonnet 5.5 --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index d3e8f7c..7a7b913 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,7 +27,7 @@ Alle Spieler simulieren die Welt selbst und tauschen nur Befehle aus (Gleichschr - Keine Sammlung mit wechselnder Reihenfolge. Statt einer Hash-Tabelle nimmst du `Vec`, `BTreeMap` oder `BTreeSet`. - Die Welt ändert sich nur durch einen `Command` in `World::step`. Einzige Ausnahme ist das Laden eines Speicherstands mit `World::load`, das alle Spieler abmeldet. - Wer eine Sitzung aufzeichnet, ruft `Recording::step` statt `World::step` auf. So enthält die Aufzeichnung genau die ausgeführten Befehle. -- Alles, was zum Zustand der Welt gehört, steht im Snapshot. Wer ein Feld ergänzt, ergänzt es in `snapshot.rs`, prüft es in `check_restorable` und erhöht `SNAPSHOT_VERSION`. +- Alles, was zum Zustand der Welt gehört, steht im Snapshot. Wer ein Feld ergänzt, ergänzt es im Kodierer und im Dekodierer seiner Struktur (`snapshot.rs` für die Welt, `player.rs` für Spieler, `inventory.rs` für das Inventar, `map.rs` für die Karte), prüft es beim Dekodieren oder in `check_restorable` und erhöht `SNAPSHOT_VERSION`. - Wo eine Rechnung im Spiel überlaufen kann, steht eine ausdrückliche Wahl: `saturating_`, `wrapping_` oder `checked_`. Taktzähler laufen praktisch nie über und werden normal addiert: Die Welt zählt in `u64`, eine Aufzeichnung in `u32`, was bei 20 Takten pro Sekunde für über sechs Jahre reicht. Takte aus geladenen Dateien begrenzt `MAX_RESTORABLE_TICK`. - Keine fremden Crates im Kern.