Künstliche Intelligenz im Kampfspiel Shadow Fight 3



Spieleentwickler stehen regelmäßig vor der Herausforderung, eine interessante KI zu erstellen. Dieser Prozess kann entweder relativ einfach oder äußerst komplex sein, abhängig von den Anforderungen des Projekts und den Zielen, die Sie verfolgen. Der leitende Spieledesigner von Banzai Games , Mikhail Dragovalovskiy, sprach über seine Erfahrungen bei der Arbeit an KI für das beliebte mobile Kampfspiel Shadow Fight 3.

Unterschied zwischen SF3 und den meisten Kampfspielen


Die Shadow Fight- Serie wurde sofort mit einer Reihe von Funktionen erstellt, die sie von vielen Kampfspielen unterscheiden:

  • Das Vorhandensein von Autoblocks. Wenn sich der Charakter einfach bewegt und nicht angreift, blockiert er automatisch jeden normalen Angriff des Feindes.
  • Langsameres Tempo und Animationen. Wetten Sie auf die taktische Komponente: Der Spieler muss Zeit haben, um zu verstehen, welche Art von Schlag der Feind verursacht und welchen Angriff er wählen muss, um erfolgreich Gegenangriffe auszuführen. Dies ermöglichte es uns, dem Spieler die Möglichkeit zu geben, Animationen zu betrachten, die wir versuchen, so schön und physisch wie möglich zu gestalten.
  • Ehrliche Kollisionen. Dies schafft sehr coole Situationen, in denen ein Charakter dem Angriff des zweiten auf wunderbare Weise ausweicht und als Reaktion darauf zuschlägt. Dank flüssiger Animationen schafft es der Spieler, alles zu berücksichtigen.
  • Schattenform. Wenn eine spezielle Skala gefüllt ist, kann der Spieler die Schattenform betreten und mehrere spektakuläre Tricks ausführen, die den Block des Gegners durchbrechen

Bild

KI in früheren Spielen der Serie


Wir haben bereits in unserem vorherigen Kampfspiel - Shadow Fight 2 - an KI gearbeitet, aber aufgrund des Übergangs zu 3D, des Auftretens von Kollisionen zwischen Spielern und der Hinzufügung einer Schattenform konnten wir nur einen Teil der KI-Logik übertragen, und der Rest musste neu erstellt werden.

Wo soll ich anfangen, an KI zu arbeiten?


Wenn Sie keinen Bot mit maschinellem Lernen erstellen, würde ich zwei Kapitänsansätze herausgreifen:

  1. Machen Sie einen schwachen Bot und stärken Sie ihn dann mit neuen Funktionen auf das gewünschte Niveau.
  2. Machen Sie einen unbesiegbaren Bot und schwächen Sie dann.

Die zweite Option klingt sehr romantisch: Es scheint, dass Sie schlauer als alle anderen sind und eine coole KI erstellen, die die Spieler verbiegt und dann die Komplexität des Bots gnädigerweise verringert. Aus entwicklungspolitischer Sicht kann dies bequemer sein, weil Sie können alle Funktionen des Bot-Verhaltens, die Sie benötigen, im Voraus überdenken und sich das endgültige Verhalten vollständig vorstellen.

Natürlich haben wir uns für diese Option entschieden, obwohl wir dann festgestellt haben, dass nicht alles so einfach ist: Mit unserer Balance aus Animationen, automatischen Blöcken und einer Vielzahl von Fähigkeiten finden Sie fast immer die notwendigen Taktiken und Missbräuche, mit denen Sie KI mit hohen Fähigkeiten besiegen können. Wir haben das nicht sofort verstanden, sondern nur, wenn wir die Winrate der Spieler in verschiedenen Phasen des Spiels richtig gemessen haben. Dies trotz der Tatsache, dass der Bot für viele Leute, gemessen an ihrem Feedback zum Spiel, wirklich unbesiegbar war.

Bild

Wie funktioniert unsere KI?


Auslöser oder Verhaltensregeln

  • Es basiert auf den Regeln, nach denen der Bot zufällige Aktionen ausführt. Wir nennen dieses System von Regelauslösern. Zum Beispiel:
  • Der Bot betrachtet die Entfernung zwischen sich und dem Spieler und wählt nur die Treffer aus, die er treffen kann, und liefert dann einen zufälligen Treffer aus diesen Treffern.
  • Der Bot spammt nicht mit Wurfwaffen;
  • Der Bot gerät mit den Wurfwaffen des Feindes in die Stirn und beginnt dann für einige Zeit garantiert auszuweichen;
  • Und eine Menge Dinge, die ein Bot tun sollte oder nicht ...

Wenn Sie einen solchen Bot gegen einen Anfänger mit gleichem Pumpniveau freigeben, hängt das Ergebnis von den Waffen ab, mit denen die Gegner bewaffnet sind. Wer schneller als Animation ist, wird gewinnen. Denn tatsächlich drücken beide alle Tasten, außer dass der Bot es etwas sinnvoller macht.

Bild

Entscheidungsfindung

