Google AI Challenge

Moderator: Aktive Fachschaft

Benutzeravatar
leviathan
Computerversteher
Computerversteher
Beiträge: 307
Registriert: 30. Jul 2008 14:26
Wohnort: Darmstadt
Kontaktdaten:

Google AI Challenge

Beitrag von leviathan »

Die zweite Runde der Google AI Challenge läuft aktuell, und da unsere Uni aktuell in den Rankings etwas untervertreten ist (http://ai-contest.com/country_profile.php?country_id=64), dachte ich, mache ich mal ein wenig Werbung.

http://ai-contest.com
Problem Description

The objective is to create a computer program that plays the game of Planet Wars as intelligently as possible. Planet Wars is a strategy game set in outer space. The objective is to take over all the planets on the map, or altenatively eliminate all of your opponents ships.

Planet Wars is inspired by Galcon, a popular iPhone and desktop strategy game.
Gameplay-Video vom Visualizer aus dem Java Starter Package: http://www.youtube.com/watch?v=O0uxXZY-t-s

Die Bots können in vielen Programmiersprachen geschrieben werden, im Moment werden offiziell unterstützt: Java, C++, C#, Python, Haskell (angeblich versteht der Server inzwischen auch Entries mit Javascript und Perl, aber es gibt keine offizielle Starter Packages; immer mehr Sprachen werden von den Veranstaltern eingebaut).

Also, wer Interesse an KI und Spielen hat, los - http://ai-contest.com/quickstart.php, und nicht vergessen, die TUD bei der Registrierung als eure Uni auszuwählen!
Ein Programmierer hat immer eine Lösung. Die passt nur nicht immer zum Problem.

Hiwi für Weiterentwicklung des Lernportals (Moodle).

robert.n
Nerd
Nerd
Beiträge: 673
Registriert: 29. Sep 2008 19:17

Re: Google AI Challenge

Beitrag von robert.n »

Aber lieber nicht, wenn ihr noch Klausuren zu schreiben habt, das ist eine einzige Droge... :? :)

Das Schöne ist: Man kann seine Bots sowohl lokal testen und die Kämpfe anschauen als auch die Kämpfe online mitverfolgen. Beispiel: http://ai-contest.com/visualizer.php?game_id=4534066

Benutzeravatar
leviathan
Computerversteher
Computerversteher
Beiträge: 307
Registriert: 30. Jul 2008 14:26
Wohnort: Darmstadt
Kontaktdaten:

Re: Google AI Challenge

Beitrag von leviathan »

Ich sehe, es haben sich tatsächlich schon ein Paar von hier angemeldet :)
Ein Programmierer hat immer eine Lösung. Die passt nur nicht immer zum Problem.

Hiwi für Weiterentwicklung des Lernportals (Moodle).

fhirschmann
Windoof-User
Windoof-User
Beiträge: 33
Registriert: 20. Jul 2009 20:34
Kontaktdaten:

Re: Google AI Challenge

Beitrag von fhirschmann »

leviathan hat geschrieben:Ich sehe, es haben sich tatsächlich schon ein Paar von hier angemeldet :)
Ich bin auch dabei. :)

Ich spiele allerdings nur auf benzedrine.cx/tcpserver, da ich das System von ai-contest.com zu frustrierend finde, da es keine Fehlerausgabe gibt und die stderr einfach verworfen wird und man somit nie weiß, was passiert ist, wenn der Bot einfach so während dem Spiel stehen bleibt.

Benutzeravatar
leviathan
Computerversteher
Computerversteher
Beiträge: 307
Registriert: 30. Jul 2008 14:26
Wohnort: Darmstadt
Kontaktdaten:

Re: Google AI Challenge

Beitrag von leviathan »

fhirschmann hat geschrieben:Ich spiele allerdings nur auf benzedrine.cx/tcpserver, da ich das System von ai-contest.com zu frustrierend finde, da es keine Fehlerausgabe gibt und die stderr einfach verworfen wird und man somit nie weiß, was passiert ist, wenn der Bot einfach so während dem Spiel stehen bleibt.
Da spielen auch ein paar von Modifikationen meines Bots drauf (olex.s.mf1-4), die auch lokale Logs für Debug etc. schreiben. Ich benutze den TCP Server hauptsächlich zum Auswerten meiner "Verbesserungen", und die jeweils beste Version spielt auch vor sich hin auf dem offiziellen Server, einfach um zu sehen wie es so abschneidet :) Die Rankings aufm TCP und auf dem Offiziellen unterscheiden sich ja schon um Einiges.
Ein Programmierer hat immer eine Lösung. Die passt nur nicht immer zum Problem.

