477b9a41dd
Workspace, leeres Crate grovewright-core und ein Wächter-Test, der den Quelltext des Kerns auf Verstöße gegen die Gleichschritt-Regeln prüft. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
55 lines
2.4 KiB
Markdown
55 lines
2.4 KiB
Markdown
# Grovewright
|
||
|
||
Aufbauspiel für ein bis vier Spieler, in dem die Fabrik lebt. Gebaut wird zuerst eine Vertical Slice mit 2–3 Stunden Spielzeit.
|
||
|
||
Das verbindliche Konzept steht in [docs/KONZEPT.md](docs/KONZEPT.md). Lies es, bevor du Spielregeln, Architektur oder Umfang änderst. Was dort nicht steht, ist nicht beschlossen.
|
||
|
||
## Aufbau
|
||
|
||
| Ordner | Inhalt |
|
||
|---|---|
|
||
| `core/` | Rust-Kern: die gesamte gemeinsame Welt. Ohne Zugriff auf die Engine, ohne fremde Crates. |
|
||
| `docs/KONZEPT.md` | Spielkonzept und Entscheidungen |
|
||
| `docs/superpowers/plans/` | Umsetzungspläne |
|
||
|
||
Die Brücke zu Godot (`bridge/`), das Godot-Projekt (`game/`) und die Inhaltsdateien (`content/`) kommen mit späteren Plänen dazu.
|
||
|
||
Faustregel: Was im Speicherstand steht oder alle Spieler betrifft, gehört in den Kern.
|
||
|
||
## 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/`:
|
||
|
||
- 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`.
|
||
- 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_`.
|
||
- 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.
|
||
|
||
## Prüfen
|
||
|
||
Vor jedem Commit müssen alle drei Befehle fehlerfrei laufen:
|
||
|
||
```bash
|
||
cargo fmt --all -- --check
|
||
cargo clippy --workspace --all-targets -- -D warnings
|
||
cargo test --workspace
|
||
```
|
||
|
||
## Sprache
|
||
|
||
- Code, Bezeichner und Kommentare im Code: Englisch.
|
||
- Dokumente, Pläne, Commit-Nachrichten, Issues und Pull Requests: Deutsch.
|
||
- Texte im Spiel: Deutsch und Englisch über Übersetzungsdateien.
|
||
|
||
## Git
|
||
|
||
- Archiv: `https://git.race-cave.cloud/steven/Grovewright.git` (Gitea).
|
||
- Gearbeitet wird auf einem Branch pro Plan, nicht direkt auf `main`.
|
||
- Nach jedem abgeschlossenen Arbeitsschritt wird committet und hochgeladen. Das ist freigegeben.
|