Der logische Schritt zur Verbesserung der KI besteht darin, die Zufälligkeit zu verringern und ein Entscheidungssystem hinzuzufügen, das den Bot zum Sieg führt. Dazu müssen Sie verstehen, welche Entscheidungen in welchen Situationen richtig sind. Für den Kampf gibt es zwei Situationen, die ständig auftreten:

  1. Der Feind wartet;
  2. Der Feind greift an.

Es gibt auch zwei Lösungen:

  1. Müssen schlagen, wenn garantiert zu treffen;
  2. Sie müssen blocken, wenn sie Sie treffen, und Sie können nicht kontern.

Es stellt sich heraus, dass die KI für den Sieg feindliche Angriffe mit ihren Gegenangriffen unterbrechen oder blockieren muss, wenn sie sie nicht unterbrechen kann.

Bild

Wir haben zwei Gruppen von Entscheidungen getroffen, die der Bot trifft: eine - wenn der Feind steht, die andere - wenn der Feind angreift. Damit die KI genau weiß, was zu kontern ist, haben wir Kollisionstabellen erstellt.

Kollisionstabellen

Erinnern Sie sich, wie Doktor Strange alle möglichen Ergebnisse des Kampfes mit Thanos durchgesehen hat? In ähnlicher Weise funktionieren Kollisionstabellen folgendermaßen: Der Computer berechnet die Ergebnisse für jede angreifende Animation im Spiel in jeder möglichen Entfernung vor.

Wenn im Detail: Wir starten einen Schlag mit einem Schwert und gleichzeitig einen Schlag mit einem Katana, und dann schauen wir, wer wen schlagen wird. Wir machen dieses Verfahren für alle Schläge im Spiel, bei allen Entfernungen und mit Verzögerungen in einer anderen Anzahl von Frames (ich habe einen Schlag mit einem Schwert und den Feind durch N Frames gestartet - einen Schlag mit einem Katana). Alle Ergebnisse werden in Tabellen aufgezeichnet. Wir führen vor jedem Update ein ähnliches Verfahren durch und fügen die resultierenden Dateien nach einem schwierigen Komprimierungsalgorithmus in der fertigen Form in den Build ein, um die Ressourcen des Geräts zur Laufzeit nicht zu verbrauchen. Der Spieler im Client hat bereits eine Liste aller Ergebnisse, was bedeutet, dass die KI weiß, welcher Treffer einem Treffer des Spielers in einer bestimmten Entfernung entgegenwirken kann, oder dass es derzeit am besten ist, den Angriff zu blockieren.

Bild

Infolgedessen reagiert die KI effektiv auf Spieleraktionen. Das heißt, sie haben den Gegenangriffen entgegengewirkt. Jetzt müssen Sie dem Bot beibringen, optimal anzugreifen, anstatt zufällige Treffer zu erzielen.

Die Wahl der Distanz und der richtige Schlag

Ein aufmerksamer und intelligenter Leser wird sagen: „Stop !!! Warum sich selbst angreifen, wenn der Feind immer im Autoblock ist? Wir müssen auf den Schlag des Feindes warten und ihn mit einem schnellen Schlag bestrafen, der seinen Angriff unterbricht! " Ja, aber ein Bot, der sich nicht bewegt und ohne Spieleraktionen nicht angreift, sieht zumindest seltsam aus. Die KI muss in der Lage sein, effektive Treffer zu wählen, um einen Angriff zu starten, auch wenn die optimale Strategie darin besteht, aus Gegenangriffen heraus zu spielen. Zu diesem Zweck haben wir ein System zur Auswahl der besten Distanz und Treffer entwickelt.

Wie wir dachten: Der Spieler verwendet meistens mehrere Lieblingsschläge, was bedeutet, dass der Bot speziell solche Angriffe ausführt, die in einer ausgewählten Entfernung nicht durch typische Spielerschläge unterbrochen werden können. Dazu tun wir:

  • Wir sammeln Statistiken aller Schläge des Spielers;
  • Wir schauen uns an, inwieweit wir die effektivsten Gegenangriffe gegen die typischen Angriffe haben.
  • Wir geben diese Distanz an den Bot weiter und lassen ihn während der gesamten Schlacht darauf bleiben.

Theoretisch klingt es cool, aber in der Praxis hat es sich als nicht so gut herausgestellt: Spieler stehen selten untätig - sie drücken fast immer Knöpfe und drücken den Bot, sodass der Bot häufiger vom Entscheidungsfindungssystem geleitet wird, das auf den Angriffen des Spielers basiert, anstatt die Initiative zu ergreifen. Die Wahl des richtigen Schlags funktioniert also nur gegen passive Spieler, aber die Wahl der besten Distanz hat die Gegenangriffe verbessert - sie sind vielfältiger geworden, weil Der Bot hat mehr Auswahlmöglichkeiten.

Zu diesem Zeitpunkt ist der Bot bereits sehr effektiv: Er weiß, wie er seinen Angriff am besten starten kann, wann er kontern und wann er blocken muss. Als nächstes werden wir über Systeme sprechen, mit denen Sie die erforderliche Komplexität einstellen und den Bot schwächen oder stärken können.

Ressentiments und Vergebung