Hiwi für Weiterentwicklung des Lernportals (Moodle).

fhirschmann
Windoof-User
Windoof-User
Beiträge: 33
Registriert: 20. Jul 2009 20:34
Kontaktdaten:

Re: Google AI Challenge

Beitrag von fhirschmann »

leviathan hat geschrieben:Da spielen auch ein paar von Modifikationen meines Bots drauf (olex.s.mf1-4), die auch lokale Logs für Debug etc. schreiben.
Dann hab ich gerade gegen dich verloren (fahi-N.N). :)
leviathan hat geschrieben:Ich benutze den TCP Server hauptsächlich zum Auswerten meiner "Verbesserungen", und die jeweils beste Version spielt auch vor sich hin auf dem offiziellen Server, einfach um zu sehen wie es so abschneidet :) Die Rankings aufm TCP und auf dem Offiziellen unterscheiden sich ja schon um Einiges.
Auf dem offiziellen hab ich leider keine Version meines Bots zum laufen bekommen, dort bleibt das Spiel immer in der Mitte hängen.

Benutzeravatar
salted
Mausschubser
Mausschubser
Beiträge: 84
Registriert: 28. Sep 2009 21:21

Re: Google AI Challenge

Beitrag von salted »

Vermutlich ist Planet Wars auch einer der wenigen Fälle, in denen Bugs einen gewissen Unterhaltungswert haben können:
http://ai-contest.com/visualizer.php?game_id=4581053

Benutzeravatar
Tigger
Kernelcompilierer
Kernelcompilierer
Beiträge: 404
Registriert: 26. Okt 2007 17:35
Wohnort: Hofheim
Kontaktdaten:

Re: Google AI Challenge

Beitrag von Tigger »

Arbeitet ihr mit der Java-Variante? Irgendwie ist die übelst buggy. Im Starterpackage werden z.B. 2 Varianten von PlanetWars.java verwendet. Eine liegt im Root- die andere im ExampleBot-Verzeichnis. Bei einer fehlen z.B abfragen für EnemyFleet(), weshalb mein Bot nur mit der anderen läuft.

Benutzeravatar
leviathan
Computerversteher
Computerversteher
Beiträge: 307
Registriert: 30. Jul 2008 14:26
Wohnort: Darmstadt
Kontaktdaten:

Re: Google AI Challenge

Beitrag von leviathan »

Tigger hat geschrieben:Arbeitet ihr mit der Java-Variante? Irgendwie ist die übelst buggy. Im Starterpackage werden z.B. 2 Varianten von PlanetWars.java verwendet. Eine liegt im Root- die andere im ExampleBot-Verzeichnis. Bei einer fehlen z.B abfragen für EnemyFleet(), weshalb mein Bot nur mit der anderen läuft.
Die PlanetWars.java Klasse ist einfach nur eine Hilfsklasse, die den Input vom Server in Java-Variablen verarbeitet. Die darf man beliebig ändern. Allerdings sind die PlayGame.jar und ShowGame.jar nicht perfekt, die mit dem Starter Package kommen. Die gepatchten Dateien aus dem Forum sind etwas besser: http://ai-contest.com/forum/viewtopic.php?f=18&t=534
Ein Programmierer hat immer eine Lösung. Die passt nur nicht immer zum Problem.

Hiwi für Weiterentwicklung des Lernportals (Moodle).

fhirschmann
Windoof-User
Windoof-User
Beiträge: 33
Registriert: 20. Jul 2009 20:34
Kontaktdaten:

Re: Google AI Challenge

Beitrag von fhirschmann »

Ich benutze das Python "Framework", allerdings finde ich das auch nicht besonders gut und es hat einige Bugs.

Benutzeravatar
Sepp
Mausschubser
Mausschubser
Beiträge: 75
Registriert: 29. Sep 2008 15:20
Kontaktdaten:

Re: Google AI Challenge

Beitrag von Sepp »

Lustiges Spielchen, hab auch mal einen kleinen Bot gebastelt und er hat immerhin sein erstes Spiel direkt gewonnen.. Wahrscheinlich eher ein Glückstreffer. :-D

