team3 5f9442497a
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
update
2026-10-03 01:17:27 +02:00
2026-09-22 13:23:02 +02:00
2026-10-02 19:57:02 +02:00
2026-09-16 13:22:07 +02:00
2026-10-03 01:17:27 +02:00
2026-10-03 01:17:27 +02:00
2026-10-03 01:17:27 +02:00
2026-09-16 13:22:07 +02:00
2026-10-03 01:17:27 +02:00
2026-10-03 01:17:27 +02:00
2026-09-17 12:14:27 +02:00
2026-10-03 01:17:27 +02:00
2026-09-17 20:13:42 +02:00
2026-09-17 20:13:42 +02:00

Dinger

Kartenspiel in 2D (Godot 4.7): ein Duell gegen einen KI-Magier, beide mit denselben Regeln.

Starten

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

./start.sh          # Linux/macOS (start.bat unter Windows); Godot 4.7 muss als `godot` im Pfad liegen
godot --path .      # wenn das Projekt schon einmal importiert wurde

Frisch geklont fehlt das Verzeichnis .godot mit Godots Import-Cache. Die Startskripte holen den Import beim ersten Start nach; alternativ das Projekt einmal im Godot-Editor öffnen oder godot --headless --path . --import ausführen.

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

Spielsysteme

  • 77 Karten in data/karten.json, alle Wesen, jede mit genau einem der vier Elemente; Kombos sind die Namen verschmolzener Wesen
  • Karten haben nur Element, Angriff und Leben; die Kosten sind zwei Drittel Angriff plus ein Drittel Leben, abgerundet, mindestens 1
  • Mana: 5 im ersten Zug, jede Runde eins mehr ohne Grenze; was übrig bleibt, verfällt. Mana geht in Ziehen, Legen, Verbessern und Verschmelzen
  • Kein Deckbau: beide ziehen vom gemeinsamen Stapel (jede Karte dreimal). Zu Beginn fünf Karten, Ziehen kostet 1 Mana und bringt eine; es kommt nur, was das Mana dieses Zugs hergibt, der Rest wandert unter den Stapel
  • Eigenschaften: Spott (2, muss zuerst angegriffen werden), Flink (2, greift sofort an), Regeneration (3, heilt am Zugende ganz) und Doppelschlag (4) lassen sich für Mana auf jede Hand- oder Brettkarte kaufen (Rechtsklick oder Y). Gelegte Wesen greifen erst im nächsten Zug an, außer sie sind flink; verletzte Wesen heilen nicht von selbst
  • Verdeckt legen (mittlere Maustaste auf die Handkarte oder im Kartenmenü): gleich teuer, das Wesen greift nicht an und zählt nicht für die Elementboni; aufdecken ist kostenlos, frühestens im nächsten Zug, danach greift es sofort an; ein Angriff deckt es auf
  • Jede Karte gehört jedem von Anfang an. Gesammelt wird die Seltenheitsstufe, und die ist reine Optik wie bei Yu-Gi-Oh: Common matt, Rare silberner Name und Rahmen mit Glanzstreifen, Super Rare Holo-Bild, Ultra Rare goldener Name und Rahmen mit Holo-Bild, Ultimate Rare Relief, Holo auf Bild und Rahmen, Funkeln und schillernde Farben; auch auf dem Feld für alle sichtbar, Werte bleiben gleich. Verschmolzene Wesen tragen die höhere Stufe ihrer Eltern
  • Booster (100 Münzen): fünf Karten mit gewürfelter Stufe (50/25/15/8/2 %, mindestens eine Rare), höhere werten die Karte auf, der Rest wird zu Staub (50/100/200/500/1000). Aufwerten kostet 100/200/500/1000 Staub, eine Stufe abgeben bringt den Zerlegewert zurück
  • Elementboni: zwei eigene offene Wesen eines Elements geben allen eigenen Wesen dieses Elements seinen Effekt (Erde Spott, Luft Flink, Wasser Regeneration, Feuer Doppelschlag); drei offene Wesen eines Elements auf dem Tisch geben dem Element +1/+1 (fällt der Bonus weg, sinkt nur das Höchstleben). Verschmolzene Wesen zählen für alle ihre Elemente und bekommen alle Boni
  • Elementvorteil beim Kampf (Wasser > Feuer > Luft > Erde > Wasser): der Angreifer macht 1 Schaden mehr im Vorteil und 1 weniger im Nachteil, der Konter bleibt gleich, gegen Helden nichts; ein Wesen mit mehreren Elementen kämpft mit dem, das gegen den Gegner am besten steht
  • Angriffe treffen erst Wesen (Wesen mit Spott zuerst); das Leben ist nur ohne Wesen angreifbar. Nichts schlägt durch
  • Verschmelzen: eine Karte auf eine andere ziehen und eine Sekunde halten, auf dem Brett wie auf der Hand (Gamepad: Y, „Verschmelzen mit …“). Das neue Wesen hat je Wert den besseren plus ein Drittel des schwächeren (aufgerundet), Kosten passend dazu, Elemente und Eigenschaften beider; kostet 1 Mana, verdoppelt je weiterer Verschmelzung (1, 2, 4, 8); drei oder mehr Elemente ergeben eine Chimäre
  • Duell mit ausgeloster Zugreihenfolge, wer nicht beginnt, bekommt einmalig 1 Mana; die Hand fasst 5 Karten, das Feld 5 Wesen
  • Schwierigkeit Leicht/Normal/Schwer: Gegner mit 25/30/35 Leben, einfache oder Vorausschau-KI, Münzen 0,75/1/1,5-fach
  • KI mit Vorausschau in zwei Stufen und Zeitbudget (150 ms), sie rechnet im Hintergrund-Thread
  • Kampagne: drei Kapitel mit je zehn Magiern, Bosse mit ein bis drei Merkmalen, eigenes Merkmal nach Kapitel 1
  • Netzwerkspiel im lokalen Netz: Host führt das Spiel, Mitspieler sehen nur ihre Hand, Zuschauer keine. Fällt der Host aus, übernimmt der Mitspieler mit der kleinsten Kennung, die anderen verbinden neu (Platz bleibt 60 s frei)
  • Spielstand versioniert mit Sicherungskopie (spielstand.json.bak)
  • Oberfläche und Kartentexte wahlweise auf Englisch (translations/ui.csv, name_en in data/karten.json)
  • Gamepad in Menü, Sammlung, Booster und Kampf; große Schrift und Animationen in den Einstellungen

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 nachts um 3 Uhr oder von Hand (Xvfb, lokal nicht geprüft). DINGER_FAST=1 lässt den Fenster-Test ohne die langen Kämpfe laufen (etwa ein Drittel der Zeit).

