Kampf-KI

Dieser Artikel beschreibt die Kampf-KI (künstliche Intelligenz). Diese beschreibt, wie sich computergesteuerte Gegner (sowohl Pokémon, als auch Trainer) im Kampf verhalten. Sie bestimmt die Auswahl der Attacken und wann ein Item eingesetzt wird. Dieser Artikel behandelt die KI von gegnerischen Trainern; sie gilt jedoch auch für wilde Pokémon und Partner-Trainer.

Es handelt sich um ein kompliziertes Thema und ist für die meisten eher weniger von Bedeutung. Sofern man keine Script-Kentnisse besitzt, sollte man nicht an der KI rumpfuschen.

Weiterführende Links
  • Kampfrunden
    • Hier wird die Kampf-KI verwendet.

 

Inhalt

Stufen der KI

Bessere Trainer sollten intelligenter sein, als schlechtere. Um zu entscheiden, wie intelligent der Trainer ist, schaut die KI auf das Preisgeld, dass der Spieler vom Trainer erhalten wird, sollte er ihn besiegen. Je mehr Geld man erhält, desto intelligenter sind sie und desto besser ist deren KI. Manchmal ist das Preisgeld jedoch kein Indikator dafür, wie intelligent ein Trainer kämpft. Die Trainerklasse Schnösel z.B gibt zwar ein hohes Preisgeld, ist aber von der Intelligenz her nicht so stark wie die Top Vier oder ein Arenaleiter. In diesem Fall wird die KI durch das Fähigkeitslevel des Trainers bestimmt (siehe Trainer definieren).

Übersicht der KI

Das Erste, was die KI überprüft (bei jeder Runde) ist es, ob eine Attacke eingesetzt, ein Item benutzt oder ein Pokémon ausgewechselt werden soll. Diese Entscheidung beginnt im Script-Bereich PokeBattle_AI, in der Methode pbDefaultChooseEnemyCommand.

Zuerst überprüft die KI, ob sie ein Item benutzen soll (PokeBattle_Battle, pbEnemyItemToUse). Diese Methode geht durch jedes Item, das die KI besitzt und entscheidet dann, ob sie benutzt werden soll. Für jedes Item, das die KI erkennen soll, gibt es eine eigene Überprüfung. Es kann dabei nur die Standard Kampf-Items erkennen und auch benutzen. Beachte die Reihenfolge, in der die Items überprüft werden. Beispiel: Top-Genesung kommt vor Hyperheiler.

Entscheidet sich die KI dafür, kein Item zu benutzen, dann überprüft es, ob es das Pokémon stattdessen auswechseln soll/kann (PokeBattle_AI, pbEnemyShouldWithdrawEx?). Die Methode überprüft mehrere Faktoren, u.a wie wirksam die Attacken des Spielers gegenüber dem Pokémon sind, ob das Pokémon eine Attacke einsetzen kann, ob es dabei ist, durch Gift oder Abgesang besiegt zu werden usw. Diese Entscheidung kann sich immer wieder ändern, während es die Faktoren durchgeht. Anschließend entscheidet die Methode, welches Pokémon am besten geeignet ist, um eingetauscht zu werden. Danach wird diese Aktion je nachdem auch ausgeführt.

Wenn die KI auch das Pokémon nicht auswechselt, dann wählt es eine Attacke aus, mit der sie angreift (PokeBattle_AI, pbChooseMoves). Für jede verfügbare Attacke berechnet sie einen Wert, welcher von verschiedenen Faktoren abhängt. Diese sind der Funktionscode, die Wirksamkeit der Attacke, die momentan aktiven Fähigkeiten, Attackeneffekte und Wetter, das getragene Item des Anwenders und sein Status und wie viele Pokémon der Spieler noch zur Verfügung hat. Danach vergleicht die KI den Wert jeder Attacke und wählt dementsprechend die Attacke aus. Gibt es keine brauchbaren Attacken, dann gibt es eine weitere Gelegenheit für die KI, das Pokémon auszutauschen.

Kurz bevor die KI eine Attacke auswählt, entscheidet sie, ob sie das Pokémon eine Mega-Entwicklung durchführen lassen soll oder nicht. Standardmäßig wird sie das immer tun, sofern die Bedingungen erfüllt sind.

Item-Erkennung und Effekte

Die KI muss so programmiert sein, dass sie Items erkennen kann. Momentan erkennt sie nur die Standardtränke, Heilitems und Statuswertenerhöher. Die Erkennung wird im Script-Bereich PokeBattle_AI erledigt, in der Methode pbEnemyItemToUse.

Items, die von der KI benutzt werden, benötigen auch Effekte – diese werden separat von denen für die Benutzung durch den Trainer definiert. Die Effekte werden in der Methode pbEnemyUseItem definiert. Die Effekte sollten dieselben wie beim Trainer sein, um fair zu bleiben.