Avaloqix: Unterhaltsamer Java-Programmierwettbewerb

Flow im HirnIch liebe Wettbewerbe und ich liebe das Spielen. Meine inneres, urmännliches Ich springt voll auf das kompetitive Element solcher Veranstaltungen an. Zum Erlegen von Höhlenbären oder für Sportwettkämpfe eigne ich mich definitiv nicht, darum bin ich froh, wenn ab und zu ein Kräftemessen auf meinem – eher wetwarelastigen – Gebiet stattfindet.

Leider hat es jetzt seit längerer Zeit kein Codeduel (ein spassiger, von Microsoft Schweiz gesponserter/organisierter Event in welchem SOAP-Services gegeneinander angetreten sind, für den es aber leider keine offizielle Website mehr gibt) mehr gegeben und für die kommerzielle Version solcher Wettbewerbe habe ich im Moment wirklich keine Zeit.

Über die Seite des Schweizerischen Jahres der Informatik bin ich auf Avaloqix gestossen und war sofort begeistert. Am Tag der Informatik am 29. August 2008 in Zürich wird es ein Event speziell zu diesem Wettbewerb geben.

Das Spiel

Es geht darum, einen Spieler für eine abgewandelte Version des Shannon Switching Games zu programmieren. Kurz erklärt: Es gibt eine Quelle und ein Senke, die über ganz viele Röhren und Sammelpunkte miteinander verbunden sind. Im ersten Durchgang versucht der eine Spieler einen möglichst grossen Durchfluss zu erzielen indem er Röhren freischaltet, während der andere Spieler ebendies durch das Ausbauen von Röhren zu verhindern versucht. In einer zweiten Runde werden die Rollen der Spieler in demselben Röhrengeflecht getauscht. Gewonnen hat, wer als Durchflussmaximierer den grösseren Durchfluss erzielen konnte.

Avaloqix

Avaloqix ist ein Spiel der Avaloq Evolution AG (die für diese geniale Leistung und ihr Engagement durchaus etwas Werbung verdient hat). Für dieses Spiel wurde eine sehr anmächelige Spieloberfläche kreiert, in welcher zwei Comutergegner oder auch Menschen dieses Spiel spielen können. Auf der Homepage findet man den Download inklusive Anleitungen zum Einstieg.

Die Avaloqix Spieloberfläche

Die Avaloqix Spieloberfläche

Im Download werden zwei Beispielspieler mitgeliefert: Ein Zufallsspieler (mit Quellcode) und einer, der auf den Namen OptimalOneAgent hört. Obwohl er stolz das Optimalim Namen führt, ist er jedoch auch für impulsive, rückenmarkgesteuerte Spieler wie mich (zumindest bei wenigen Knoten) relativ einfach schlagbar. Ich nehme mal an, dass dieser Agent so verfährt, als wenn alle Pipes nur 1 Durchfluss hätten.

Gestartet werden kann die Spieloberfläche mittels java -jar Avaloqix.jar.

Avaloqix unter Eclipse

Eine Anleitung für Netbeans liegt dem Spiel bei. Auch mit Eclipse ist es nicht schwer, Spielerprogramme zu entwickeln.

  1. Neues Java Projekt erstellen.
  2. Rechte Maustaste auf das Projekt → Properties → Java Build Path → Libraries → Add External JARs… → AvaloqixAgentInterface.jar auswählen und OK drücken:
    Avaloqix unter Eclipse

    Avaloqix unter Eclipse

  3. Ein Spielprogramm im Package agents erstellen (eventuell von RandomAgent.java) ausgehend.
  4. Project → Build All
  5. Die .class Datei aus bin/agents/ in das agents Verzeichnis der Spieloberfläche kopieren. Ab da ist er in der Spieloberfläche verfügbar.

Wichtig

Leider gibt es auf der Avaloqix wenig Möglichkeiten zum Austausch und zur Communitybildung. Gerade bei den Codeduels ging da immer der Punk ab, und so habe ich ein kleines Forum für die Diskussion eingerichtet Update 01.2009: Forum gelöscht mangels Interesse und wegen Spam), vielleicht besteht ja auch hier das Bedürfnis sich über Strategien, Lust und Frust und verschiedene Biersorten zu unterhalten:

Oncode.info Coding Games Forum

Oncode.info Coding Games Forum

Als Leckerli sind dort schon einige Verweise zu den theoretischen Grundlagen des Spiels gepostet. Es würde mich sehr freuen, von anderen Teilnehmerinnen und Teilnehmern zu lesen…

5 Gedanken zu “Avaloqix: Unterhaltsamer Java-Programmierwettbewerb

  1. Nicht schlecht, gleich ma downloaden 🙂 sieht intressant aus…
    Habe auch geplant am 29. nach Zürich zu gehen, leider aber aus schultechnischen Gründen erst am Abend. Vl sieht man sich ja und ich kann deinen Bot in Action erleben 🙂

  2. @Compr00t Mach doch mal den Lehrern den Vorschlag für eine Exkursion dahin. Ich werde auch mit Lernenden da sein… Abends habe ich noch andere Termine und werde wohl die Börnie verpassen :cooler: …

    Aber ich wünsche Dir viel Spass!

  3. Leider schwierig, da die BM da nicht mitmachen wird 🙁
    Aber ich werde extra wegen Borni dahin gehen 🙂 Dass lass ich mir nicht entgehen 😀

  4. Schöner Beitrag!

    Wieso der OptimalOneAgent optimal im Namen trägt kann ich kurz erklären.
    Er berücksichtigt durchaus die Kapazitäten der Kanten, genauer gesagt ist dies sogar das Wichtigste beim Algorithmus, denn er führt die MaxFlow Berechnungen durch. Allerdings versucht er nicht die optimalste Strategie für das gesamte Spiel zu finden, sondern lediglich für den jetzigen Zug, deshalb steht noch das One im Namen. Dabei wählt er die Kante, die bei Fehlen den grössten MaxFlow-Unterschied ausmachen würde. Für einen menschlichen Spieler, der ohne Probleme zwei oder mehr Züge voraus schauen kann, ist es deshalb (wie du bereits gemerkt hast) ein Leichtes ihm ein Schnippchen zu schlagen… 😉

    Viel spass beim Coden!

    gruss,
    Bernardo

  5. @Bernardo
    Vielen Dank für die Erläuterung. Dass die Beispielspieler nicht überstark sind, wirkt motivierend :)… Ihr habt da was Geniales auf die Beine gestellt!!! Hoffentlich habt Ihr viele Teilnehmer…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.