Team3 7ed58ed69a
Some checks failed
Tests / headless (push) Has been cancelled
Tests / fenster-schnell (push) Has been cancelled
Tests / fenster-voll (push) Has been cancelled
Tests / balance (push) Has been cancelled
Balance in drei Messrunden: Wasser und Feuer zäher, Lava-Karten schwächer, Archetypen neu gemessen
Je 200 Partien pro Archetyp; Spanne 40–64 % statt 36–78 %.
Feuer+Erde bleibt mit 64 % die Spitze, Feuer mit 40 % das Schlusslicht.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QPgKvy5W9WRNFHjkm5QsHx
2026-09-16 20:07:59 +02:00
2026-09-16 13:22:07 +02:00
2026-09-16 13:22:07 +02:00
2026-09-16 13:22:07 +02:00

Dinger

Kartenspiel in 2D (Godot 4.7): du und 1 bis 5 KI-Magier, jeder gegen jeden, alle mit denselben Regeln.

Start

Projektordner in Godot öffnen und auf „Play“ drücken, oder im Terminal:

godot --path .

Der Spielstand liegt unter user://spielstand.json (Linux: ~/.local/share/godot/app_userdata/Dinger/spielstand.json).

Spielsysteme

  • 100 Karten in data/karten.json: 4 Elemente, 10 Zweier-Kombos (auch gleiche Elemente), 4 mythische Dreifach-Kombos, 4 Fallen
  • Resonanz: gleiche Elemente auf dem Feld verstärken sich. Feldkombos: verschiedene Elemente lösen beim Ausspielen Effekte aus
  • Fallen liegen verdeckt und lösen im gegnerischen Zug aus (die KI kennt fremde Fallen nicht)
  • Jeder gegen jeden mit ausgeloster Zugreihenfolge, 1 bis 5 KI-Gegner (KI mit Vorausschau), Kampagne mit 10 Magiern, Erfolge, Tagesaufgabe
  • Lokal zu mehreren: bis zu 4 Menschen am selben Rechner plus KI
  • Booster, fünf Deck-Slots, Werkstatt (Zerlegen und Herstellen aus Staub), Einstellungen (Ton, KI-Tempo, Animationen)
  • Spielstand versioniert mit Sicherungskopie (spielstand.json.bak)
  • Anleitung (geführte erste Partie), Mulligan im ersten Zug, Tastatur (Leertaste, 1 bis 9, Esc, Enter)
  • Kampagnen-Bosse mit Merkmalen, Kartenstatistik, zwölf Tagesaufgaben, Pity-Zähler für mythische Karten
  • Netzwerkspiel im lokalen Netz (Host führt das Spiel, Mitspieler sehen nur ihre Hand)
  • Deck-Namen, Auto-Ausfüllen, Hintergrundmusik und Oberfläche wahlweise auf Englisch
  • Geführte Anleitung mit Hervorhebungen, Rückgängig für Fehlklicks, Überspringen von Gegnerzügen
  • Zwei Kampagnenkapitel (Bosse mit ein bis drei Merkmalen), wählbares eigenes Merkmal nach Kapitel 1
  • Wöchentliche Herausforderung mit Regelvarianten, Bestenliste (Serie, schnellster Sieg), Statistik-Export als CSV
  • Zehn Fallenkarten, Netzwerk mit Wiederverbinden (Platz bleibt 60 s frei)
  • Deckstärke aus Seltenheit, Schlüsselwörtern und Effekten; Gegnerdecks werden auf die eigene Stärke gebaut
  • Schwierigkeit Leicht/Normal/Schwer: Zielstärke 0,9/1,0/1,2-fach, schwache oder starke Archetypen, einfache oder Vorausschau-KI, Münzen 0,75/1/1,5-fach
  • Gegnervorschau vor dem Kampf (Element und Stärke, neu würfelbar), Vorschlag zur Schwierigkeit nach drei Siegen oder Niederlagen
  • Deckstärke mit Kurvenabzug und Gewichtung durch die eigene Kartenstatistik; Booster schlagen passende Karten fürs Deck vor
  • Resonanz gedeckelt (+1, +2, +3, +3), günstige Wasser-Antworten (Ebbe, Tiefenstoß, Strudel), Wasser-Wesen angehoben, Gischtläufer für Sturm
  • Anleitung Teil 2 (Mulligan, Fallen, Feldkombo Dampf), Gamepad-Steuerung, große Schrift, Profil zurücksetzen
  • Gegnervorschau mit höchstens drei Neuwürfen, Schwierigkeitstipp nach Spielverlauf (deutliche Siege oder drei Niederlagen)
  • KI mit Zeitbudget je Entscheidung (150 ms), Warnung bei ungespeichertem Deck
  • Lava trifft nur noch das stärkste gegnerische Wesen; Archetypen-Werte kommen aus data/archetypen.json (Messlauf schreibt sie)
  • Kartentext passt sich der Schriftgröße an, Gamepad auch in Menüs (Fokusrahmen), Anleitung 2 erzwingt Maras Angriff in die Falle
  • KI-Vorausschau in zwei Stufen (erst alle Züge mit den besten Zielen, dann die acht besten vertieft): bei 5 Gegnern 0,1 s statt 2 s, und sie rechnet im Hintergrund-Thread, Musik ebenso
  • KI-Bewertung mit Bedrohung (gegnerische Angriffskraft ohne eigenen Wächter, tödliche besonders) und Führenden-Bremse; im Duell 62:38 gegen die alte Bewertung
  • Unterbrochene Einzelspieler-Kämpfe (auch Kampagne und Herausforderung) werden laufend gespeichert und lassen sich im Menü fortsetzen
  • Gamepad im Deckbau, in der Werkstatt und beim Booster: Karten, Deckzeilen und Kartenrücken sind fokussierbar, A wählt, B geht zurück
  • Englisch auch für Kartennamen und Kartentexte (name_en in data/karten.json, Textbausteine über tr())
  • Deck-Codes zum Teilen (DINGER1:id*anzahl,…) mit Zwischenablage im Deckbau
  • Kapitel 3 der Kampagne (drei Merkmale, volle Tische), acht neue Karten (je Elementpaar eine, zwei Fallen), Elementbooster für 120 Münzen
  • Netzwerk: fällt der Host aus, übernimmt der Mitspieler mit der kleinsten Kennung (er bekommt laufend den vollen Spielstand), die anderen verbinden neu; Zuschauer sehen die Partie ohne Hände
  • Balance in drei Messrunden (je 200 Partien pro Archetyp): Sand gibt +1/+1 statt Schild, Wasser und Feuer zäher, Lava-Karten leicht schwächer; Spanne jetzt 40–64 % statt 36–78 % (Feuer+Erde bleibt mit 64 % die Spitze)
  • Große Schrift: Kartennamen neben dem Kostenkreis, Kartentext läuft nicht mehr über, breitere Knöpfe in Booster, Deckbau und Werkstatt
  • Übersetzungsprüfung: jeder tr()-Text und jeder Anleitungsschritt braucht einen englischen Eintrag

