Regeln für den „AI Fight“ Wettbewerb

  • Schönen guten Tag Community! :)
    Ich freue mich dass sich (aus meine Ansicht heraus) genug Interessenten gefunden haben, sodass der Wettbewerb „AI Fight“ starten kann. Was wäre aber ein fairer Wettbewerb wenn nicht vorab einige Spielregeln festgelegt werden?

    Wichtig: Bitte benutzt immer die aktuellste AutoIt Stable.


    Ziel des AI Fight
    Es geht darum für verschiedene Spiele (wofür entsprechende Umgebungen bereit gestellt werden) sog. künstliche Intelligenzen (eng.: Artificial Intelligence) zu schreiben. Die einzelnen AI's treten gegeneinander an um die beste AI zu ermitteln und zu krönen. Im Vordergrund steht natürlich der Spaß am Programmieren. Dadurch versteht es sich natürlich von selber dass Fairness groß geschrieben wird. Zu Gewinnen gibt es nichts, außer die neuen Erkenntnisse die aus dem Wettbewerb gewonnen werden können.


    Die Spiele
    Die einzelnen Spiele gehen in die verschiedensten Richtungen. Ich bin sicher dass für jeden was dabei sein wird. Grundsätzlich variiert die Schwierigkeit und Aufwendigkeit zum schreiben einer AI pro Spiel. Das hängt stark mit zusammen ob es sich eher um ein Strategie oder ein Würfel-/Kartenspiel handelt. Manche Spiele werden euch vielleicht bekannt vorkommen, ich kann leider unmöglich alles neu erfinden, jedoch bemühe ich mich auch Spiele zu entwerfen die es in dieser Form noch nicht gibt. Vielleicht klau ich hier und da mal eine Idee die ich mal im Netz gefunden habe. :D


    Die Spielumgebung
    Eine Spielumgebung wird (und muss logischerweise) von mir bereit gestellt werden. Zu der Spielumgebung gehört das eigentliche Spiel und ggf. die grafische Ausgabe der einzelnen Spielrunden. Beides werden als getrennte Skripte geliefert. Zu jedem bestrittenen Spiel wird eine Log-Datei geschrieben, die jede Entscheidung, Bewegung und jede Spielrunde dokumentiert. So dauert später das Testen sowie auswerten der einzelnen AI's nicht ganz so lange, da die grafische Ausgabe vom eigentlichen Spiel getrennt wurde. Die Log-Dateien können nämlich im 2ten mitgelieferten Skript abgerufen und abgespielt werden. So können die einzelnen Spielrunden Schritt für Schritt beobachtet werden. Später werden auch sämtliche Spielrunden die bei der Auswertung gespielt wurden mitgeliefert. Das hat den Sinn, dass jeder von euch nachprüfen kann dass ich keine Spieler bevorzuge und alles mit rechten Dingen zuläuft.


    Aufbau der AI
    Die komplette AI muss aus Funktionen bestehen. Ob ihr mir 10 *.au3 Files oder nur eine einzige liefert ist mir egal. Wichtig ist nur, dass kein Code selbständig ausgeführt wird. Einzige Ausnahme bildet hier das Registrieren eurer AI. Alle relevanten Spieldaten erhaltet ihr über die Parameter. Diese Werte könnt ihr beliebig auswerten. Alle möglichen Rückgabewerte (also die Aktionen eurer AI) werden als globale Konstanten definiert. Ich bitte darum die Konstanten zu nutzen für den Fall, dass ich Änderungen an der Spielumgebung vornehmen muss. Es könnte vorkommen dass sich Rückgabewerte verändern, damit ihr eure AI's nicht umschreiben müsst ist es einfacher die Konstanten zu nutzen. Die genauen Rückgabewerte sowie Parameter werden in den einzelnen Spielen beschrieben.

    Die zu registrierende Funktion könnt ihr euch selber aussuchen, wichtig ist dabei nur, dass die Anzahl der Parameter später stimmen. Die Funktion _AIFight_Register($hFunc, $sName, $bDB) welche die einzelnen AI's registriert wird in jedem Spiel gleich sein. In dem ersten Parameter übergibt ihr das Handle eurer Funktion (nicht als String, sondern wirklich als Funktionshandle), mit dem zweiten euer Benutzername hier im Forum. Mit dem dritten Parameter gibt ihr an ob eine Datenbank verwendet wird. Setzt den Aufruf einfach so ziemlich am Anfang eurer *.au3 Datei, sodass ich später nur noch die AI's inkludieren muss. Ein Beispiel:

    [autoit]

    _AIFight_Register(_MG_AI, 'Make-Grafik', True)

    [/autoit][autoit][/autoit][autoit]

    Func _MG_AI($vParam1, $vParam2, $vParam3)
    ; Irgendwelcher Code in der AI
    EndFunc

    [/autoit]


    Funktionsnamen, globale Variablen und deren Präfix
    Damit es später nicht zu Doppelverlegungen einzelner Funktionsnamen oder globalen Variablen gibt, ist das Präfix $AIFight_[...] für Variablen sowie _AIFight_[...]() für Funktionen reserviert. Alle die an dem Wettbewerb teilnehmen wollen (egal ob jetzt oder in naher Zukunft) haben ihren eigenen Präfix zu reservieren. Eine Liste mit allen reservierten Präfixen wird am Ende der Spielregeln ausgehängt. Wer einen Präfix reservieren möchte (oder ändern) schreibt mir bitte eine private Nachricht. Was Ihr danach für Bezeichnungen (also nach euren Präfix) wählt, ist mir so ziemlich egal. Es dient nur dazu um zu verhindern, dass meine SciTE einen Error nach dem anderen anzeigt.


    Allgemeine Spielregeln
    Sofern in den Beschreibungen der einzelnen Spiele nichts anderes festgelegt wird, sind folgende Regeln gültig:

    > Programmiert wird ausschließlich in AutoIt. Jede eingereichte AI muss selber verfasst sein, darf jedoch externe UDF's mitliefern und auch nutzen. Was nicht gewünscht ist sind DLL's in der die eigentliche AI ausgelagert wurde. Genauso verhält es sich mit Assembler. Bleibt fair und schreibt die eigentliche Logik eurer AI in AutoIt.

    > Jede AI hat nur eine begrenzte Ausführungszeit zur Verfügung. Dabei werden alle Runden gemessen und der Durchschnittswert berechnet. Sollte dieser über 3 Sekunden liegen (was schon ein großer Spielraum ist) so wird der User disqualifiziert. Er hat jedoch die Möglichkeit seine AI innerhalb von 3 Tagen nachzubessern. Testet eure AI also regelmäßig vorab.

    > Manipulation der Spielereignisse außerhalb der vorgesehen Schnittstelle (also der registrierten Funktion und dessen Rückgabewert) ist ausdrücklich unerwünscht. Dies zeigt mir nur dass ihr keinen Sinn für Fairness und Sportsgeist habt.

    > Nach der Veröffentlichung der Spielregeln + Spielumgebung habt ihr 28 Tage Zeit (also 4 Wochen) um eure AI zu schreiben. Ich denke der Zeitraum ist hier groß genug gewählt. Je nach Spiel kann sich dieser auch noch vergrößern oder verlängern (sofern dies mehrere Teilnehmer wünschen).

    > Jede AI die in irgendeiner Weise einen Fehler enthält (wenn mir die SciTE ein Error entgegen spuckt oder ein falscher Wert zurück gegeben wird) wird disqualifiziert. Auch hier habt ihr die Möglichkeit innerhalb von 3 Tagen eure AI nachzubessern.

    > Ihr könnt gerne mehrere AI's einsenden, jedoch nimmt nur die zuletzt eingesendete AI am Wettbewerb teil. Eure AI könnt ihr mir als private Nachricht zukommen lassen. Bitte nutzt als Betreff „AI Fight – Einsendung“ damit ich auch weiß dass es sich um eine Einsendung handelt.

    Wie man sieht gibt es nicht viele Spielregeln, das wichtigste ist einfach nur dass ihr Spaß habt und Fair bleibt. Wer sich dies beherzigt wird keine Probleme haben. Bitte testet eure AI's vor der eigentlichen Abgabe selber ausgiebig. Alle Einsendungen werden natürlich von mir auch nochmal getestet. Falls irgendwas nicht stimmen sollte schicke ich euch für's Debuggen die Log-Datei sowie die Fehlermeldung zu. Ihr könnt eure AI dann bis zum Abgabetermin natürlich dann verbessern.


    Datenbanken
    Grundsätzlich sind Datenbanken welche vorausberechnete Spielzüge enthalten erlaubt. Nach gründlichen Überlegungen bin ich zu dem Schluss gekommen dass eine Größe der Datenbanken von 1'048'576 Byte (1 MB) mehr als ausreichend ist. Wer ein wenig platzsparend ist und sich was einfallen lässt wird damit keine Probleme haben. Dies gilt als Maximalgrenze und darf nicht mal um einen einzigen Byte überschritten werden. Außerdem darf die Datenbank auch nur aus einer einzigen Datei bestehen (damit ich die einzelnen Dateigrößen später nicht zusammenrechnen muss). Die Datenbank direkt im Skript zu hinterlegen ist unerwünscht. Als Dateiname ist der Präfix DB_ zu wählen und danach euren AutoIt Username. Beispiel: DB_ShitDown (Ohne Dateiendung)

    Hinweis: Wer temporär Daten abspeichern möchte (während der Laufzeit) kann dies gerne tun. Hinterher müssen diese Daten aber wieder von eurer KI selbständig gelöscht werden. Dafür erinnere ich einfach mal an die Funktion OnAutoItExitRegister(). Hier liegt kein Limit für die Dateigröße vor, da es ja eure 3 Sekunden sind die Ihr euch einteilen müsst. Alle temporären Daten müssen als Präfix euren Variablenpräfix nutzen. Welche Dateiendung Ihr hierfür nimmt ist mir in diesem Fall wurscht. Beispiel: $MG_TempFile.txt

    Wer die vorgegebene Datenbankgröße überschreitet (auch während der Laufzeit) wird disqualifiziert und hat 3 Tage Zeit zur Nachbesserung.


    Teilnehmerzahl
    Die Anzahl der AI's die gegeneinander antreten ist in jedem Spiel unterschiedlich. Es ist auch möglich dass AI's für eine einzelne Runde im Team spielen. Bitte beachtet dies bei der Programmierung. Folgende Kombinationen sind möglich:

    Code
    2 Spieler:
    	  1 vs 1   → Hier treten die AI's einfach nur gegeneinander an.
    4 Spieler:
    	All vs All → Alle gegen Alle, der Beste gewinnt.
    	  2 vs 2   → 2 Spieler jeweils in einem Team.
    	  3 vs 1   → 1 Spieler muss sich gleich gegen 3 AI's behaupten.

    Ich persönlich werde am Wettbewerb nur teilnehmen falls dass von der Teilnehmerzahl nicht ganz passt. Wie nachher der eigentliche Wettbewerb abläuft (also wer gegen wen spielt) kann ich vorher schlecht vorhersagen. Es hängt ja immer von der Teilnehmerzahl ab, aus diesem Grund kann ich mich da nur nach allen Einsendungen festlegen. Jedoch sollte es aus den Spielregeln erkennbar sein welche der oberen genannten Kombinationen Verwendung finden könnten. Aus diesem Grund müsst ihr eure AI schon etwas flexibel gestalten.


    Newcomer Angebot
    Da ich weiß dass nicht jeder in der Lage ist eben mal so eine AI zu schreiben, gibt es von mir ein spezielles Angebot. Jeder der es einfach nicht schafft (egal ob jetzt Ansatzpunkte fehlen oder eben die nötigen Sprachkenntnisse) kann sich bei mir per PN melden. Ich helfe dann jeden in einen angemessenen Rahmen. Meine Hilfestellung könnte z.B. so aussehen, dass ich auf bestimmte Internetadressen verweise die das Thema behandeln oder euch Ansatzpunkte liefere. Die eigentliche AI müsst ihr natürlich selber schreiben. Ich möchte euch lediglich dabei beim Lernen unterstützen. Da ich natürlich nicht in euren Kopf rein gucken kann, setze ich einfach auf die Ehrlichkeit der User. Nutzt dieses Angebot bitte nicht aus, versucht es erst einmal selber! :)


    Ich denke die Spielregeln sind sehr human gehalten. Natürlich freue ich mich wenn gleich beim ersten Spiel viele Teilnehmer mitmachen. Unabhängig davon wie viele Teilnehmer mitmachen wird es definitiv 3 Wettbewerbsspiele geben. Danach schaue ich ob es Sinn macht es fortzuführen oder eben nicht. Natürlich hoffe ich auf Ersteres. Falls noch Fragen da sind oder Punkte ungeklärt, so hinterlasst mir einfach eine Antwort hier im Thread. Ansonsten findet ihr hier die Liste mit allen reservierten Präfixen:


    User Präfix
    ShitDown $MG_[...] & _MG_[...]()
    Lottich $Lo_[...] & _Lo_[...]()
    General Kaboom $Shelbot_[...] & _Shelbot_[...]()
    Kanashius $KanAI_[...] & _KanAI_[...]()
    draien $Drabot_[...] & _Drabot_[...]()
    chip $chip_[...] & _chip_[...]()
    Mars $M_[...] & _M_[...]()
    GtaSpider $spider[...] & _spider[...]()
    teamnoobPDB $pdb_[...] & _pdb_[...]()

    Der erste Wettbewerb wird voraussichtlich Mitte Februar starten. Vielleicht auch schon früher, mal schauen. In der Zwischenzeit könnt ihr euch mit mir über die Spielregeln diskutieren. :)
    LG. Make

    19 Mal editiert, zuletzt von Yjuq (19. Februar 2015 um 13:07)

  • Ich würde gerne schon mal $Shelbot_[...] und _Shelbot_[...]() reservieren.
    Beim ersten Durchlauf kann ich aber vielleicht noch gar nicht dabei sein (Abschlussarbeit und so n Zeugs).

    Bild1: Ich beim debuggen

  • Für mich bitte $KanAI_[...] _ KanAI_[...]() :). Ich werd wohl auch erst ab 11.02 mitmachen... Dann ist meine Klausurenphase vorbei.Aber ich hätte dann ja noch mehr als ne Woche, daher klappt es hoffentlich schon beim ersten mal :D

    EDIT:
    Ich hab grad gelesen, dass es vermutlich erst Mitte Februar losgeht. Daher freu ich mich schon drauf :)

  • Regeln finde ich sehr gut ausgearbeitet und werde das Newcomer Angebot definitive in Anspruch nehmen müssen :D
    Reserviere mir mal $Drabot_[...] und _Drabot_[...]()

    Hab noch ein Vorschlag:
    Man könnte die Spielrunden und die Umgebung aufzeichnen/streamen und ein kleines Event daraus machen :)

  • Zitat von General Kaboom

    Beim ersten Durchlauf kann ich aber vielleicht noch gar nicht dabei sein (Abschlussarbeit und so n Zeugs).

    Nicht schlimm, wenn es zeitlich nicht passt dann geht es eben nicht. Da aber generell sowieso 3 Wettbewerbe geplant sind um nach der Beteiligung zu schauen, kannst du später natürlich auch noch mitmachen. Jedes Spiel wird für sich selber gewertet, eine Gesamtpunktzahl aus allen Spielen wird es nicht geben. ^^


    €dit:
    @draien >> Wie meinst du das mit „aufzeichnen“? Zu jeder Spielrunde wird eine Log-Datei mit allen Spielaktionen der AI's erstellt. Diese können dann in der mitgelieferten GUI abgespielt werden um die absolvierten Runden der Auswertung nachzuprüfen bzw. anzusehen. :)

    2 Mal editiert, zuletzt von Yjuq (22. Januar 2015 um 13:43)

  • draien >> Wie meinst du das mit „aufzeichnen“? Zu jeder Spielrunde wird eine Log-Datei mit allen Spielaktionen der AI's erstellt. Diese können dann in der mitgelieferten GUI abgespielt werden um die absolvierten Runden der Auswertung nachzuprüfen bzw. anzusehen.

    Achso okay, dann habe ich das wohl falsch verstanden gehabt. Passt alles soweit :)

  • Reserviere für mich mal $chip_[...] & _chip_[...]().


    Edit: Kurze Frage, darf die AI auf vorab berechnete Spielzüge welche z.B. in ein sqlite liegen zurückgreifen?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Gute Frage, daran habe ich noch nicht gedacht (obwohl das viele AI's benutzen um einfach Rechenzeit zu sparen). Prinzipiell würde ich sagen dass das in Ordnung geht. Jedoch muss ich dass auch hier limitieren. Ich habe wirklich keine Lust mit meiner Baumbusleitung später 50GB große Datenbanken hinunter zu laden. ^^

    Ich überlege mir da mal noch eine allgemeine Grenze. Je nach Spiel kann auch diese dann wieder variieren.

  • (obwohl das viele AI's benutzen um einfach Rechenzeit zu sparen).

    Genau deshalb die Frage ;).

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Folgender Abschnitt wurde den Spielregeln hinzugefügt:


    Datenbanken
    Grundsätzlich sind Datenbanken welche vorausberechnete Spielzüge enthalten erlaubt. Nach gründlichen Überlegungen bin ich zu dem Schluss gekommen dass eine Größe der Datenbanken von 1'048'576 Byte (1 MB) mehr als ausreichend ist. Wer ein wenig platzsparend ist und sich was einfallen lässt wird damit keine Probleme haben. Dies gilt als Maximalgrenze und darf nicht mal um einen einzigen Byte überschritten werden. Außerdem darf die Datenbank auch nur aus einer einzigen Datei bestehen (damit ich die einzelnen Dateigrößen später nicht zusammenrechnen muss). Die Datenbank direkt im Skript zu hinterlegen ist unerwünscht. Als Dateiname ist der Präfix DB_ zu wählen und danach euren AutoIt Username. Beispiel: DB_ShitDown (Ohne Dateiendung)

    Hinweis: Wer temporär Daten abspeichern möchte (während der Laufzeit) kann dies gerne tun. Hinterher müssen diese Daten aber wieder von eurer KI selbständig gelöscht werden. Dafür erinnere ich einfach mal an die Funktion OnAutoItExitRegister(). Hier liegt kein Limit für die Dateigröße vor, da es ja eure 3 Sekunden sind die Ihr euch einteilen müsst. Alle temporären Daten müssen als Präfix euren Variablenpräfix nutzen. Welche Dateiendung Ihr hierfür nimmt ist mir in diesem Fall wurscht. Beispiel: $MG_TempFile.txt

    Wer die vorgegebene Datenbankgröße überschreitet (auch während der Laufzeit) wird disqualifiziert und hat 3 Tage Zeit zur Nachbesserung.


    Achtung, der Funktion _AIFight_Register() wurde ein dritter Parameter hinzugefügt mit dem angegeben werden muss, ob eine Datenbank genutzt wird. Wird zwar später in der Wertung unberücksichtigt bleiben, jedoch weiß mein Skript dann dass es die Dateigröße eurer Datenbank ständig überwachen muss. Ihr könnt nämlich den Inhalt der Datenbank auch während der Laufzeit ändern wenn ihr wollt.

    3 Mal editiert, zuletzt von Yjuq (26. Januar 2015 um 22:02)

  • Du stehst auf meiner Liste! :D
    Passt schon, jeder wie er/sie Zeit hat. Finde es aber klasse dass es schon vorab so viele Melden.
    Für den ersten Wettbewerb wird es auch was einfaches (aus dem klassischen Bereich) geben.
    Ein Singleplayer Spiel wird zum Multiplayer Spiel umfunktioniert.
    Verschiedene Umsetzungen kamen im Forum auch schon öfter's vor. ^^

    Zuviel mag ich aber noch nicht verraten.

    • Offizieller Beitrag

    Hey Make,

    Sehr geil das du das durchziehst! Ich habe dir ja geschrieben, dass ich selbst bei der SoftwareChallenge sowohl als Teilnehmer als auch als Veranstalter mitgemacht habe, deswegen würde ich dir gerne noch ein Tipp geben: Ich würde den Server nicht als Include Datei benutzten sondern ich würde den Server eigenständig schreiben und ihn per TCP/IP ansprechbar machen. Dann gibst du ne kleine UDF mit, die die TCP Befehle schon enthalten. Wir benutzten dafür ein einfaches XML Protokoll. Das hat einfach den Vorteil, dass die User nachher einfach nur ihre Scripte abgeben müssen und du kein Wirrwarr hast mit doppelten Funktionsaufrufen.

    Wenn du willst kann ich dir da ein wenig helfen, wenn du Hilfe brauchst, außerdem kann ich dir gern per PM mal den AutoIt Sourcecode meiner damaligen Clients zu schicken.

    Gruß,
    Spider

  • Zuerst wollte ich auch alles über TCP steuern, aber da war mir der Aufwand noch wieder zu hoch. Erst mal schauen wie die ersten 3 Wettbewerbe laufen. Danach kann man nochmal über Regeln und Umsetzung diskutieren. Ich denke das System mit den Präfixen wird wohl ein Chaos vermeiden. Solange sich jeder daran hält habe ich bei der Auswertung keine Schwierigkeiten. Aber ich komme später vielleicht nochmal drauf zurück! Danke ^^

  • Noch zwei Fragen:

    Sind Abfragen ins Internet erlaubt? Und wenn ja wie berücksichtigst du das in deiner 3 Sekundenregel, da man ja nicht weiß wie sich deine "Bambusleitung" verhält.

    Zu der Datenbankgröße, heißt das also wenn ich eine gepackte (zip, ect.) Datei als Datenbankdatei mitliefere welche die 1 MB Größe nicht überschreitet, diese zur Scriptlaufzeit entpackt und danach das entpackte wieder gelöscht wird ist dies Regelkonform?

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ob du die Datenbank komprimierst und diese nochmals als lokale Datei entpackst ist deine Sache. Ich überprüfe lediglich die Dateigröße der Datei, welche die Datenbank enthält. Jedoch wird das eigentliche entpacken der Datenbank natürlich auch von deinen 3 Sekunden dazugerechnet. Pass auf dass du diese dabei dann nicht überschreitest. ^^

    Achja, ich erinnere nochmal: Für die Datenbank eine Datei ohne Dateiendung. :)

    Du kannst gerne Internet abfragen nutzen, allerdings werde ich bei der Ausführung das Internet einfach abschalten. Bringt dir also nicht sonderlich viel. :P
    >> Ich will nicht dass anderweitig von Irgendwo Daten abgerufen werden können, als von das was ihr mir als Einsendung schickt. Alles was ihr benötigt muss auch in der Einsendung direkt enthalten sein. Ich hoffe dass ich auch das nun klären konnte. :)

    Einmal editiert, zuletzt von Yjuq (27. Januar 2015 um 11:50)


  • Du kannst gerne Internet abfragen nutzen, allerdings werde ich bei der Ausführung das Internet einfach abschalten. Bringt dir also nicht sonderlich viel. :P
    >> Ich will nicht dass anderweitig von Irgendwo Daten abgerufen werden können, als von das was ihr mir als Einsendung schickt. Alles was ihr benötigt muss auch in der Einsendung direkt enthalten sein.

    *g* schade, dann ist das Auslagern der Datenbank in eine Online-mysql gestorben :D

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Zitat

    Die einzelnen AI's treten gegeneinander an um die beste AI zu ermitteln und zu krönen.


    Frage dazu: geht es nun darum die KI zu schreiben, welche das Spiel gewinnt oder jene, die am besten auf bestimmte Situationen reagiert (oder vielleicht beides irgendwie Punktemässig)? Wichtiger Unterschied, schliesslich kann auch eine random KI mal Glück haben und zufällig gewinnen.

    Bild1: Ich beim debuggen

  • Da geb ich General Kaboom recht. Das beste wäre denk ich wenn man die KIs so lange gegeneinander antreten lässt bis eine drei mal gewonnen hat. Sprich im "schlimmsten" Fall sind es dann fünf im schnellsten Fall drei Matches.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.


  • Frage dazu: geht es nun darum die KI zu schreiben, welche das Spiel gewinnt oder jene, die am besten auf bestimmte Situationen reagiert (oder vielleicht beides irgendwie Punktemässig)? Wichtiger Unterschied, schliesslich kann auch eine random KI mal Glück haben und zufällig gewinnen.

    Das hab ich mich auch schon gefragt. Meinem Verständnis nach sollte es eher ein Wettbewerb sein, in dem die KI lernt, das spiel gegen einen vorgefertigten Gegner zu gewinnen. Gewinner wäre derjenige, der die wenigsten Durchläufe/Generationen benötigt zum gewinnen :P .