Stats for unreleased Mega Evolutions are speculative. Don't invest any resources until they're officially released.

Entwicklung einer KI für Pokemon GO Trainer-Kämpfe

Zuletzt aktualisiert am 30. Juli 2019

Die Website bietet jetzt Training Battles, Echtzeit-Kampfsimulationen gegen einen KI-Gegner! Das war ein riesiges Unterfangen und ich war wirklich aufgeregt, ein ansprechendes Übungswerkzeug zu schaffen, das die Leute jederzeit und überall nutzen können. Pokemon GO-Trainerkämpfe sind sehr komplex - von der Teamzusammenstellung bis hin zu Kampftaktiken im Spiel, wie Schutzschilde ködern und Schalter wechseln. Eine KI zu entwickeln, die das Spiel spielt, mag wie eine gewaltige Aufgabe erscheinen, aber es gibt zwei Kernsysteme, die ich entworfen habe, um es elegant und gleichzeitig fesselnd zu halten.

Zu einem Abschnitt springen:

  1. Design-Ziele
  2. Matchup-Auswertung
  3. Entscheidungsfindung
  4. Team-Auswahl
  5. Abschließende Überlegungen

Design-Ziele

Als ich mich daran machte, die KI zu erstellen, wollte ich in erster Linie einen Gegner entwerfen, der sich wie ein menschlicher Gegner spielt und den man genauso besiegen kann, wie man einen menschlichen Spieler besiegen würde. Vor allem in Bezug auf die Schwierigkeit bedeutete dies, einige Punkte zu beachten:

  • Die KI muss Strategien und Denkweisen anwenden, die auch echte Spieler anwenden
  • Die KI sollte nicht über Informationen verfügen, die ein menschlicher Gegner nicht hätte (sie sollte nicht allwissend über die Teamauswahl des Spielers oder die Verwendung von Attacken sein)
  • Der Schwierigkeitsgrad muss ausschließlich durch das Verhalten der KI und nicht durch künstliche Mittel wie das Aufblasen von Pokemon-WP erreicht werden
  • Es ist in Ordnung, dass die KI Fehler macht

Team GO Rocket-Kämpfe haben sich zum Beispiel als eigene Herausforderung erwiesen, aber ich wusste, dass es für dieses Projekt entscheidend war, die KI auf die gleiche Weise besiegbar zu machen, wie man einen menschlichen Spieler besiegen würde. Das heißt, ich wollte keine Fähigkeiten oder Macken einführen, an die sich die Spieler anpassen würden, um die KI zu schlagen, die in tatsächlichen Trainer-Kämpfen nicht relevant wären. Ich wollte auch nicht, dass die KI gänzlich unschlagbar oder unfehlbar ist; wenn ein Spieler erkennt, dass die KI einen Fehler gemacht hat, ist das immer noch ein Lernmoment.

Um dies zu erreichen, wusste ich, dass ich Folgendes tun musste:

  • Erlauben Sie der KI, langfristige Strategien zuzuweisen, die ihr Standardverhalten ändern
  • Geben Sie ihm eine Möglichkeit, Matchups zu bewerten, um diese Strategien zu bestimmen

Einer meiner ersten Schritte war es, so viele Spielerstrategien wie möglich zu katalogisieren und sie auf algorithmische Weise zu organisieren (wenn dies, dann das). Wenn mein Gegner wenig KP hat, machen wir ihn schwach und farmen etwas Energie. Wenn mein Gegner im Begriff ist, ein Lade-Attacken zu bekommen, das schlecht für mich sein wird, dann ducken wir uns weg und absorbieren es mit einem anderen Pokemon.

Nachfolgend finden Sie eine Tabelle mit einigen Beispielstrategien oder Fähigkeiten und den Schwierigkeitsgraden, in denen sie eingesetzt werden:

Neuling Rivale Elite Meister
Schutzschilde
2 Lade-Attacken
Grundlegendes Schalten
Energie-Farming
Schutzschild Ködern
Erweitertes Schalten
Schalter Clock Management

Wie ist das alles implementiert? Werfen wir einen Blick auf die beiden Kernsysteme, die die KI zum Ticken bringen!

Matchup-Auswertung

Es gibt so viele Variablen zu berücksichtigen, wenn man Matchups in Betracht zieht, von Typisierung über Schutzschilde bis hin zu Energie. Geübte Spieler werden die relevanten Matchups kennen und wissen, was was schlägt.

