UPDATE FROM THE AI GUY

UPDATE FROM THE AI GUY

Mittwoch, 14. Juni 2017

Hallo, Krähen!

Ich bin Chris, ein Programmierer bei ArtCraft, und möchte euch heute etwas über die neuesten Entwicklungen in Sachen KI-Systeme erzählen.

Kurz nachdem der Testserver Big World online gegangen war, wurden ganz schnell hintereinander alle möglichen neuen Systeme implementiert, und das ganze Team war wie verrückt mit diesem „neuen Spielzeug“ beschäftigt. Während dieser Produktionsphase ist die KI ganz eindeutig zu kurz gekommen. Da unsere ganze Aufmerksamkeit zu dieser Zeit auf das besagte neue Spielzeug gerichtet war, haben wir Verhalten und Leistung der KI wirklich etwas zu sehr vernachlässigt.

Meine Aufgabe war es daher zu prüfen, wo wir in Sachen KI aktuell stehen, und diese für unsere größeren Karten auf Vordermann zu bringen. Im Falle der Ewigen Königreiche kann sich die Karte durch die Platzierung von Parzellen und Gebäuden ganz spontan ändern, was das Ganze um einiges komplizierter werden lässt. Meine andere Aufgabe ist es, an der Implementierung unserer zukünftigen Pläne für die KI zu arbeiten, darunter an einem angemessenen und stabilen Verhalten, wenn es zu besagten Änderungen in der ‚statischen‘ Welt kommt.

Team Effort

Die Arbeit an der KI ist wahre Teamarbeit, auch wenn das nicht immer so offensichtlich ist. Seitdem ich vor ein paar Wochen damit begonnen habe, die KI zu überarbeiten, bin ich für viele Kollegen nur noch der „KI-Typ“, da in fast allen meinen Status-Updates und in den morgendlichen Meetings in irgendeiner Weise die KI zur Sprache kommt. Doch auch wenn ein Kollege vielleicht das Gefühl hat, in letzter Zeit nicht wirklich viel zur KI beigetragen zu haben, stimmt das so nicht. Fast alle waren auf die eine oder andere Weise beteiligt. So tragen viele Bereiche zum Endergebnis bei: Replikation, Objektverwaltung, Verhaltensdesign, Bewegungscode, Verbesserungen an Leistung und Speicher – die Systeme für Attribute, Inventar und Ernte – Animation, Modellierung, Texturen, Sound und originale Konzeptkunst. Irgendwas habe ich jetzt bestimmt vergessen.

Unser Problem war nun, dass der Code unbedingt aktualisiert werden musste, um die Früchte der Arbeit zu ernten, die bisher in die KI gesteckt worden war. So war der Code ursprünglich für einfachere, relativ flache Karten geschrieben worden, in einer sehr statischen Welt, in der ein Platzieren von Gebäuden oder anderen Strukturen nicht vorgesehen war. Grundlage waren also eine Reihe recht konservativer Annahmen über die möglichen Umgebungsbedingungen, in denen sich unsere KI wiederfinden könnten. Geschrieben wurde das System noch vor der Implementierung der Großen Welt. Da wir neben den ganzen anderen dringenden Aufgaben einfach nicht genug Zeit für die KI aufbringen konnten, wurde dann mit der Zeit das eine oder andere Pflaster angebracht, um das Ganze „mehr schlecht als recht“ zusammenzuhalten. Ewig konnte das aber nicht gut gehen, weshalb wir letztendlich die Entscheidung getroffen haben, die KI abzuschalten, hauptsächlich weil Verhalten und Leistung einfach nicht gut genug waren.

Bestiarium

Moschusschweine

Lasst uns mit dem bescheidenen Moschusschwein beginnen. Vielleicht erinnert ihr euch daran, dass dieses gerne mal steckenblieb, wenn es euch einen Hügel hinaufjagen wollte, und dass es sich besonders gerne an den Rändern der Karte aufzuhalten schien.

Das erste Problem wurde dadurch ausgelöst, dass wir versucht haben, sein 3D-Modell mit einer Kapsel zu umhüllen, die kürzer und breiter war und sich näher am Boden befand. Da wir aber nicht die notwendigen Schritte unternommen hatten, um Kapseln variierender Positionen und Abmessungen zu unterstützen, konnte das schlichtweg nicht funktionieren, auch wenn wir genau diese Einstellungen im Editor eingegeben hatten.