dk1001
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 14. Okt 2008 12:30

Re: Google AI Challenge

Beitrag von dk1001 »

leviathan hat geschrieben:Die zweite Runde der Google AI Challenge läuft aktuell, und da unsere Uni aktuell in den Rankings etwas untervertreten ist (http://ai-contest.com/country_profile.php?country_id=64), dachte ich, mache ich mal ein wenig Werbung.
Na, dass hat sich inzwischen ja etwas gebessert. Mit aktuell 2 und ½¹ unter den ersten 10 Deutschen und unter den ersten 100 insgesamt. :D Aber mit mehr würde es natürlich schon mehr Spaß machen. ;)

Java ist auf meinem armen Laptop viel zu langsam, da timed selbst der simpelste exampleBot sofort aus, weshalb ich auch ganz froh bin, dass ich heute über den C++ Port von albert gestolpert bin - sehr nett und vor allem auch recht fix. :)

Vom Framework her: Das C++ Starterpaket sieht mir ohne ins Java Paket gesehen habe aus wie eine direkte Übertragung von Javacode in C++. signed ints für alles was nicht bei drei auf dem Baum ist und copies o'mass (const& for the win!)… Aber gut, es werden so viele Starterpakete bereitgestellt und für die ersten Schritte reicht es locker. Im Forum hab ich sogar ein LISP/Scheme Starterpaket gesehen… ;)

Aber, viel interessanter ist doch sich ein bisschen über Taktik anstatt über Frameworks zu unterhalten. Muss ja keiner die eigenen geheimen Supertricks verraten. ;)
Also fange ich mal an: Wie man an meinen Replays sicherlich erkennen wird gehört meiner in die Kategorie Flottenspammer und geht nach der simplen Taktik vor: Alle Schiffe die nicht benötigt werden um Angreifer abzuwehren werden sofort auf das "nächst beste" Ziel losgeschickt - dabei ist zu beachten, dass mein Bot keinen zentralen Operator hat, der die Taktik - wie z.B. das nächste Ziel - festlegt, sondern jeder meiner Planeten autonom agiert und für sich selbst entscheidet wohin er seine Schiffe schickt. Wie bei einem Ameisenhaufen ergibt das ein wildes Flottengewussel was erstaunlicherweise aber recht koordiniert aussieht und oft ziel-führend ist (Bei Spammern ist man ja geneigt zu glauben der Gegner würde Time outen und das ist tatsächlich manchmal der Fall, allerdings meist erst wenn es ohnehin zu spät ist… - achtet darauf, dass euch das nicht passiert!). Für mich persönlich ist das ein Novum, da wenn ich selbst Spiele spiele ich doch ein sehr defensives Verhalten an den Tag lege…

So, was ist mit euch, sind eure Bots eure exakten Mini-Mes, basieren eure auf einer übergeordneten Kontrollinstanz, hoffen auf die Schwarmintelligenz oder haben sie sonstige (un)interessante Eigenschaften?

Also Bonus und total sinnfreien Maßstab:

Code: Alles auswählen

$ wc -l MyBot.cc PlanetWars.{cc,h}
  317 MyBot.cc
  339 PlanetWars.cc
  252 PlanetWars.h
  908 insgesamt
Happy fighting!

¹ Mein kleiner ist noch zu doof um richtig zu entscheiden ob er jetzt über oder unter 100 bleiben soll. Änderungen vorbehalten. ;)
MfG. David Kalnischkies
"Sprächen die Menschen nur von Dingen, von denen sie etwas verstehen, die Stille wäre unerträglich."
"If Java had true garbage collection, most programs would delete themselves upon execution." -- Robert Sewell

Benutzeravatar
leviathan
Computerversteher
Computerversteher
Beiträge: 307
Registriert: 30. Jul 2008 14:26
Wohnort: Darmstadt
Kontaktdaten:

Re: Google AI Challenge

Beitrag von leviathan »

dk1001 hat geschrieben:So, was ist mit euch, sind eure Bots eure exakten Mini-Mes, basieren eure auf einer übergeordneten Kontrollinstanz, hoffen auf die Schwarmintelligenz oder haben sie sonstige (un)interessante Eigenschaften?
Gut, dann verrate ich auch etwas über meinen Bot (olex.savchuk, Rang ~45 insgesamt, Rang 2-3 unter den Deutschen).

