Aagon Battle(intern)ships – Teil 2

Heute, auf den Tag genau vor 211 Jahren, wurde bei Trafalgar die wohl größte und bekannteste Seeschlacht der Weltgeschichte geschlagen. Das ist für uns die optimale Gelegenheit den zweiten und letzten Teil der Aagon Battle(intern)ships nachzureichen. Nachdem die grundlegenden Regeln des „Schiffe versenken“ – Spiels erfolgreich implementiert waren, sollten die Projekte unserer beiden Praktikanten nun auch ein bisschen mehr können, als nur wild in der Gegend herumzuballern. Kein Problem!

Im ersten Teil (hier nachlesen) lag die Priorität unserer Praktikanten darauf, ihren Programmen die korrekten Regeln beizubringen und die rudimentären Spielmechaniken richtig im Quellcode zu „verankern“.
Als das gelungen war, ging es für die Aagon-Praktikanten daran, einen Schritt weiter und größer zu denken, und dem Programm so etwas wie eine eigene Intelligenz zu geben.

Vorhersage oder wirklich intelligent?

Bei der Konzeption einer Spiel-KI muss man, gerade bei einem Spiel wie „Schiffe versenken“, immer darauf achten, dass die scheinbare künstliche Intelligenz des Computers nicht zu sehr dadurch bestimmt ist, dass der Computer „schummelt“, indem er beispielsweise auf den Standort der gegnerischen Schiffe zugreift und so genau weiß wohin er seine Salven setzen muss.

Dieses Problem ist seit längerem bei Computerspielen bekannt. Besondere Popularität erlangte dieses Thema bei der Entwicklung von Videospielen in den späten Neunzigerjahren und 00er-Jahren, als zum ersten Mal der Schritt von einer „predictive AI“ zu einer echten „artificial AI“ diskutiert wurde und Computerspiele wie „Black&White“[1], „The Sims“[2] oder „F.E.A.R“[3] mit unterschiedlichen Ansätzen beeindruckende Resultate erzielten. (siehe Hinweise unter dem Text)

Die Verteilung der Schiffe bei 100k Platzierungen
auf dem Spielfeld.

Treffer! Versenkt!

Um das Problem möglichst einfach anzugehen, entwickelten die beiden Aagon-Praktikanten ein Verfahren um das Programm mit „Erfahrungswerten“ zu versorgen und so Vorhersagen über die Platzierung der gegnerischen Schiffe zu treffen. Sie simulierten rund 1000(10k, 100k) einzelne Matches zwischen ihren Programmroutinen. Darüber führten Sie eine Statistik und erhielten eine ungefähre Verteilung, wo Schiffe am häufigsten platziert waren.

Zwei Clientinstanzen im Match gegeneinander. Rechts unten ist die Serverconsole zu sehen.


Bei einem „Treffer“ platzierte das Programm die Schiffe, basierend auf dieser Statistik, neu und konnte so, beim nächsten Schuss die Chance erneut zu treffen erhöhen. Als kleiner Bonus erhielt das Programm schließlich noch die Möglichkeit die Platzierung von Schiffen aus bereits bestrittenenen Matches aus einer Log-Datei auszulesen, und für seine Vorhersagen zu nutzen. Damit endete ein 8 wöchiges Praktikum der beiden Schüler des Lippe-Berufskollegs.

Zuletzt wünschen wir den beiden „Admirälen“ Tim und Patrick viel Erfolg und immer eine Handbreit Wasser unter dem Kiel für ihren weiteren Werdegang.

Du möchtest ein Praktikum bei der Aagon machen? Check unsere Karriere-Seite!



[1] Maschinen-Lernen (Black&White): Die Spiel-Kreatur lernt Mausgesten zu deuten und mit Situationen zu verknüpfen. Im späteren Verlauf des Spiels versucht die Spiel-Kreatur autonom auf Situationen mit bereits bekannten Merkmalen entsprechend zu reagieren.
[2] Objektinteraktion (The Sims): Sims „lernen“ durch Interaktion mit Gegenständen und Personen, bei Erfolg wiederholen sie die Tätigkeit selbstständig, bei Misserfolg versuchen sie die Tätigkeit/Person zu meiden
[3] Kontext-Beobachtung (F.E.A.R): NPCs gehen in Deckung, versuchen den Spieler über alternative Routen zu umgehen, stoßen Hindernisse aus dem Weg um ihr „Ziel“ zu erreichen und kommunizieren ihre Wege mit anderen NPCs. Dadurch waren die Entwickler gezwungen kleine Maps zu erstellen, weil es den NPCs möglich war „Verstärkung“ aus anderen Teilbereichen der Karte zusammenzuziehen. Hier finden sie ein lesenswertes Paper zu diesem Thema