ZOCK (voller Name: Projekt Client-K.I.s für Brettspiele) war mein fachbezogenes Wahlpflichtmodul im 4. Semester meines Bachelorstudiums Informatik an der OTH Regensburg. Das Fach war halb Vorlesung, halb Projektarbeit (wobei die Verteilung eher 10/90 ist). Den Inhalt der Vorlesung kann man in folgende Punkte zusammenfassen:

  • Spielregeln von Reversi bzw. erweiterte Spielregeln für ReversiXT
  • Netzwerkkommunikation und Serveranbindung für unsere Bots
  • Methoden zur Verbesserung unserer Bots (Alpha/Beta-Pruning, …)
  • Kurzeinführung in Machine Learning

Für die Projektarbeit wurde man in 3er Gruppen aufgeteilt, die währed des Semesters einen Bot entwickeln, der sich selbstständig mit einem Server verbinden soll auf dem dann ein Spiel ReversiXT gegen einen oder mehrere andere Bots gespielt wird. Kurzgesagt, wir sollen einen “Schachcomputer” für ReversiXT programmieren und optimieren.

Schwierig war dabei, den Bot fehlerfrei spielen zu lassen, da ein nicht valider Zug bereits zum Ausscheiden führte. Am Anfang des Spiels wird ein mal das Spielfeld mit allen nötigen Informationen geschickt und ab dann nur noch die Spielzüge der anderen. Es war also wichtig, im Bot das Spiel mitzuführen, damit er die Zugberechnung auch basierend auf dem aktuellen Spielfeld machen kann . Zusätzlich gab es pro Spielzug ein Zeitlimit von wenigen Sekunden. Wenn man länger braucht wurde man ebenfalls disqualifiziert, weswegen man den Bot so programmieren musste, dass er rechtzeitig den bestmöglichen Spielzug ausführte.

Hat man diese Hürden erstmal geschafft, musste man den Bot so weit optimieren, wie es nur ging. Dafür eigneten sich bewährte Methoden zur Suchbaumverkleinerung, wie Alpha-Beta-Pruning, Minmax, Paranoid, Iterative Deepening, Best-Reply-Search oder Transposition Tables.

Zusätzlich für ReversiXT wurde von unserem Professor empfohlen, sich über das Thema Communities Gedanken zu machen und in dieser Richtung zu experimentieren. Dabei wird sich im wesentlichen zum Nutzen gemacht, dass bei ReversiXT Spielfelder nicht notwendigerweise zusammenhängend sein müssen. Wenn z.B. das Spielfeld getrennt ist und zwei Spieler auf der einen Spielfeldseite und zwei andere auf der anderen Seite sind, ist es nicht nötig, den Baum für beide Spielfeldseiten aufzubauen, da wir nur auf einer Spielfeldseite, einer Community überhaupt spielen können. Damit lässt sich Rechenzeit sparen. Communities konnten in unserem Bot jedoch zu keiner Verbesserung führen.

Das Fach wird auch an der RWTH Aachen angeboten. Zum Ende des Semesters gab es ein abschließendes großes Match, wo alle Bots aus Aachen und Regensburg gegeneinander antraten. Der Bot von unserer Gruppe wurde erster.

Hier ein Beitrag der OTH zum Sieg meiner Gruppe:
https://www.oth-regensburg.de/news/detailansicht/kuenstliche-intelligenz-in-spielen-oth-regensburg-vs-rwth-aachen