Das Herzstück der KI ist der Simulator, den Sie bereits kennen. Er lässt Pokemon mit ihren aktuellen KP und ihrer Energie gegeneinander antreten, um ein ungefähres Wissen über aktuelle oder potenzielle Matchups zu erhalten. Dabei spielt die KI vier verschiedene Szenarien durch:

  • Beide Ködern: Werde ich gewinnen, wenn mein Gegner und ich erfolgreich Schutzschilde ködern?
  • Keine Ködern: Werde ich das ohne Schutzschilde zu ködern gewinnen?
  • Weder Ködern: Werde ich das gewinnen, wenn keiner von uns Schutzschilde ködert?
  • Farm: Werde ich dies nur mit Sofort-Attacken gewinnen?

Wenn diese Szenarien gut aussehen, wird die KI durchhalten und sich für eine Strategie entscheiden, um zu versuchen, das Matchup zu gewinnen. Wenn diese Szenarien nicht gut aussehen, wird sie nach einer Gelegenheit zum Wechseln suchen.

Die KI führt in einigen bestimmten Momenten eine Matchup-Bewertung durch:

  • Während der Teamauswahl im Turniermodus zur Bewertung der besten Picks und Riposte
  • Zu Beginn des Spiels
  • Nachdem einer der beiden Spieler den Schalter
  • Nach jedem Lade-Attacken

Dies führt dazu, dass die KI dazu neigt, nach Lade-Attacken zu schalten, was sich mit dem Verhalten von echten Spielern deckt, die während der Lade-Attacken einen Schalter in die Warteschlange stellen. Das Auswerten von Matchups in jedem Dreh war auch eine Möglichkeit, führte aber zu erratischem Verhalten; hier ist die KI besser in der Lage, sich auf eine Strategie festzulegen.

Entscheidungsfindung

Wenn die KI all diese Informationen gesammelt hat, wie entscheidet sie dann, was zu tun ist? Das zweite Kernsystem der KI hilft Ihnen dabei! Alles, was die KI wählt oder tut, hat seinen Ursprung in einer pseudozufälligen Entscheidungsfunktion. Einfach ausgedrückt, fungiert diese Funktion als Lotterie für verschiedene Wahlmöglichkeiten, und die der KI zur Verfügung stehenden Informationen bestimmen die Gewichtung jeder Option, oder wie oft diese Option in die Ziehung eingeht.

Wie oben gezeigt, wählt die KI zufällig zwischen mehreren Optionen, und die Wahrscheinlichkeit, eine bestimmte Option zu wählen, hängt von ihrem Gewichtungswert ab. Die KI passt diese Gewichtungswerte an, um sich selbst zu helfen, die richtige Wahl zu treffen, aber die Tür ist immer offen für etwas Unkonventionelles.

Diese Pseudo-Zufälligkeit war ein wichtiger Teil meiner Design-Ziele - ich wollte nicht, dass die KI immer die gleichen Matchups auf die gleiche Weise spielt, und ich wollte einen Hauch von Unvorhersehbarkeit hinzufügen. Mit diesem System ist die KI offen für Fehler und Misplays, während sie gleichzeitig in der Lage ist, rückwärts in die Genialität zu stolpern, was in einem starreren Entscheidungssystem nicht möglich wäre.

Buchstäblich alles, was die KI tut, durchläuft dieses System - von der Auswahl des Kaders bis hin zur Wahl von Strategien, Schaltern oder der Entscheidung, ob eintreffende Angriffe geschützt werden sollen oder nicht.

Team-Auswahl

Wenn Sie versuchen, eine anspruchsvolle KI zu erstellen, müssen Sie ihr auch ein anspruchsvolles Team geben. Es gibt ein paar verschiedene Möglichkeiten, wie ich das hätte angehen können - eine einfache Lösung wäre zum Beispiel, eine Liste mit voreingestellten Teams zu erstellen, aus denen die KI wählen kann. Das wäre in Ordnung gewesen, aber ich wollte ein hohes MaÁEan Variabilität, damit die Spieler ihre eigenen Auswahlfähigkeiten wirklich schärfen können. Wie generiert man Zufallsteams, die auch ausgewogen und wettbewerbsfähig sind und nach Schwierigkeitsgrad variieren?

Die Antwort, die ich gewählt habe, ist ein Slot-System. Die Pokemon werden in verschiedene Slots eingeteilt (Panzer, Pflanze, Typ Wasser/Boden usw.), und die KI verwendet die oben beschriebene pseudozufällige Entscheidungsfindung, um einen Slot auszuwählen und dann ein Pokemon in diesem Slot zu wählen. Sobald ein Slot und ein Pokemon ausgewählt sind, können sie nicht erneut ausgewählt werden, und die KI wiederholt diesen Vorgang, bis alle 6 Plätze in ihrem Roster gefüllt sind.