Es ist ein regelbasierter Agent mit einer in Java implementierten Engine und einer Art "Skriptsprache" für die Regeln, von der die Befehle aus einer Textdatei geladen werden. Die Befehle sind in der Form "Bedingung -> Aktion", die Bedingungen sind dabei logische Kombinationen aus etlichen Spielstandvariablen und Konstanten und die Aktion ist eine Flottenbewegung mit vorgeschriebenen Eigenschaften (Source, Target, Menge der Schiffe, sowie Kontrollfluss). Im Moment spielen von mir auf dem TCP Server mehrere Versionen des Bots mit dem gleichen Engine-Code, aber verschiedenen Rulesets - bin der Meinung, dass ich da noch lange nicht beim Optimum angekommen bin... und die Experimente bestätigen das soweit :)

Darüber hinaus hat der Bot eine Bewertungsfunktion für Planeten (welche er sich am besten holen soll), eine Simulation der Planeten nach vorne (Zukunftszustand vollständig simuliert für N Runden, inklusive ankommende Flotten, Besitzerwechsel, Wachstum etc.), und viele weitere lustige Elemente drin. Das Ganze treibt Java schon langsam an Performanzgrenzen, die Menge an Simulationen muss ich schon beschränken, sonst stirbt der Bot in Testspielen an Java Heapspace-Mangel... bin am überlegen, das Ganze in C++ umzuschreiben.
Ein Programmierer hat immer eine Lösung. Die passt nur nicht immer zum Problem.

Hiwi für Weiterentwicklung des Lernportals (Moodle).

Benutzeravatar
Tigger
Kernelcompilierer
Kernelcompilierer
Beiträge: 404
Registriert: 26. Okt 2007 17:35
Wohnort: Hofheim
Kontaktdaten:

Re: Google AI Challenge

Beitrag von Tigger »

dk1001 hat geschrieben:So, was ist mit euch, sind eure Bots eure exakten Mini-Mes, basieren eure auf einer übergeordneten Kontrollinstanz, hoffen auf die Schwarmintelligenz oder haben sie sonstige (un)interessante Eigenschaften?
Ich bastele ein bischen an einem Java-bot rum, der ist allerdings momentan noch mehr als Buggy.

Zur Strategie:
Bei mir wird das Spielgeschehen über eine Zentrale KI gesteuert. Diese KI bewertet Planeten anhand von Größe, Abstand, Besitzer und aktuell dort Stationierten Flotten. Je nach Bewertung koordiniert sie dann die nächsten Angriffe. Bei der Analyse wird dabei nicht vom aktuellen Zustand, sondern vom zukünftigen Zustand, der eintritt, wenn alle Flotten ihr Ziel erreicht haben, ausgegangen. Das ist praktisch, da man bei Bedarf Planeten bei einem gegnerischen Angriff schon soweit verstärken kann, das seine Flotte abgewehrt wird. Das führt natürlich dazu, dass bei jedem Spielzug erst einmal recht aufwendige Analysen durchgeführt werden müssen. Da kriegt man besonders bei Fleetspammern (dk1001 böse anschau :mrgreen: ) Probleme. Im Extremfall könnte man bei jedem Angriff einfach viele Flotten der Größe 1 verschicken. Da killt man jeden Bot der die Fleets analysiert. Darüber wird sich im Forum schon beschwert.
Naja, die wirklich spannende Sache finde dich die Bewertung der Planeten die man erobern will. Der Trick ist, die o.g. Faktoren richtig zu gewichten. Wenn mein Bot mal Bugfrei läuft muss ich das erstmal richtig tunen. Cool wäre natürlich ne eigene Testbench, die diese Parameter zumindest gegen die ExampleBots optimieren kann. Aber da bin ich noch weit von weg ;)

Benutzeravatar
Sepp
Mausschubser
Mausschubser
Beiträge: 75
Registriert: 29. Sep 2008 15:20
Kontaktdaten:

Re: Google AI Challenge

Beitrag von Sepp »

So ne wirkliche Taktik, die bugfrei funktioniert, hab ich noch nicht.. hab den Bot jetzt auch komplett umgeschrieben und neu hochgeladen. Schade nur, dass die "echten" Kämpfe so selten sind.

Antworten

Zurück zu „Offtopic“