M1b: Brücke und Hülle #6
Reference in New Issue
Block a user
Delete Branch "m1b-bruecke-und-huelle"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Mit diesem Branch wird der Rust-Kern aus M1a in Godot spielbar. Eine Figur läuft über die Testkarte und schlägt Stein. Die Welt wird gespeichert, geladen und aufgezeichnet. Umgesetzt nach dem Plan
docs/superpowers/plans/2026-10-01-m1b-bruecke-und-huelle.md.Was drin ist
Kern (
core/)core/clippy.tomlsperrt Pfade wieHashMapoderstd::fs::read. Ein Textwächter verbietet weitere Begriffe, jetzt auch gruppiertestd-Importe und globale Sperren. Ein Test hält den Kern frei von fremden Crates.World::load,check_restorable).Recording::stepkoppelt die Aufzeichnung an den Weltschritt.Brücke (
bridge/)GwSession(godot-rust 0.5.5) bietet Befehle, Takt und Lesezugriffe; Ereignisse kommen als Dictionaries. Eine Panik im Kern stoppt die Sitzung, danach wird nichts mehr gespeichert.Hülle (
game/)Drumherum
play.batbaut die Brücke und startet das Spiel.CLAUDE.mdmit allen Regeln für Kern, Brücke und Hülle.docs/playtests/m1b.md.Prüfung
play.batihn.Entscheidungen während der Umsetzung
Hud.message()undHud.stone_text()bleiben als kleine Lesezugriffe für Tests.[dev-dependencies]bleiben im Kern erlaubt, weil sie nie ins Spiel gelangen.play.batwiederholt ihn deshalb einmal, undCLAUDE.mderklärt es.play.batnach einem AbsturzVerschoben
Spieltest
play.batim Hauptordner doppelklicken, dann den Fragebogendocs/playtests/m1b.mdausfüllen.Closes #4
🤖 Generated with Claude Code
Mit `use std::{fs, process};` und anschließendem `fs::remove_file(…)` kam bisher beides durch: Der Textwächter suchte `std::fs` wörtlich, und Clippy kennt nur die aufgelisteten Funktionen. Globaler veränderlicher Zustand über `static` mit Mutex, RwLock, OnceLock oder LazyLock wurde auch nicht erkannt. Neu in FORBIDDEN: `std::{` (gruppierte Importe verbergen dem Text die Modulnamen) sowie Mutex, RwLock, OnceLock und LazyLock. Der Kern in core/src nutzt nichts davon. Der Kommentar in core/clippy.toml behauptet jetzt nur noch, was Clippy leistet, und CLAUDE.md nennt die Regel, dass jeder std-Pfad in einer eigenen use-Zeile steht. Der bestehende Selbsttest every_forbidden_term_is_detected deckt die neuen Einträge ab. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>Eine Welt kennt bis zu 16 Spieler, von denen höchstens vier online sind. Kein Test lud eine Welt mit mehr als vier bekannten Spielern; ein Fehler, der in check_restorable alle bekannten statt der Online-Spieler zählt, hätte gültige Spielstände zurückgewiesen und blieb unbemerkt. Mit dem Koop-Spiel in M1c sind mehr als vier bekannte Spieler der Normalfall. Der neue Test baut die Welt über Befehle auf: 16 Schlüssel treten in Vierergruppen bei, jede Gruppe außer der letzten geht wieder, bevor die nächste kommt. from_snapshot muss dieselbe Welt liefern, load alle Spieler offline. Mit dem Fehler (alle Spieler gezählt) schlägt der Test mit Invalid("online players") fehl. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>