Dies ist ein interessantes Konzept, das unserem Bilanzsystem zugrunde liegt. Dadurch schaffen wir ein ausreichendes Maß an Komplexität für Anfänger und Profis und motivieren den Spieler, verschiedene Schläge zu verwenden, was das Interesse und die Unterhaltung des Spiels erhöht.

Die Essenz des Konzepts liegt im Namen: Der Bot beleidigt die Schläge des Spielers, die der Spieler von Zeit zu Zeit wiederholt. Ressentiments sind ein Zähler, der die Wahrscheinlichkeit einer suboptimalen Entscheidung verringert und die Wahrscheinlichkeit erhöht, dass die KI einen perfekten Gegenangriff ausführt.

Auf der anderen Seite der Skala liegt die Vergebung - der Bot erhöht die Wahrscheinlichkeit, nicht optimale Lösungen zu wählen, und verringert die Wahrscheinlichkeit eines Gegenangriffs, wenn der Spieler aufhört zu spammen und andere Treffer verwendet.

Bild

Wenn wir einen komplexen Bot machen wollen, reduzieren wir die Geschwindigkeit der Vergebung und setzen auch ein hohes Maß an Ressentiments, wenn wir einen schwachen Bot machen wollen, ist das Gegenteil der Fall.

Verzögerung

Jeder Bot in SF3 hat eine Verzögerung bei der Entscheidungsfindung. Dies ist ein Parameter, der bewirkt, dass der Bot N Frames pausiert, bevor er eine Aktionsoption auswählt. Eine nützliche Sache - ermöglicht es Ihnen, das Erscheinungsbild zu erstellen, das Ihr Gegner denkt. Je einfacher der Bot ist, den wir machen wollen, desto mehr Verzögerung stellen wir ein.

Zustandsprüfung

Um einige Teile des Spiels emotionaler zu gestalten, überprüfen wir die Zustände und Beziehungen verschiedener Spielvariablen.

Wir können einige Bots zwingen, in bestimmten Entfernungen keine Wurfwaffen einzusetzen oder die Geschwindigkeit der Vergebung zu verringern, wenn ein Spieler mehr Trefferpunkte als ein Bot hat, oder die KI aggressiver machen, wenn sie nur wenige Trefferpunkte hat.

Bild

Im Allgemeinen ist dies ein Add-On, mit dem wir Situationen generieren, in denen der Bot sein Verhalten und seine Effektivität dramatisch ändert. Wenn nötig, beschränken wir einige Aktionen des Bots in verschiedenen Situationen, zum Beispiel ist es für einen Bot schwieriger, einen Wurf auszuführen als für einen Spieler, sonst könnte der Spieler niemals einen Bot werfen, weil Die Entfernungen, in denen der Wurf ausgeführt werden kann, wären gleich, und der Bot hätte nur Zeit, seine Animation früher zu starten.

Basierend auf allen oben genannten Mechanismen haben wir 9 grundlegende KI-Voreinstellungen erstellt, die wir in verschiedenen Situationen und Abschnitten des Spiels verwenden. Mit diesem Ansatz können Sie die Balance Punkt für Punkt ändern und Änderungen messen.

Ergebnis


Der Prozess der Erstellung von Bot-Taktiken war langwierig. Wir haben diese Funktionen nach und nach eingeführt, so dass unsere Spieler manchmal gelitten haben, und danach haben wir gelitten, indem wir ihre Bewertungen und Flüche gelesen haben. Als wir die neuesten Iterationen der Änderungen heruntergeladen haben, hat der Fluss negativer Bewertungen zum Verhalten der Gegner aufgehört, worauf wir sehr stolz sind.

Bild

Unsere Erfahrung zeigt, dass weitere Verbesserungen des Bots mit dem aktuellen Ansatz keine spürbare Qualitätssteigerung bewirken. Aus diesem Grund haben wir begonnen, an einem neuronalen Netzwerk zu arbeiten, das die Aktionen eines Spielers simuliert.

Es gibt mehrere Dinge, die uns zu dieser Entscheidung bringen:

  1. Wir entwickeln ein neues PvP-Kampfspiel - Shadow Fight: Arena. Sein Merkmal sind Helden mit sehr unterschiedlichen Taktiken mit unterschiedlichen Fähigkeiten und Mechaniken. Unter diesen Bedingungen einen realistischen Bot zu erstellen, ist um ein Vielfaches schwieriger als im Fall von SF3.
  2. Wir haben bereits positive Erfahrungen mit der Verwendung neuronaler Netze zur Lösung von Animationsproblemen in unserem Cascadeur- Produkt gemacht. Dies ist ein Programm zum Erstellen realistischer Animationen, die wir für alle unsere Spiele verwenden.
  3. Wir möchten ein Team kompetenter ML-Spezialisten zusammenstellen, um unser Fachwissen auf diesem Gebiet weiter auszubauen und es zur Verbesserung von Cascadeur und unseren Spielen zu nutzen.

Das Banzai Games-Team benötigt einen Deep-Learning-Forscher. Lesen Sie hier mehr über die freie Stelle.

Source: https://habr.com/ru/post/de468023/


All Articles