saumwacht-godot/docs/luneraria/ANLEITUNG.md
Martin Stickelbroeck 8b17563814 G1: Drei-Lane-Layout mit Höhenfeld, Grotte, Aufmarschbereichen und MOBA-Kamera
Top windet sich über das Hochland, Mid quert die Kluft über die Mittelplattform,
Bottom führt durch das Tiefland über die Deltabrücke; Top und Bottom sind exakt
gleich lang, alles bleibt spiegelsymmetrisch. LuneTerrain liefert ein exakt
gespiegeltes Höhenfeld, auf dem Figuren stehen. Bossgrotte als Terrasse auf der
Achse zwischen Top und Mid, Aufmarschbereiche je Lane, perspektivische Kamera
mit Sprungtasten (F2–F4, B, G, H, O, R, Q/E). Bestandsassets wiederverwendet,
neue Formen als Blockout für G2/G4.

Geprüft: verify_g1 443/443, Regeln 91/91, M2 73/73, verify_m1 38/38,
verify_m2 14/14, Netz 43/43, Loopback 12/12, Balance 40 Partien (Seitentausch
20/20), Legacy 209/463. Vorher/Nachher-Aufnahmen und Messungen in G1-KARTE.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 00:09:48 +02:00

6.5 KiB
Raw Blame History

Installation, Start, Steuerung und Export

Start aus dem Quellprojekt (Fedora 44)

cd saumwacht-godot
godot --path .                 # Champions of Luneraria (Hauptszene scenes/luneraria.tscn)
godot --path . -- --legacy     # archivierter Saumwacht-Modus (scenes/main.tscn)

Voraussetzung ist Godot 4.7.2. Blender wird nur zum Neuerzeugen von Assets gebraucht, nicht zum Spielen.

Eine Partie

  1. Neue Partie → Bund (Glutpakt oder Wurzelbund) und deine Lane (Top, Mid, Bottom) wählen → Partie beginnen. Du spielst in Team Blau (Südwest) mit zwei Bot-Verbündeten gegen drei Bots in Team Rot. Top führt über das Hochland, Mid über die Mittelplattform, Bottom durch das Tiefland über die Deltabrücke; die Bossgrotte liegt zwischen Top und Mid.
  2. Planung: Truppen kaufen (Knöpfe oder 1–5), mit T/M/B einer Lane zuweisen (die blau umrandeten Aufmarschflächen vor den Basistoren zeigen, wo die Armee antritt), mit ↑ aufwerten, mit × zurückgeben. Käufe aus derselben Planung werden voll erstattet, ältere mit 75 %. Startaufstellung kauft Front, Nahkampf und Fernkampf. Bereit (Leertaste) übernimmt alle Befehle verbindlich.
  3. Kampf: Er läuft automatisch. Deine Truppen rücken mit der eigenen Monsterwelle über ihre Lane vor. Leertaste oder P pausiert, Tempo 1×/2×/4×.
  4. Abrechnung: Getötete Monster und Gebäude bringen Gold, dazu kommt das Rundeneinkommen. Deine Truppen kehren geheilt zurück. Türme und Kerne behalten ihren Schaden.
  5. Die Partie endet erst, wenn ein Ancient fällt. Es gibt kein Rundenlimit.

Steuerung

Eingabe Wirkung
1–5 Truppe kaufen (Planung)
Leertaste Bereit / im Kampf Pause
P Pause
WASD, Pfeiltasten, mittlere Maustaste ziehen Kamera verschieben
Mausrad Zoom (nah flacher, weit steiler)
F2 / F3 / F4 Kamera auf Top / Mid / Bottom
Tab / Lane-Knöpfe links Kamera auf die nächste Lane
B eigene Basis (Ancient)
G Bossgrotte
H eigener Held
O ganze Karte
R Kamera zurücksetzen (Drehung, Zoom, eigene Lane)
Q / E Kamera um 45° drehen
Minimap klicken/ziehen Kamera springt dorthin
F1 Optionen und Steuerung
M / F11 Ton / Vollbild

Prüfungen