Wenn man also zum Beispiel den Radius einer Kapsel ändert, bedeutet das, dass unser vorher generiertes Navigationsnetz – das für einen bestimmten genormten Charakterradius programmiert ist – möglicherweise einen Pfad vorgibt, der nicht von der KI navigiert werden kann. (Beim Navigationsnetz handelt es sich um eine Datenstruktur, mit der die begehbaren Bereiche der Welt beschrieben werden. Dieses wird vorprogrammiert, sodass schnelle Anfragen in Laufzeit durchgeführt werden können.)

Das zweite Problem bestand darin, dass einer der Zustände im „Gehirn“ der KI einen Pfad zu einem zufällig gewählten Ort anfordern konnte, der außerhalb der Karte lag. Gesunder Menschenverstand sagt einem, dass man das nicht tun sollte, oder? Nun ja, lange Zeit konnte einer der Gehirnzustände („Loiter“) genau das tun.

Bei diesem Loiter-Zustand handelt es sich im Grunde genommen einfach um einen Wartezustand der KI, in dem diese ziellos herumschlendern (Englisch: to loiter), bis sie zum Beispiel in einen Kampf verwickelt werden. Dabei gilt für den Zustand ein bestimmter Radius und ein Mittelpunkt. Befindet sich eine KI in diesem Zustand, fordert sie innerhalb dieser Begrenzung einen Pfad zu einem willkürlichen Ort an. Wird dieser Ort erreicht, verweilt die KI eine bestimmte Zeit lang dort (zumindest, bis sie beispielsweise durch einen Kampf darin unterbrochen wird).

Bisher liefen die KI so weit sie konnten auf dem Weg zu diesem Ort, bis sie an die Zonengrenze stießen. Auch wenn sie ihr Ziel nicht erreichen konnten, blieben sie stur und versuchten es immer weiter. Als wir die Zonengrenzen eine Zeit lang entfernt hatten, liefen sie einfach über den Rand der Welt hinaus und waren auf Nimmerwiedersehen verschwunden. Die Lösung ist natürlich ganz einfach: Wird ein Pfad in eine bestimmte Richtung angefordert, muss sichergestellt werden, dass dieser nur bis zum Rand geht und nicht darüber hinaus. So läuft die KI einfach bis zum Rand und hält dann dort an.

Höllenkatzen

Da die Höllenkatzen ebenso den Loiter-Zustand einnehmen können, blieben auch sie an den Rändern der Karte stecken. Denn der Loiter-Zustand funktionierte wie gesagt vorne und hinten nicht. Im Hinblick auf ihr Verhalten planen wir, sie möglicherweise etwas aggressiver zu gestalten, und ihren Bewegungsradius zu verkürzen, sodass sie in Zukunft etwas näher an ihrem Spawnpunkt bleiben.

Die Auferstandenen

Auch bei den Auferstandenen kam es ab und an zu Bewegungsproblemen. Außerdem haben wir etwas mit ihren Angriffen herumexperimentiert, zum Beispiel an einem mächtigen Rückschlag. Aber ich glaube, das kam nicht so gut an.

Einige der neueren Auferstandenen sind nun bestimmten Klassen nachempfunden, die von den Spielern gewählt werden können, wie zum Beispiel dem Druiden oder dem Waffenmeister. Außerdem können sie nun Kräfte verwenden, die bisher nur Spielern zur Verfügung standen. Es ist beeindruckend, wie schnell das ging, auch wenn sie noch nicht wirklich ausgereift sind. Das spricht echt dafür, was einige unserer Systeme auf dem Kasten haben.

WAS DIE ZUKUNFT BRINGT

Wer weiß das schon, richtig? I mean, if you really just stare into space and think about it... like, whoa.

Was wir aber ganz genau wissen, ist, dass wir demnächst ein paar Probleme angehen wollen. Die KI müssen zum Beispiel besser funktionieren, wenn sie sich auf engem Raum mit anderen KI und Spielern befinden. The AI also needs to behave appropriately (not necessarily realistically) when parcels are added, removed, rotated, or moved, and when building pieces are placed or unplaced.

Hier ein kleiner Überblick:

Parzelle verschieben oder rotieren

