sopra:25a:projekt2

Projekt 2: Bonsai

Im zweiten Projekt des SoPra25a soll das Brettspiel Bonsai als Kotlin-Anwendung unter Verwendung des BoardGameWork realisiert werden.

Bonsai ist ein strategisches Brettspiel, bei dem die Spieler:innen wunderschöne Bonsai-Bäume gestalten, indem sie geschickt Äste, Blätter und Dekorationen hinzufügen. Ziel ist es, durch ästhetische und thematische Entscheidungen den schönsten Baum zu kreieren und die meisten Punkte zu sammeln.

Bonsai erlaubt das Spielen für eine einzelne Person (Solo-Modus). Diese Option ist für das zu entwickelnde Programm nicht notwendig und muss nicht implementiert werden. Außerdem muss die Variante für Fortgeschrittene: „Tokonoma“ nicht implementiert werden.

Das zu entwickelnde Programm soll den Spielablauf steuern und für die Einhaltung der Spielregeln sorgen. Zusätzliche Features, die nicht direkt auf den Spielregeln basieren, sollen umgesetzt werden:

  • Die Reihenfolge der Spielenden soll vor Spielstart sowohl frei wählbar konfiguriert als auch randomisiert werden können.
  • Die Zielplättchen sollen vor Spielstart frei wählbar konfiguriert werden können.
  • Das Spiel soll in zwei Modi unabhängig gespielt werden können (eine Mischung der beiden Modi ist nicht vorgesehen):
    • Die Spielenden wählen nacheinander und reihum am gleichen Bildschirm ihre Aktionen aus (Hotseat-Modus).
    • Die Spielenden spielen gegeneinander via Netzwerk unter Verwendung des BGW-Net-Moduls.
  • Ein Spiel soll unterbrochen und gespeichert werden können, um es zu einem späteren Zeitpunkt (auch nach Neustart des Programms) fortzusetzen. Für Netzwerkspiele soll dieses Feature deaktiviert sein.
  • Es sollen simulierte Mitspieler („Bots“) zur Verfügung stehen. Hierbei soll es einen einfachen Test-Bot geben, der z.B. nur randomisiert einen der möglichen Züge auswählt, sowie eine „richtige“ für das am Ende stattfindende Bot-Turnier. Es soll auch möglich sein, dass reine Bot-Spiele (also ohne menschliche Spielende) durchgeführt werden. Damit ein Zuschauen und Nachvollziehen der Züge möglich wird, soll die Simulationsgeschwindigkeit angepasst werden können.
  • Die Bots dürfen beim Spielen keine Vorteile gegenüber einem menschlichen Spielenden ausnutzen.
  • Kein Bot-Zug darf länger als 10 Sekunden benötigen.
  • Um verschiedene Strategien studieren und ausprobieren zu können, soll das Spiel über eine Undo- und eine Redo-Funktion verfügen. Die Spielzüge sollen bis zum Spielstart zurückgenommen werden können. Für Netzwerkspiele soll dieses Feature deaktiviert sein.
  • Jede Gruppe soll zu ihrem Spiel auch eine PDF-Anleitung beilegen, die beschreibt, wie das Spiel ausgeführt und bedient wird.

Am Ende des Projekts findet ein Turnier statt, bei dem die Bots der Gruppen in 1v1-Spielen über den Netzwerkmodus gegeneinander antreten. Der genaue Ablauf des Turniers wird im Laufe des Projekts noch festgelegt.

Ein Bot-Zug darf dabei maximal 10 Sekunden Rechenzeit benötigen und muss regelkonform sein. Sollte eine Bot sich nicht an die Spielregeln halten (beabsichtigt oder unbeabsichtigt), wird die Gruppe vom Bot-Turnier ausgeschlossen.

Bei Bonsai gibt es 5 verschiedene Arten von Karten (Helper, Master, Growth, Point, Tool). Für jede Kartenart stellen wir eine CSV-Datei zur Verfügung, die die Kartenverteilung für 2,3,4 Spieler darstellen. Jede karte hat eine eindeutige ID, welche sich in den CSV-Dateien befindet.

Die Anzahl der Karten für 3/4 Spieler in den CSV-Dateien ist korrekt. Die englische Anleitung hat einen Schreibfehler. Es sollte heißen:
Prepare the deck of Zen cards, with:
4 players: use all the cards
3 players: remove the 4 cards for 4 players, marked with …
2 players: remove the 15 cards for 3 and 4 players, marked with …

