saumwacht-godot/docs/luneraria/QA-MATRIX.md
Martin Stickelbroeck faf0fbdef0 M3: Balance, Kartenprops, sieben Volksrepräsentanten und Abnahme
Bots planen Items/Champions vor der Armee und helfen deterministisch,
damit Spiegelmatches fair bleiben. Boss und Profile neu abgestimmt;
Balance-, Stress- und Volks-Werkzeuge sowie Kartenprops ergänzt.
2026-09-28 00:41:05 +02:00

6.1 KiB
Raw Blame History

QA-Matrix

Testumgebung aller Läufe: Fedora Linux 44 (KDE Plasma, XWayland), AMD Ryzen 5 5600X, NVIDIA GeForce RTX 5060 Ti (Vulkan 1.4.351), Godot 4.7.2 (Fedora-Build), Forward+. Windows 11 ist nicht geprüft: Es gibt keine Windows-Hardware in dieser Umgebung.

Legende: ✅ automatisiert geprüft · 👁 in echten Aufnahmen visuell geprüft · ⏳ offen (Meilenstein) · — nicht zutreffend.

Abnahmepunkte aus dem Masterauftrag (§15)

# Anforderung Stand Beleg
1 Zwei Teams, sechs Eigentümerrollen, drei Lanes, 16 Türme, 2 Kerne ✅ M1 test_lune_core · structure
2 Turmreihenfolge, Basisschutz, Kernsieg; gleichzeitige Kernzerstörung ohne Reihenfolgevorteil ✅ M1 test_lune_core · gates, victory_and_draw, mirror_fairness
3 Fortsetzung nach Welle 20, hohe Indizes ohne Final-Wave-Logik, Fehler oder Objektwachstum ✅ M1 (Wellen bis 10⁶, Runde 21; Menge ≤ 7 je Lane) test_lune_core · endless_waves
4 Gold exakt einmal, Besitzprüfung, keine Reset-/Despawn-/Beschwörungsfarmen ✅ M1 (Monster, Gebäude, Truppentod ohne Kopfgeld); Beschwörungen gibt es noch nicht test_lune_core · rewards, commands
5 Heilung und Persistenz nach der Runde; neue Partie ohne übernommene Werte ✅ M1 Truppen · ✅ M2 Helden (XP, Stufe, Talente, Items bleiben; Rückkehr geheilt, auch nach dem Tod; neue Partie ohne Held) test_lune_core · persistence; test_lune_m2 · xp_and_persistence
6 Truppen ohne Heldeninventar; Talente, drei Itemplätze, Stapeln ✅ M2 test_lune_m2 · heroes_and_items
7 Verstärkungskauf n → Einsatz n+1, richtige Lane und richtiges Team ✅ M2 (öffentliche Ankündigung, keine Verschiebung nach Übernahme, Verbrauch nach n+1, Kopfgeld, Belagerungsziel) test_lune_m2 · champions
8 Grottenabzug schwächt die Lane für die ganze Kampfphase ✅ M2 test_lune_m2 · grotto_withdrawal_and_contest
9 Beide Expeditionen, Scheitern, Erfolg, genau eine Entsendung, Kopfgeld, Verfügbarkeit ab Runde 10 ✅ M2 (Sieg in Runde 6 → Einsatz 7 → gesperrt 7–9 → frei ab 10; wiederholtes Signal ohne Wirkung) test_lune_m2 · boss_*; Szenarien boss_scenarios
10 Laneverlust, Phasenende, Pause, Neustart, Rückkehr ins Menü ✅ M1/M2 verify_m1, test_lune_core · victory (timeout), test_lune_m2 · lane_loss
11 Bots ohne Sonderressourcen und ohne Sicht auf private Befehle ✅ Bots nutzen dieselben Befehle ohne Sondergold; sie lesen nur den eigenen Entwurf, veröffentlichte Gebäudestände, den öffentlichen Bosszustand und Ankündigungen (Code-Durchsicht, LuneBot) test_lune_core · commands; test_lune_m2 · bots_m2
12 Netzwerk: doppelte, veraltete und fremde Befehle; synchroner Phasenwechsel, Disconnect ⏳ M4 —

M3 · Qualität und Balance