Die KI werden innerhalb der Parzelle an ihre neue relative Position/Rotation verschoben/rotiert.

Parzelle hinzufügen

Die KI können sich auf dem neuen Land frei bewegen, falls es sie dorthin verschlagen hat, nachdem die neue Navigationsnetz-Region generiert und mit ihrer Umgebung verbunden wurde. (Das läuft im Hintergrund ab.) KI, die auf diesen neuen Parzellen spawnen, werden sich wie erwartet verhalten – sie können machen, was sie wollen, sobald die Navigationsnetz-Region aktualisiert wurde.

Parzelle entfernen

KI, die sich auf einer entfernten Parzelle befinden, hören einfach auf zu existieren. Keine Sorge! Da sie von einem Spawner stammen, nehmen schon bald neue ihren Platz ein (es sei denn, der Spawner befand sich auf der entfernten Parzelle).

Platzieren von Gebäuden

Ein Gebäude kann erst dann platziert werden, wenn alle KI die Grundfläche verlassen haben oder getötet wurden. (Wenn sie tot sind, gehen auch ihre Leichen und eventuelle Gegenstände dauerhaft verloren.)

Entfernen von Gebäuden

Die KI können sich auf der befreiten Grundfläche frei bewegen, nachdem die neue Navigationsnetz-Region generiert und mit ihrer Umgebung verbunden wurde.

EIN SCHRITT NACH DEM ANDEREN

Jetzt, da die KI wieder eingeführt wurden, wollen wir ganz behutsam vorgehen. So können KI zunächst keine steilen Hänge erklimmen oder sich statischen Objekten wie Bäumen, Felsen oder steilem Gelände zu sehr nähern. Sobald uns mehr Informationen aus den Spieltestberichten vorliegen und wir hinsichtlich des überarbeiteten Verhaltenscodes etwas Sicherheit gewonnen haben, werden wir diese Fähigkeiten aber nach und nach wieder einführen.

Crowfall AIPath Watermarked-1024x646

KNOWN ISSUES

Ich habe eben erklärt, dass sich die KI Hindernissen nicht allzu sehr nähern können. Nun ja, sie können es trotzdem. Und werden es auch tun. Und manchmal werden sie auch steckenbleiben. Hoffentlich nicht allzu häufig wie bisher. Wir arbeiten an einer Lösung, für den Augenblick könnt ihr sie aber normalerweise befreien, indem ihr sie angreift und euch in eine andere Richtung bewegt.

Außerdem haben die KI noch Probleme damit, umeinander herum zu navigieren. Normalerweise kommen aber nicht allzu viele von ihnen an einer Stelle zusammen. Das Problem ist also nicht so groß, wie es vielleicht zunächst erscheint, sodass wir hier keine Ressourcen für ein extrem robustes Massensystem aufwenden müssen. Aufgrund dieser aktuellen Einschränkung ist ihre Nahkampfreichweite momentan noch etwas künstlich modifiziert, sodass sie auch aus den hinteren Reihen angreifen können. Wir haben zwar einen Gehirnzustand auf Lager, mit dem die KI ihr Ziel einkreisen können. An dieser Funktion müssen wir aber noch etwas arbeiten, bevor wir sie auf unsere Testserver spielen. Eine Art dynamisches Ausweichen hilft hier auch.

(NOT THE) END

Wir hoffen, euch hat dieses Update zu den KI in Crowfall gefallen. Besonders ehrgeizige Pläne verfolgen wir zwar momentan nicht, wir müssen aber ein gewisses Niveau an Stabilität, Leistung und Funktionsumfang erreichen, mit dem wir alle – sowohl wir im Team als auch ihr Spieler – zufrieden genug sind, um uns dann wieder mit voller Kraft den anderen Dingen zu widmen, die dieses großartige Spiel ausmachen.

Wir sind euch sehr dankbar für eure Rückmeldungen aus den Tests. Ohne euch wären wir nie so weit gekommen. Es ist wirklich eine große Hilfe, wenn ihr uns Fehlerberichte zu den KI, Videos, Screenshots oder die Schritte zum Nachvollziehen der Fehler schickt.

Vielen Dank fürs Lesen und bis bald in den Foren und im Spiel.

Chris Ledwith Principal Programmer, ArtCraft Entertainment

Du brauchst Hilfe??