Update 18.04.2009: Kleine Änderungen an der Spielmechanik, was die Bewertung betrifft, wenn eine KI illegale Züge zurück gibt oder gar nicht mehr reagiert.
Update 17.04.2009: Neue FAQ-Einträge 22 - 25.
Update 12.04.2009: Neue FAQ-Einträge und neue Version mit DEBUG-Schalter.
Update 11.04.2009 (Teil 2): Es gab in der Spielmechanik noch einen recht großen Bug, der in der neuen Version ausgebessert wurde.
Update 11.04.2009: Es gibt eine neue Version mit kleinen Ausgabeverbesserungen.
Seit dem Start des Programmierwettbewerbs sind ein paar Fragen bei uns eingegangen, die wir hiermit auch für alle anderen Leser beantworten wollen.
-
Wenn ein Spieler drei oder mehr Steine entfernt und es rutschen neue Steine nach, die zufällig
zusammenpassen, werden diese dann ebenfalls dem Spieler angerechnet?
Ja, nachrutschende passende Steine werden ebenfalls dem Spieler angerechnet, der für diese Kaskade zuständig war.
Dies erklärt auch, wieso Spieler 1 bei der Referenz-KI beim ersten Zug von Spieler 2 plötzlich nur noch 4 Schildpunkte hat. -
Wohin muss ich meine Implementierung schicken?
Bitte schicken Sie diese per E-Mail an die Redaktion. -
Wird die Gültigkeit einer Implementierung vor dem eigentlichen Wettbewerb geprüft?
Der Wettbewerb selbst ist fortlaufend und startet nicht erst nach Abgabeschluss. In der Zeit wird natürlich geprüft, ob die Implementierung korrekt funktioniert und gegebenenfalls Rückmeldung an den Autor gegeben. Es werden aber keine Hinweise gegeben, ob eine andere KI besser oder schlechter ist. -
Gibt es eine Webseite für den Wettbewerb, wo man die Regeln nochmal nachlesen kann? Oder vielleicht ein Forum oder ein Wiki zum Diskutieren?
Die Webseite findet man unter diesem Link. Ein Forum oder Wiki wird hierfür aber nicht eringerichtet, da der Aufwand zu hoch ist. -
Ich glaube, ich habe einen kleinen Fehler in Eurer Schnittstellenspezifikation aufgetan.
In der Tat ist beim Herausschreiben der Spielerinformationenplayer.datein Dreher aufgetreten, sodass die Zeilen für gelbe und grüne Steine vertauscht wurden. -
Steht während des Spiels die spiefeld.dat mit den 10000 Zeilen zur Verfügung bzw. darf die KI sie lesen?
Nein, es stehen nur die kleinen 10x10-Spielfelder zur Verfügung. -
Kann es passieren, dass man ein Spielfeld (10x10) vorgesetzt bekommt, bei dem es keine gültige Tauschmöglichkeit gibt?
Theoretisch ja. Es wird inzwischen aber nach jedem Zug überprüft, ob es noch tauschbare Steine gibt. Falls nicht, werden die untersten Zeilen so lange entfernt, bis wieder ein spielbares Feld entsteht. -
Kann es passieren, dass zwei KIs solange spielen, dass die nachrückenden 9900 Zeilen des vorberechneten Spielfeldes nicht ausreichen?
Ja, das kann passieren. In dem Fall bricht das Spiel ab und der Sieger wird danach gekürt, wer noch die meisten Lebenspunkte übrig hat. -
Die Gamelogik ruft ja
fm-ai1.binundfm-ai2.binauf. Können das auch Shell-Skripte sein, die dann die eigentliche KI in Sprache XYZ aufrufen?
Selbstverständlich. Ein Skript für die Referenz-KI kann zum Beispiel so aussehen:
#!/bin/bash
fm-ai/fm-ai.bin
exit $?
und wird alsfm-ai1.binabgespeichert. Die Ausführrechte (mitchmod +x fm-ai1.bin) natürlich nicht vergessen! -
Darf eine KI die gegnerische KI austauschen oder das Spielfeld verändern?
Nein, dies wäre kein faires Vorgehen und wird von uns durch Schreibsperren zusätzlich unterbunden. -
Gibt es eine Möglichkeit, manuell gegen eine KI zu spielen, um diese zu testen?
Ja, hier hilft wieder ein kleines Bash-Skript:
#!/bin/bash
echo "Geben Sie die zu tauschenden Felder ein (der Art \"0 2 0 3\"):"
read EINGABE
echo $EINGABE > result.dat
exit $?
Dieses speichert man dan dann z.B. direkt als zweite KIfm-ai2.binab und macht die Datei ausführbar.
Daneben hat ein Leser eine GUI in Java programmiert, die man natürlich nutzen kann. -
Was passiert, wenn die KI eine ungültige Tauschkombination abgibt?
In dem Fall verliert derjenige Spieler fünf Lebens- bzw. Schildpunkte und ist nicht erneut an der Reihe. -
Können pro Teilnehmer mehrere KIs in den Wettbewerb gehen?
Nein, aber das eingereichte Programm kann mehrfach verbessert werden. -
Wann ist Abgabeschluss?
Am 10. Mai 2009. Sollte genügend Interesse bestehen, wird der Stichtag um zwei Wochen nach hinten verschoben. -
Werden die KIs veröffentlicht?
Ja, es werden alle KIs auf den Server hochgeladen und je nachdem wie viele es sind, auch alle vom jeweiligen Autor im Magazin kurz beschrieben. -
Eine Fünfergruppe an Steinen gibt nicht automatisch einen weiteren Zug pro Runde wie bei Puzzle-Quest, oder?
Nein, wir wollten das Spiel nicht zu komplex gestalten. -
Wie gestaltet sich der Wettkampf? Erprobt Ihr die Skripte und Programme im KO-Verfahren?
Nein, jede KI muss mit mehreren Beispielfeldern gegen alle anderen KIs antreten. Daraus wird ermittelt, wer die meisten Spiele gewonnen hat. Ein KO-Verfahren wäre zu selektiv. -
Darf eine KI die jeweils andere ausführen?
Nein, denn wenn beide KIs das machen, gibt es eine schöne Endlosschleife. Es ist aber natürlich erlaubt, aus dem vorherigen Zug des Gegners (Veränderung des Spielfeldes) dessen Taktik abzuleiten. -
Ist "1. Runde gewonnen, 2. verloren" immer ein Unentschieden?
Es ist noch nicht entschieden, ob ein Sieg/Niederlage-Spiel zu einem Unentschieden führt. Falls ja, ist auch noch nicht bestimmt, wie die Wertung dann aussehen wird. -
Wenn man 16 rote Steine ergattert hat, wird Schaden verursacht und der Wert fällt auf 0 oder auf 1?
Auf 1. Erhaltene Steine gehen nicht verloren. -
Wie wird der eigentliche Wettbewerb gestartet?
Hier helfen ein paar Bash-Befehle:
# Felder erstellen
for (( I=1; $I# Felder abarbeiten
( date && ( for (( I=1; $I results
Das Datum wird eingepflegt, um später auch die Dauer eines kompletten Laufs über
egrep CEST results
auszugeben. (Subtrahieren der Zeiten muss man selbst.)
Um dieresults-Datei zu analysieren, hilft ein weiteres Bash-Skript:
#!/bin/bash
let LINECOUNTER=0
let S=0
let U=0
let N=0
for LINE in `egrep "dead" $1` ; do
if [ $LINE == "1" -o $LINE == "2" ] ; then
let LINECOUNTER=$LINECOUNTER+1
let RESULT=$LINECOUNTER%2
if [ $RESULT -eq 1 ] ; then
let LOOSER=$LINE
else
if [ $LOOSER == $LINE -a $LOOSER == "1" ] ; then
let N=$N+1
elif [ $LOOSER == $LINE -a $LOOSER == "2" ] ; then
let S=$S+1
else
let U=$U+1
fi
fi
fi
done
echo $S " : " $U " : " $N
Dieses ruft man z.B. per./check resultsauf. -
Wenn ein Stein sowohl horizontal als auch vertikal in eine Dreierreihe bzw. -spalte passt, wird die Reihe oder die Spalte bevorzugt?
Weder noch. Sowohl die Reihe als auch die Spalte werden gleichzeitig entfernt und gewertet. Das bedeutet, dass der Stein zweifach gewertet wird. -
Darf eine KI eine Logdatei führen, um zu "erkennen", wie die gegnerische KI arbeitet?
Gerne sogar. Solche selbstlernenden KIs sind im Wettbewerb sicher selten und sorgen für Abwechslung. -
Wenn zwei KIs gegenseitig etwa gleich stark sind und nur Unentschieden spielen, werden dann andere Kämpfe zum Ermitteln der besseren KI genommen?
Jede KI muss gegen jede andere KI antreten. Daraus werden Punkte für jedes gewonnene und unentschieden ausgegangene Spiel errechnet, die dann zu einer Abschlussplatzierung führen (siehe oben). -
Gibt es nach dem Einsenden einer KI Hinweise, wie man gegen die anderen KIs abschneidet?
Nein. Es wird nur das Spielergebnis auf den 100 Wettbewerbsfeldern gegen die Referenz-KI an den Autor weitergegeben. Natürlich wird aber auf Programmierfehler (falsche Züge etc.) hingewiesen. -
Darf ein Zug der KI wirklich eine Minute brauchen?
Nein, bitte nicht. Ein realistischer Maximalwert sind 20 Sekunden für ein ganzes Spiel. Das bedeutet, dass ein Wettbewerbslauf gegen eine andere KI circa eine Stunde dauert, was mehr als genug ist, schließlich soll auch noch gegen andere KIs gespielt werden.
Die oben gelisteten Fehler wurden in einer neuen Version der Spielmechanik behoben bzw. wurde durch neue Ausgaben während des Spiels für mehr Transparenz gesorgt. Die Dateien liegen wie bisher im FTP-Verzeichnis: Download per FTP oder per HTTP.
Bitte zögern Sie nicht, weitere Fragen zu stellen oder auf Fehler hinzuweisen, damit wir diese umgehend ausbessern können.
PS: Diese Nachricht wird ggf. im Laufe des Monats um weitere Einträge erweitert.