Nachweis Stand Beleg
Mehrere Seeds und gemischte Teamzusammensetzungen, Seitentausch ✅ 20 Zusammensetzungen × 2 Seiten, 20/20 konsistent balance_run · logs/m3/balance-step4.json
Gegenstrategien / Profil-Duelle ✅ 15 Paare, 15/15 Seitenfair; lineare Kette (Befund) balance_run --matchups · matchups-step4.json
Hohe Wellenindizes und Langlauf ✅ 10²–10⁶ ohne Fehler; 200 Runden = Testlimit, keine Objektflut stress_run · logs/m3/stress.json
Bot kauft Items und Angriffschampions ✅ Regression test_lune_m2 bots_m2 (war 0 Buchungen) test_lune_m2 73/73
Spiegelsymmetrie mit erweiterten Bots ✅ glutpakt/wurzelbund je 12 Runden bit-symmetrisch test_lune_core mirror_fairness
Karte mit echten Props (Bäume, Felsen, Brücken, Bordsteine, Banner) 👁 Übersicht, Kampf Top/Mid, Planung screenshots/overview-*.png, combat-*.png
Sieben Volksrepräsentanten (Modelle + Clips) 👁 Ruhe, Kontakt, Laufen, Fähigkeit, Tod, Nahaufnahme screenshots/peoples-*.png, people_lineup
Assetmatrix mit p_* und map_props ✅ 74 Zeilen python3 tools/luneraria/build_asset_matrix.py

Echte Anwendung (M1)

tools/luneraria/verify_m1.tscn, 38 Prüfungen mit echten Maus- und Tastaturereignissen:

  • Titel und Projektname, Lane- und Bundwahl per Klick, Start.
  • Eingabeschutz während der Überblendung: Mausrad, 1 und Leertaste erreichen das Spiel nicht.
  • Kauf, Startaufstellung, Rückgängig, Laneeinteilung und die Leertaste übernehmen die Planung; im Kampf wird nichts gekauft.
  • Truppen kämpfen auf ihrer Lane; Pause hält die Kampfuhr an; Tempo schaltet um.
  • Abrechnung und Rückkehr der Truppen.
  • HUD innerhalb des Fensters bei 1280 × 720 und 1920 × 1080.
  • Menü, neue Partie ohne Altlasten, eine vollständige Partie bis zum Ancient-Fall mit Live-Aufnahme der Belagerung, Ergebnisbildschirm, Rematch.
  • Vier Menü-/Partiewechsel ohne wachsende Objektzahl.

Nur die Kampfuhr wird dabei beschleunigt (mehr feste Schritte pro Bild), die Regeln bleiben unverändert.

Echte Anwendung (M2)

tools/luneraria/verify_m2.tscn, 15 Prüfungen. Teil 1 bedient das HUD mit echten Klicks: Reiter, Held anwerben, Held-Lane, Truppe kaufen und in die Grotte schicken, Verstärkungsseite, Rückgängig. Teil 2 spielt eine gewöhnliche Partie ohne Sondergold bis zum Ancient-Fall; der menschliche Platz wird vom Bot-Planer über dieselben Befehle gespielt. Aufgenommen: Held mit Items, Held im Feld, Grottenkampf, Ankündigung, Bossentsendung.

Weitere M2-Belege: test_lune_m2 73/73, darunter der Nachweis, dass die alte Arbeiter- und Funkenökonomie nicht mitläuft (Arbeitsannahme E). M2-App nach M3-Botfix erneut 15/15 (bzw. 14/14, wenn die Partie vor einer Bossentsendung endet).

Legacy-Regressionen (Saumwacht)

Unverändert über die Umleitung der alten QA-Schalter: 209 · 33 · 463 · 206 · 1.665 · Menü 20A 68. Logs: logs/m0-baseline/, logs/m1/legacy-*.log.

Plattformen

Plattform Stand
Fedora 44, Forward+ ✅ Quellprojekt (Tests, Aufnahmen, Leistung, Balance, Stress)
Fedora 44, Kompatibilitätsmodus (OpenGL) ⏳ M4 (für Saumwacht 0.15.0 geprüft, für Luneraria noch nicht)
Windows 11 ⏳ nicht geprüft (keine Hardware). Ein exportiertes Paket oder ein Wine-Lauf wäre kein nativer Test.