Tests

tests/run_headless.sh führt Import, statische Prüfung (tests/lint.gd) und Headless-Prüfungen aus. .github/workflows/tests.yml: Headless und schneller Fenster-Test bei jedem Push, voller Fenster-Test und Archetypen-Messung nachts um 3 Uhr oder von Hand (Xvfb, lokal nicht geprüft). DINGER_FAST=1 lässt den Fenster-Test ohne Hotseat, Netzwerk und lange Kämpfe laufen (etwa ein Drittel der Zeit). Statistiken aus Spieltests lassen sich unter Erfolge als CSV exportieren.

godot --headless --path . --import              # einmalig: Ressourcen importieren
godot --headless --path . -s tests/test_runner.gd   # Regeln, KI, Booster, Spielstand
godot --headless --path . -s tests/simulate.gd      # Balance: KI spielt gegen KI
godot --headless --path . -s tests/matchup.gd       # Startvorteil und Mono gegen Paar
godot --headless --path . -s tests/strength_probe.gd  # Stärke der Elementkombinationen messen (Werte in DeckGen.ARCHETYPE_STRENGTH)
DINGER_SHOTS=/tmp/shots godot --path . tests/ui_test.tscn   # Oberfläche mit Fenster und Screenshots
DINGER_ONLY=test_host_wechsel,test_zuschauer godot --path . tests/ui_test.tscn   # nur einzelne Oberflächentests
N=200 godot --headless --path . -s tests/strength_probe.gd   # Messlauf mit 200 statt 60 Partien je Archetyp
godot --headless --path . -s tests/perf_probe.gd    # Laufzeiten: KI-Entscheidung, Deckerzeugung, Musik
godot --path . tests/frame_probe.tscn               # Bildzeiten im Kampf mit 5 Gegnern

Export

Export-Vorlagen für Godot 4.7 installieren (Editor: Editor → Export-Vorlagen verwalten), dann:

godot --headless --path . --export-release Linux build/dinger-linux.x86_64
godot --headless --path . --export-release Windows build/dinger-windows.exe

Aufbau

  • scripts/cards.gd – Elemente, Kombos, Kartenklassen; Pool aus data/karten.json
  • scripts/game.gd – Spielregeln, Züge, Kampf, Fallen, Feldkombos, Resonanz, Deckregeln, Hotseat
  • scripts/deckgen.gd – Deckstärke, Gegnerdecks entlang der Energiekurve, Archetypen
  • scripts/netstate.gd – Zustandsbilder fürs Netzwerk
  • scripts/ai.gd – KI mit Vorausschau (plus gierige Vergleichs-KI)
  • scripts/profile.gd – Spielstand (versioniert), Booster, Erfolge, Tagesaufgabe, Einstellungen
  • scripts/campaign.gd – Kampagnenstufen
  • scripts/ui/ – Oberfläche: Menü, Gegnerauswahl, Kampagne, Hotseat, Lobby, Booster, Deckbau, Werkstatt, Kampf (Bildschirm, Layout, Effekte, Anleitung, Mulligan, Gamepad), Erfolge, Einstellungen, Regeln, Ton
  • scenes/main.tscn – Startszene
  • scripts/net.gd – Netzwerkspiel (ENet) mit Wiederverbinden
  • scripts/challenge.gd – wöchentliche Herausforderungen
  • translations/ui.csv – englische Oberflächentexte
Description
No description provided
Readme 2.2 MiB
Languages
GDScript 99.6%
Shell 0.3%
Batchfile 0.1%