Meditate: Karte von Board ziehen mit Aktion „Draw tile to personal supply“
Es werden in jedem Fall alle zu ziehenden Tiles in den personal supply gelegt und können für den aktuellen Zug verwendet werden.

Aufdecken von neuen Zen-Karten
Nachdem eine Karte vom Board gewählt wurde, wird sofort die nächste Karte aufgedeckt. Alle Aktionen (Tiles ziehen, Aktionen von gezogener Karte), die durch das Ziehen der Karte ausgelöst werden, werden erst nach dem Aufdecken ausgeführt.

Rückbau seines Baumes
Im unwahrscheinlichen Fall, dass an einem Baum kein Wood Tile mehr angelegt werden kann, so kann laut Regeln der Baum am Anfang des Zuges so zurückgebaut werden, dass wieder ein Wood Tile angelegt werden kann. Hierbei muss die minimale Anzahl an Tiles entfernt werden, um wieder einen gültigen Spielstand zu erreichen. Zudem muss in diesem unwahrscheinich Fall der Baum nicht zurückgebaut werden, was zu Folge hat, dass in diesem Zug dann aber auch kein Wood Tile im Baum platziert werden kann.

Ablehnen von Goals
Einmal abgelehnte Goals sind für den weiteren Spielverlauf gesperrt. Dies gilt auch in dem besonderen Fall, dass beim „Rückbau“ des Baumes ein bereits vorher abgelehntes Goal erneut erreicht werden könnte.

Claimen von Goals
Nach dem Legen jedes Tiles muss überprüft werden, ob ein Goal erreicht wurde. In diesem Fall muss sofort nach dem Legen des Tiles entschieden werden, ob das Goal geclaimed werden soll, oder nicht.

Goal Tiles konfigurieren
Beim Start des Programmes müssen die Goal Tile Farben konfiguriert werden. Sie sollen auch zufällig gewählt werden können. Hierbei dürfen nur die Farben gewählt werden, die auch im Spiel vorhanden sind und es dürfen nicht weniger als 3 Goal Tile Farben ausgewählt werden. In einem Netzwerk-Spiel entscheidet das „Host“-Spiel, welche Goal Tile Farben verwendet werden.

Punkteberechnung
Zur Nachverfolgung der Punkte soll die im Spiel vorhandene Punktetafel nachimplementiert werden. Hierbei ist die Aufschlüsselung in die verschiedenen Kategorieren wichtig. Das Design ist jeder Gruppe selbst überlassen.

Ausrichtung der Töpfe
In der Anleitung werden die Spieltöpfe teilweise in verschiedenen Ausrichtungen dargestellt (also teilweise gespiegelt). Im SoPra soll der Spieltopf so implementiert und platziert werden, sodass sich der golde Riss auf der rechten Seite und der Stamm sich auf der linken Seite befindet.

Helper Karten
Bei Helper-Karten, darf auch kein Plättchen platziert werden. Außerdem darf auch das zweite Symbol vor dem ersten Symbol ausgewertet/gespielt werden.

Aktion: Cultivate
In der Aktion „Cultivate“ darf auch kein Plättchen gelegt werden.
Die Aktion „Cultivate“ kann auch dann ausgeführt werden, wenn keine Plättchen im privaten Vorrat vorhanden sind. Dies führt dazu, dass in diesem Zug effektiv nichts passiert. (Es wird gepasst)

Platzieren von Plättchen
Jedes Platzieren von Plättchen (und auch das Entfernen von Plättchen), muss einen validen Spielstand erzeugen. Das bedeutet, dass die Bedingungen (wie sie in „Cultivate“ definiert sind) für jedes Plättchen zu jedem Zeitpunkt gelten muss.

Bot Aktionen im Turnier
Wenn wiederholt im Bot-Turnier beide Bots „Cultivate“ ohne Platzierung von Plättchen durchführen (effektiv „Passen“), wird das Spiel als „unentschieden“ gewertet und das Spiel muss wiederholt werden. Sollten sich andere Endlos-Schleifen des Spielstandes ergeben, gilt diese Regel analog.

  • sopra/25a/projekt2.txt
  • Zuletzt geändert: 2025/03/13 15:52
  • von till.schallau