godot --headless --path . res://tests/luneraria/test_lune_core.tscn        # Regeln M1 (91, inkl. Spiegeltest)
godot --headless --path . res://tests/luneraria/test_lune_m2.tscn          # Regeln M2 (73)
godot --headless --path . res://tests/luneraria/test_lune_net.tscn          # Netzwerkprotokoll (43)
python3 tools/luneraria/net_rounds.py                                       # Host + 2 Gäste, 5 Runden, Wiedereinstieg
godot --path . --resolution 1280x720  res://tools/luneraria/verify_m1.tscn # echte Bedienung, volle Partie (38)
godot --path . --resolution 1920x1080 res://tools/luneraria/verify_m2.tscn # Helden, Items, Grotte, Boss (15)
godot --headless --path . res://tools/luneraria/sim_match.tscn -- --seeds=1,2,3 --limit=80
godot --headless --path . res://tools/luneraria/balance_run.tscn -- --compositions=20 --limit=60 --out=res://docs/luneraria/logs/m3/balance.json
godot --headless --path . res://tools/luneraria/balance_run.tscn -- --matchups --limit=60 --out=res://docs/luneraria/logs/m3/matchups.json
python3 tools/luneraria/analyze_balance.py docs/luneraria/logs/m3/balance.json
godot --headless --path . res://tools/luneraria/stress_run.tscn            # Wellen bis 10^6, Langlauf
godot --path . res://tools/luneraria/people_lineup.tscn -- --out=res://docs/luneraria/screenshots
godot --path . --resolution 1920x1080 res://tools/luneraria/lune_benchmark.tscn -- --out=res://docs/luneraria/logs/g1/perf-nachher-1920x1080.json
godot --path . --resolution 1920x1080 res://tools/luneraria/lune_review.tscn # Aufnahmen
godot --path . --resolution 1920x1080 res://tools/luneraria/verify_g1.tscn   # G1: Layout, Gelände, Kamera (443)
godot --path . --resolution 1920x1080 res://tools/luneraria/g_views.tscn -- --out=res://docs/luneraria/screenshots/g1/nachher  # Vergleichsansichten
# Legacy (Saumwacht) unverändert:
godot --headless --path . res://tests/test_runner.tscn
godot --headless --path . -- --smoke-test
godot --headless --path . -- --faction-test
godot --headless --path . -- --expedition-test

verify_m1 und verify_m2 brauchen ein Fenster (echte Maus-/Tastaturereignisse), nicht --headless.

Assets neu erzeugen

ALSOFT_DRIVERS=null blender -b --python-exit-code 1 --python assets-source/luneraria/build_tower.py
ALSOFT_DRIVERS=null blender -b --python-exit-code 1 --python assets-source/luneraria/build_grotto.py
ALSOFT_DRIVERS=null blender -b --python-exit-code 1 --python assets-source/luneraria/build_map_props.py
ALSOFT_DRIVERS=null blender -b --python-exit-code 1 --python assets-source/luneraria/build_peoples.py
python3 tools/luneraria/build_asset_matrix.py
godot --headless --editor --import --path .

Export

python3 tools/luneraria/build_luneraria_demo.py --check-only
python3 tools/luneraria/build_luneraria_demo.py

Erzeugt ../dist/luneraria/ChampionsOfLuneraria-Linux-x64-<ver>.zip und …-Windows-x64-<ver>.zip (Produktname Champions of Luneraria). Alte Saumwacht-Releases unter ../dist/Saumwacht-*.zip bleiben unverändert. tools/build_demo.py baut weiterhin Saumwacht 0.15.0.

Netzwerk (experimentell, pausiert): Im Setup Hosten oder Beitreten mit Anzeigename, Adresse und Port (Standard 24571). Der Host ist autoritativ und rechnet den Kampf; Gäste sehen ihn über Momentaufnahmen. Freie Plätze sind Bots, bis jemand beitritt. Tempo, Pause und Revanche bestimmt der Host. „Bereit“ ist verbindlich. Ein Disconnect wird von einem Bot übernommen und ist kein Kernverlust; wer sich mit demselben Anzeigenamen wieder verbindet, bekommt seinen Platz zurück. Getestet sind Protokollchecks und ein lokaler Loopback über fünf Runden mit Wiedereinstieg – keine verifizierte Internetpartie auf sechs Rechnern, kein OpenGL- und kein Windows-11-Test. Kein Matchmaking, keine Hostmigration.

godot --headless --path . res://tools/luneraria/net_pair.tscn -- --role=host --rounds=4 &
godot --headless --path . res://tools/luneraria/net_pair.tscn -- --role=client --name=Gast --rounds=4
# mit Fenster und Gast-Aufnahmen: ohne --headless, Host mit --steps=0, Gast mit --shots=<Ordner>

Benutzereinstellungen

Der neue Projektname legt einen neuen Benutzerordner an (~/.local/share/godot/app_userdata/Champions of Luneraria). Beim ersten Start übernimmt Preferences einmalig die preferences.cfg aus „Saumwacht · Glutpakt“. Die alte Datei bleibt unverändert; fehlt sie, gelten die Standardwerte.