godot --headless --path . --import              # einmalig nach dem Klonen: 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
DINGER_SHOTS=/tmp/shots godot --path . tests/ui_test.tscn   # Oberfläche mit Fenster und Screenshots
DINGER_ONLY=test_sammlung godot --path . tests/ui_test.tscn   # nur einzelne Oberflächentests
DINGER_NETZ=1 godot --path . tests/ui_test.tscn             # zusätzlich die langsamen Netzwerktests (Bot-Prozesse)
godot --headless --path . -s tests/perf_probe.gd    # Laufzeiten: KI-Entscheidung, Stapel, Musik
godot --path . tests/frame_probe.tscn               # Bildzeiten im Kampf

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, Mana, Ziehen, verdeckte Wesen, Elementboni, Kampf, Verbessern, Verschmelzen
  • scripts/deckgen.gd – gemeinsamer Stapel und Gegner
  • scripts/netstate.gd – Zustandsbilder fürs Netzwerk
  • scripts/ai.gd – KI mit Vorausschau (plus gierige Vergleichs-KI)
  • scripts/profile.gd – Spielstand (versioniert), Sammlung, Booster, Einstellungen
  • scripts/campaign.gd – Kampagnenstufen
  • scenes/main.tscn – Startszene
  • scripts/net.gd – Netzwerkspiel (ENet) mit Wiederverbinden
  • scripts/ui/ – Bildschirme; card_view.gd und creature_view.gd zeichnen Karten und Wesen, element_view.gd den Elementzähler, battle_layout.gd die Aufteilung des Kampfes
  • translations/ui.csv – englische Oberflächentexte
  • design.md – Gestaltung: Vorbilder, Karte, Kampfbildschirm, Bewegung, Menüs
Description
No description provided
Readme 2.2 MiB
Languages
GDScript 99.6%
Shell 0.3%
Batchfile 0.1%