top of page

Artificial Intelligence

In diesem Abschnitt geht es um den Hauptbestandteil des Projekts, dem Erstellen der beschleunigung.m-Datei, in der wir letztendlich den Beschleunigungsvektor unseres Spaceballs, und damit sein Spielverhalten, die Taktik und seine Fähigkeiten festlegen. Diese künstliche Intelligenz tritt dann im Januar gegen die Anderen in einem Turnier an aus dem sich eine Rangliste ergibt, die maßgeblich in die Bewertung einfließt. Hier könnt ihr also erfahren welche großen Baustellen wir hatten und wie wir an diese Teile herangegangen sind.

Tanken

Das Einsammeln der Tankstellen stellt einen extrem Wichtigen Teil im gesamten Programm dar, denn wenn man hier schlechter ist als der Gegner bleibt einem nur noch das Verteidigen und Hoffen auf ein Unentschieden bzw. einen Fehler des Gegners. Das Ziel ist also mehr Tanken als der Gegner zu sammeln um ihn dann angreifen zu können.

​

Um eine möglichst effiziente Reihenfolge zu bestimmen, in der getankt werden soll, haben wir eine Matrix erstellt, die Informationen über alle Tankstellen enthält. Diese Werte werden jeweils mit einem Gütefaktor multipliziert und anschließend addiert, um sie dann zu sortieren und eine Reihenfolge zu erhalten.

​

Weitergehend wird geprüft, ob Tankstellen in einer Reihe liegen, sodass man nicht bremsen muss, wenn man die erste eingesammelt hat und generell definiert in welchen Fällen ein Bremsen notwendig wird.

Minenabwehr

Das Vermeiden bzw. geschickte und schnelle Umfahren der Minen ist besonders wichtig, da ansonsten auch eine noch so gute Auswahl der Tankreihenfolge nichts bringt. Außerdem erfolgt bei Kontakt mit der Mine sofort der Punktverlust.

​

Wir prüfen zunächst, ob auf dem Spielfeld Minen vorhanden sind, die in unserer aktuellen Geschwindigkeitsrichtung liegen bestimmt welche Mine den kleinsten Abstand zu uns hat. Als nächstes werden Tangenten an die Mine gelegt und der kürzere Weg berechnet. Grundsätzlich soll dieser Tangentenpunkt angesteuert werden, um danach freie Bahn zum eigentlichen Ziel zu haben. Ergänzt wird das durch ein Notprogramm, das den Spaceball abbremst, sobald ein Sicherheitsabstand unterschritten ist und eine Kollision droht.

Bandenabwehr

​Das Vermeiden von Banden stellt ebenfalls eine wichtige Funktion dar, weil es bei Berührung zum sofortigen Punktverlust kommt. Der Vorteil zu den Minen ist, dass sich die Banden nicht bewegen, ihre Position also nur einmal definiert werden muss. Wir berechnen für jede Bande, wenn wir uns in ihre Richtung bewegen, den Abstand. Sobald dieser einen gewissen Mindestabstand (Bremsweg + Puffer) unterschreitet bremsen wir ab. Ein besonderes Problem stellen dabei Ecken dar, denn hier treffen zwei Banden aufeinander. Tritt dieser Fall ein, so wird entlang der Spielfelddiagonalen in Richtung der Mitte beschleunigt um die Kollision zu vermeiden.

Angriff

Wenn man mehr Tanken eingesammelt hat als der Gegner kann man ihn angreifen und berühren um einen Punkt zu erzielen. Eine durchaus sinnvolle Möglichkeit ist die Zeit zu berechnen, die man selbst zur gegnerischen Position braucht, bzw. die neue gegnerische Position zu errechnen und diese dann anzusteuern. Setzt man das ordentlich um gibt es für den Gegner kein Entkommen. Da man auch angreifen kann, wenn noch Tanken vorhanden sind, man aber trotzdem schon mehr hat, kann man sich für diesen Fall auch etwas überlegen. Allerdings am besten nur, wenn der Gegner langsam und man selbst nah dran ist, da er ansonsten vielleicht doch noch die nächste Tanke einsammelt.

Verteidigung

Wenn man selber weniger Tanken gesammelt hat als der Gegner muss man so gut es geht verteidigen, sich nicht fangen lassen, um ein Unentschieden zu erzielen, oder den Gegner sogar in Banden oder Minen fliegen lassen um doch noch zu gewinnen.

​

Wir verfolgen den Ansatz immer genauso zu beschleunigen wie der Gegner und dazu noch eine Komponente zu verändern um immer etwas von ihm weg zu beschleunigen. Ergänzt wird das durch weitere Bedingungen. Befinden wir uns nämlich nahe einer Bande ist das Ziel parallel zu dieser abzuhauen, um dem Gegner nicht wieder entgegen zu kommen. Auch in Ecken haben wir dieses Grundprinzip genutzt und verschwinden immer parallel zu der Bande, von der der Gegner weiter entfernt ist. Da ein Angriff des Gegners auch stattfinden kann, wenn noch Tanken vorhanden sind sollte man auch für diesen Fall vorbereitet sein.

bottom of page