Zitat von Phönix Tear
Ich muss mich da glaube ich Dhan anschließen. So wie ich das sehe wären die Kämpfe (selbst mit nur einem Leben) bei einer einfach gestrickten KI vieeel zu einfach, sodass sie evtl niemals beendet werden würden.
Stellen wir uns die einfachste Möglichkeit vor:
Roboter 1 berechnet, dass Roboter 2 in seinem Schussradius ist. Er feuert. Roboter 2 registriert, dass Roboter 1 geschossen hat. Er weiß also nun, dass Roboter 1 mit hoher Wahrscheinlichkeit genau auf sein Feld schießt. Als reaktion bewegt er sich einen Schritt in die Richtung, in der kein Hindernis steht. (natürlich weg vom Schuss. Wenn der Schuss von vorne kommt würde er sich logischerweise nicht nach hinten bewegen ^^°.) Sind in beiden Richtungen Hindernisse wird der Abstand zum Schuss berechnet, und überprüft ob die Zeit reicht um 2 Schritte zu gehen, die Hindernisse also zu umlaufen. *Schwups* ist Roboter 2 ausgewichen. Nun bringt sich Roboter 1 erneut in Stellung und feuert wieder, Roboter 2 wiederhohlt seine Prozedur. Laaanweilig xD.
Gut, nun kennt man diese Eigenschaft, also versucht man Roboter 1 zu verbessern. Lassen wir ihn 3 Schuss der Reihe nach auf alle Felder um Roboter 2 abfeuern. Dieser kann sich nun nicht mehr sicher sein, welche Felder bedroht sind. Er versucht also gleich 2 oder mehr Felder auszuweichen. Da die Schüsse seines Feindes vergleichsweise langsam sind, sollte er dies mit genügend Abstand auch gut schaffen. Als Ergänzung baut man also am besten noch eine Abfrage ein, die erreichen soll, dass der eigene Roboter immer einen gebührenden Abstand einhält.
Schön, was kann man jetzt noch einbauen... Roboter 2 muss auch schießen können (ich gehe hier mal davon aus, dass Roboter 2 der eigene, Roboter 1 der von jemand anderem ist, von dem man ausgeht, das er spezielle Fähigkeiten hat, welche man kontern will). Da die Schüsse nur linear fliegen dürfen, hat man kaum eine andere Möglichkeit, also genau so wie Roboter 1 zu reagieren. Man schießt drei Schüsse auf die Felder um den Roboter ab. Natürlich könne man auch darauf hoffen das der Roboter in die richtige Richtung ausweicht, und alle auf eine Seite abschießen, sodass der Feind 4 Schritte machen müsste, um auszuweichen. Evtl, hat dieser dann sogar eine Abfrage, welche ihn hinter einem Hindernis stehen lässt, sodass er gar nicht getroffen wird.
Tja, so beballern sich beide Roboter, ohne das einer von ihnen getroffen wird. Und wenn, dann nur weil gerade kein Hindernis in Reichweite war, oder weil sie sich so genähert haben, das ein Ausweichen unmöglich ist. Dann gewinnt aber wieder der, der zuerst geschossen hat, bzw. ein Hindernis zum blocken hatte.
So gesehen ist ein KI Contest zwar eine nette Idee, hat aber für den großen Aufwand wenig Ergebnis. Wenn es doch noch sehr viel mehr Möglichkeiten geben sollte die KI mit diesen Vorgaben auszuschmücken bin ich gerne Bereit meine Meinung zu ändern.
Trotzdem bin ich momentan der Auffassung, dass die Roboter mehr können sollten, um einen guten Kampf zu gewährleisten. Verschiedene Waffen wären z.B. nett, die so etwas wie Mana verbrauchen, welches sich langsam wieder auflädt. So muss der Roboter entscheiden, wann er welche Waffe verwendet.
Oder gleich Aktionspunkte, um die Taktik zu erhöhen. Eine Bewegung kostet 10, ein normaler Angriff 20 und dann je nach stärke der anderen Waffen kostet die Aktion immer mehr. Außerdem Regeneriert der Roboter pro Sekunde z.B. 5 Aktionspunkte (100 wären dann Maximum).
Als Extrawaffen kämen dann Abprallgeschosse (schwer zu machen ^^°), Granaten (Flächenschaden und evtl überwinden von Hindernissen), Minen (maximal 1ne, die dann aber auch mit Flächenschaden), Zielsuchraketen (immer genau auf Ziel, wenn ein Hinderniss kommt, explodieren sie eben) und vielleicht ein kleines Spezial wie eine Druckwelle in Frage (macht keinen Schaden, hält aber den Gegner auf Abstand). Natürlich könnte man diese Liste beliebig erweitern, sollte es aber nicht übertreiben.
Dies würde imo die Kämpfe sehr viel interessanter machen. Problem dabei ist natürlich der Skripttechnische Aufwand. Auch hier könnte man wieder für alles eine Vorausberechnung einbauen, jedoch ließen sich die meisten davon wieder Kontern, sodass sich etwas ähnliches wie eine Endlosschleiffe ergibt. Irgendwann gibt dann einfach jeder Skripter auf und entscheidet sich, eine grundlegende "Taktik" einzubauen, nach der sich der Roboter verhält. Und diese Taktik entscheidet dann letztendlich wer gewinnt...
Ist dann aber wirklich schwer zu machen ^^°.
mfg
Phönix Tear
Edit:
Mit der Einstellung der Schussart könnte man ja auch wieder sehr leicht Cheaten und den eigenen Roboter einlesen lassen, wie der Feindliche Schuss fliegen wird. Dann sollte es noch besser möglich sein auszuweichen. Das größte Problem wird dann wohl die Bewegung des Roboters bleiben...
...