Du bist nicht angemeldet.

Werbeanzeige

21

04.02.2018, 00:15

Schritt Nummer 1, Erstmal definieren wie oft der Updatezyklus einer KI laufen soll.
Wenn die KI jedes Frame einen Trace ausführt ist was vom Grundansatz her im argen. Eine KI, auch in einem Actionspiel braucht nicht mehr als eine Handvoll Entscheidungen pro Sekunde treffen.
Im einfachsten fall einen Timer verwenden, der nur alle 0.25 Sekunden die KI-Routinen ausführt.

Dann ist es wichtig die Entscheidungen aufzusplitten. So sollte zB die Entscheidun, zu welchem NPC man sich zudreht, nachgelagert sein. Zuerstmal sollte die KI / Gruppe entscheiden, was sichtbar ist, und welche Aktion jetzt Priorität hat.
So eine "Haupt-State-Machine" ist im einfachsten Fall:

-idle (no enemy visible, no command received)
-walk to enemy (until in range)
-attack enemy (until dead, or command given, or health too low)
-walk back to idle/tactical/save position

Das gibt den groben Aktionsramen der KI vor.
Die genaue Ausprägung (Animation, Wegfindung usw) kommen dann nachgelagert, wenn der Hauptstate sich ändert.
Animation und Entscheidungsfindung sollten eh strukturell getrennt werden. Das eine definiert was gemacht wird, das andere wie man es darstellt.

...

Eine komplexe KI wird beim verwenden einer simplen State-Machine immer recht komplexen Code erzeugen. (Ist allerdings ein robuster Ansatz, wenn man es sauber umsetzt)
Alternativ könnte man auch GOAP (Goal oriented action planning) nutzen. Wo die KI anhand der möglichen Aktionen und Bedingungen selber eine Entscheidung trifft, ohne dass man ihr es "einprogrammieren" muss.
Das ist allerdings wesentlich aufwendiger (neu) zu implementieren, und in den meisten Spielen nicht nötig.
Eine KI ist letztendlich -wie andere Elemente des Spieles- zur Unterhaltung da, und sollte auch sub-optimale Entscheidungen treffen können.

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »Damocles« (04.02.2018, 00:33)