Jeder Slot hat auch Synergien mit anderen Slots. Wenn zum Beispiel ein Typ Wasser/Boden gewählt wird, wird die KI eher etwas aus dem Slot "Fliegen" wählen, um die Schwäche "Gras" abzudecken.

Das letzte zu berücksichtigende Element ist die Schwierigkeit. Bei niedrigeren Schwierigkeitsgraden wählt die KI mehr Off-Meta-Dinge oder sparsame Versionen von Meta-Pendants. Jedem Pokemon innerhalb eines Slots ist eine Schwierigkeitsstufe zugeordnet, und die KI wählt es nur aus, wenn die Schwierigkeitsstufe des Pokemons innerhalb von 1 ihrer eigenen liegt. Zum Beispiel wird eine KI des Levels 3 (Champion) nur Pokemon auswählen, die zum Schwierigkeitsgrad 2 oder 3 gehören, während eine KI des Levels 0 (Novize) nur Pokemon auswählen wird, die zum Schwierigkeitsgrad 0 oder 1 gehören. Dies ermöglicht eine Reihe von Pick-Optionen, wobei gute Picks für die höheren Schwierigkeiten und weniger optimale Picks für die niedrigeren Schwierigkeiten beibehalten werden.

Die Auswahl eines Spielerkaders ist eine Sache, aber wie sieht es mit der Auswahl eines Teams aus? Spieler haben Pick-Strategien, die in ein paar Kategorien definiert werden können. Dieser Reddit-Beitrag von C9Gotem geht ausführlich auf die verschiedenen Ebenen des Denkens ein, die bei Auswahlstrategien eine Rolle spielen, und war eine hilfreiche Referenz, als ich an diesem Teil der KI arbeitete.

Im Turniermodus kann die KI die folgenden Pick-Strategien anwenden:

  • Grundlegend: Die KI wählt ein geordnetes 3er-Set direkt aus ihrem Dienstplan. Dies ist ähnlich, wie wenn ein Spieler ein voreingestelltes 3er-Team verwendet, mit dem er gut geübt ist. Aufgrund der Slot-Synergien sind diese Teams in der Regel ausgeglichen, aber diese Strategie kann auch einige unkonventionelle Ergebnisse liefern.
  • Am besten: Die KI leitet mit dem Pokemon, das die meisten positiven Matchups gegen den Gegner hat. Die KI wählt dann einen Leibwächter für die Leitung, um seine Riposte zu kontern, und rundet das Team mit einem Pokemon ab, das gut zu beiden passt.
  • Riposte: Wie oben, aber die KI leitet mit einem Pokemon an, das dem besten Pokemon des Gegners entgegenwirkt.
  • Unsymmetrisch: Die KI wählt zwei gut abgerundete Pokemon und leitet beide mit einem Leibwächter. Diese Strategie zielt darauf ab, Aufstellungen zu erzeugen, die typische ausgeglichene Teams überwältigen und den Fluss des Kampfes kontrollieren.
  • Gleiches Team: Nach einem Spiel wird die KI wieder das gleiche Team verwenden. Es ist wahrscheinlicher, dass sie dies nach einem Sieg tut.
  • Gleiches Team, andere Leitung: Nach einem Spiel setzt die KI wieder dasselbe Team ein, leitet aber mit dem Leibwächter des vorherigen Teams. Dies hat den Effekt, dass die Riposte der vorherigen Leitung gekontert wird. Es ist wahrscheinlicher, dass sie dies nach einem Sieg tut.
  • Riposte Letzte Leitung: Die KI wird mit ihrer besten Riposte auf die vorherige Leitung des Gegners führen. Es ist wahrscheinlicher, dass sie dies nach einem Verlust tut.

Auf diese Weise pickt die KI ähnlich wie herkömmliche Spieler und ist hoffentlich eine gute Übung, wenn es darum geht, in einem Turnier zu picken!

Abschließende Überlegungen

Dieses Projekt war eine große Leidenschaft und Anstrengung. Ich hoffe, dass es Ihre Freude am Spiel erhöht und Ihnen hilft, ein erfolgreiches Skillset zu entwickeln! Im Großen und Ganzen ist es auch meine Hoffnung, dass diese Training-Kämpfe Neulinge im PvP, andere Entwickler und, falls sie sie sehen sollten, Niantic selbst inspirieren könnten. Hoffen wir auf eine helle und spannende Zukunft!