M1a: deterministischer Rust-Kern #3

Merged
steven merged 15 commits from m1a-rust-kern into main 2026-10-01 06:03:36 +00:00
2 changed files with 9 additions and 8 deletions
Showing only changes of commit c75b629dfd - Show all commits
+5 -3
View File
@@ -18,15 +18,15 @@ Faustregel: Was im Speicherstand steht oder alle Spieler betrifft, gehört in de
## Regeln für den Kern
Alle Spieler simulieren die Welt selbst und tauschen nur Befehle aus (Gleichschritt). Das funktioniert nur, wenn der Kern auf jedem Rechner exakt gleich rechnet. Deshalb gilt in `core/`:
Alle Spieler simulieren die Welt selbst und tauschen nur Befehle aus (Gleichschritt). Das funktioniert nur, wenn der Kern auf jedem Rechner exakt gleich rechnet. Deshalb gilt für den Quelltext des Kerns in `core/src/`. Die Tests in `core/tests/` dürfen zum Beispiel Dateien lesen.
- Nur ganze Zahlen, keine Gleitkommazahlen.
- Keine Uhr, keine Dateien, kein Netzwerk, keine Threads, keine Umgebungsvariablen.
- Zufall nur über `rng::Rng` mit fester Startzahl.
- 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`.
- Die Welt ändert sich nur durch einen `Command` in `World::step`. Einzige Ausnahme ist `World::set_all_offline`: Es darf nur direkt nach dem Laden eines Speicherstands aufgerufen werden, bevor jemand beigetreten ist.
- Alles, was zum Zustand der Welt gehört, steht im Snapshot. Wer ein Feld ergänzt, ergänzt es in `snapshot.rs` und erhöht `SNAPSHOT_VERSION`.
- Wo eine Rechnung überlaufen kann, steht eine ausdrückliche Wahl: `saturating_`, `wrapping_` oder `checked_`.
- Wo eine Rechnung im Spiel überlaufen kann, steht eine ausdrückliche Wahl: `saturating_`, `wrapping_` oder `checked_`. Taktzähler (`u64` bei 20 Takten pro Sekunde) laufen praktisch nie über und werden normal addiert. Werte aus geladenen Dateien müssen deshalb beim Laden geprüft werden.
- Keine fremden Crates im Kern.
Der Test `core/tests/forbidden_apis.rs` durchsucht den Quelltext des Kerns nach verbotenen Begriffen. Sie dürfen dort auch in Kommentaren nicht vorkommen.
@@ -41,6 +41,8 @@ cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
```
Schlägt `core/tests/golden.rs` fehl, haben sich Regeln oder ein Format geändert. Die Fehlermeldung nennt die Versionskonstante, die dann erhöht werden muss. Erst danach wird der festgeschriebene Wert bewusst angepasst.
## Sprache
- Code, Bezeichner und Kommentare im Code: Englisch.
+4 -5
View File
@@ -1,7 +1,7 @@
# Grovewright: Spielkonzept
**Stand:** 30. September 2026
**Status:** Entwurf, wartet auf Bestätigung
**Status:** Bestätigt am 30. September 2026
Dieses Dokument hält fest, worauf wir uns im Konzeptgespräch geeinigt haben. Es ist die Grundlage für den Bau. Was hier nicht steht, ist nicht beschlossen.
@@ -196,7 +196,7 @@ Geprüft am 30. September 2026:
| Rust | 1.98.1 |
| Rust-Anbindung für Godot | `godot` 0.5.5, unterstützt Godot 4.7, verlangt Rust ab 1.94 |
| Git | 2.54.0 |
| Git-Archiv | `https://git.race-cave.cloud/steven/Grovewright.git`, erreichbar und noch leer |
| Git-Archiv | `https://git.race-cave.cloud/steven/Grovewright.git` (Gitea) |
Es sind keine weiteren Installationen nötig.
@@ -227,7 +227,8 @@ Zwei Meilensteine sind Entscheidungspunkte:
| Plattform | Windows |
| Scheitern | Kein Game Over, kein Verlust von Fortschritt |
| Speichern | Automatisch in festen Abständen und zusätzlich von Hand |
| Versionsverwaltung | Lokales Git-Archiv mit einem Eintrag pro Arbeitsschritt. Hochgeladen wird nur mit deiner Freigabe. |
| Versionsverwaltung | Git-Archiv mit einem Eintrag pro Arbeitsschritt, hochgeladen nach jedem Schritt. Freigegeben sind auch Branches, Issues und Pull Requests. |
| Rückkehrer | Nach der ersten Ruine kommen Schmiedin und Hirte, nach der zweiten die Gärtnerin |
## 10. Backlog für die Steam-Option
@@ -250,10 +251,8 @@ Offen, zu klären im jeweiligen Meilenstein:
- **Wachstumsdauern.** Die Richtwerte aus 3.1 werden im Playtest eingestellt.
- **Verhältnis Werkstatt zu Hain.** Wie viel Hain ein Ofen braucht, entscheidet, ob die Bodenregel reizt oder nervt.
- **Andocken.** Wie Ranken, Ladetiere, Kisten und Ruinen genau aneinander anschließen, wird in den Meilensteinen 2 und 3 festgelegt.
- **Reihenfolge der Rückkehrer.** Vorschlag: Nach der ersten Ruine kommen Schmiedin und Hirte, nach der zweiten die Gärtnerin. Das ist noch nicht besprochen.
- **Grafikstil.** Du wählst im ersten Meilenstein aus drei Stilproben.
- **Namen.** Alle Namen für Arten, Tiere und Waren sind Arbeitstitel.
- **Hochladen.** Ob nach jedem Arbeitsschritt ins Git-Archiv hochgeladen wird, ist noch nicht freigegeben.
- **Titel.** Eine Websuche fand kein Spiel namens „Grovewright". Vor einem Steam-Release ist eine Markenrecherche nötig.
Risiken: