Zitat Zitat von Phönix Tear Beitrag anzeigen
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...

Nja, dine Ausführungen beschreiben zwei KI's die beide mehr oder minder das gleicht tun und somit praktisch, im Rahmen dieses Contest, "perfekt" wären.

Aber die KI kann Fehler machen, und darauf wird es hinauslaufen. Viele, können das von dir beschriebene Szenario eventuell auch gar nicht Scripten, manche schaffen vielleicht sogar eine KI, die in er Lage wäre die KI die du beschrieben hast zu einem Fehler zu verleiten damit man den gegnerischen Roboter treffen kann.

Im gesetzten Falle das Roboter 2 dem ersten Anfangs nur ausweicht um auf eine gute Chance zum kontern zu warten, liese sich dieser sicher relativ schnell in eine Ecke drängen aus welcher er sich dem angegebenem Schussradius nicht so schnell befreien kann, ohne gleich mehrfach getroffen zu werden, und damit wäre der Kampf schon vorbei.

Also eine Herreusforderung besteht schon. Verschiedene Waffenaerten und Aktionspunkte wären natürlich auch schön. Was die Sache allerdings vereinfachen würde, wenn jeder Spieler beispielsweiße 3 Roboter hätte mit jeweils 3 Trefferpunkten, und man das ganze als eine Art Sideview KS bauen würde. Ergo, rundenbasiert. Der Aufwand steigt dann zwar eine KI zu bauen die 3 Roboter aufeinander abstimmt, aber der Taktik gehalt ebenso und es wird sicherlich einfacher zu Scripten. Ebenso lässt sich weniger vorraussehen wie der Gegner vorgehen wird. Denn bei einem 1on1, werden beide im Endeffekt das selbe versuchen: Ausweichen->Gegner austricksen->Schießen und treffen.