Projekt 2: Cable Car
Im zweiten Projekt des SoPra22d soll das Brettspiel Cable Car als Kotlin-Anwendung unter Verwendung des BoardGameWork realisiert werden. Cable Car ist eine Neuauflage des Spiel Metro von 1997. In Cable Car probieren Spieler mittels Gleiskarten möglichst lange Straßenbahnlinien zu bauen.
Für die Implementierung ist allein das englische Regelwerkdokument ausschlaggebend.
Anforderungen an das Programm
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 2-6 Spieler soll vor Spielstart frei wählbar oder randomisiert sein.
- Bei der Spielerstellung soll es eine Auswahlmöglichkeit geben, ob Karten entsprechend der vorgegebenen Orientierung gelegt werden müssen oder beliebig drehbar sind.
- Es gibt genau einen Nachziehstapel.
- Das Spiel soll in zwei Modi unabhängig gespielt werden können (Mischung der beiden Modi ist nicht vorgesehen)
- Die Spieler wählen nacheinander und reihum am gleichen Bildschirm ihre Aktionen aus (Hotseat-Modus)
- Die Spieler spielen gegeneinander via Netzwerk unter Verwendung des BGW-Net Moduls
- Es sollen simulierte Mitspieler („KI-Spieler“) zur Verfügung stehen. Hierbei soll es eine einfache Test-KI geben, die z.B. nur randomisiert einen der möglichen Züge auswählt, sowie eine „richtige“ für das am Ende stattfindende KI-Turnier. Es soll auch möglich sein, dass reine KI-Spiele (also ohne menschliche Spieler) durchgeführt werden. Damit ein Zuschauen und Nachvollziehen der Züge möglich wird, soll die Simulationsgeschwindigkeit angepasst werden können.
- Die KIs dürfen beim Spielen keine Vorteile gegenüber einem menschlichen Spieler ausnutzen (z.B. in Nachziehstapel schauen).
- Kein KI-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.
Regelanpassungen und -erläuterungen
Erweiterungen
Im Sopra22d wird nur die Basivariante des Spiels Cable Car implementiert. Eine Umsetzung Cable Car - Die Gesellschaften, bei der Spieler Aktienanteile an den Linien (Farben) kaufen müssen, um Siegpunkte zu erhalten, ist nicht notwendig.
Öffentliche Informationen
Entgegen den Regeln sind die Handkart(en) öffentlich einsehbar (und dürfen damit auch von der KI als Informationsquelle für die Strategie verwendet werden). Der entsprechende Nachziehstapel ist allerdings weiterhin geheim.
Randomisierung
Für das Netzwerkspiel (und damit das KI-Turnier) ist es notwendig, dass die normalerweise zufälligen Elemente des Spiels in beiden ausführenden Programmen identisch ablaufen. Vorgabe ist hier, dass das Programm, welches das Spiel am Server angelegt hat (also Host ist), diese randomisierten Strukturen (z.B. gemischte Kartenstapel) über geeignete Messages an die Guest-Programme verteilt.
KI-Turnier
Am Ende des Projekts findet ein Turnier statt, bei dem die KIs der Gruppen in 1v1-Spielen über den Netzwerkmodus gegeneinander antreten. Der genaue Ablauf des Turniers wird im Laufe des Projekts noch festgelegt.
Network Task Force
Aus je einem Teilnehmer jeder Gruppe wird eine Network Task Force (NTF) gebildet, die gemeinsam das Austauschformat für das Netzwerkspiel in Form eines (oder mehrerer) JSON-Schema definiert und die dazugehörigen Kotlin Data Classes gemeinschaftlich implementiert. Für die NTF sind drei Treffen vorgesehen, in denen auch BGW-Net-Entwickler und SoPra-Organisation beratend zur Verfügung stehen:
- Di. 6.12.: 16:00-18:00 Uhr
- Do. 8.12.: 16:00-18:00 Uhr
- Di. 13.12.: 16:00-18:00 Uhr
Meetingraum (online): Sopra22d Network Taskforce