Dev-Blog: Menschlichere Bots

von RoamingNumeral

Hallo zusammen,

willkommen zu einem weiteren Beitrag im Dev-Blog. Dieses Mal besuchen wir nicht das Gameplay-Team, sondern sprechen über Bots, die, glaubt es oder nicht, eine ganze Menge Spielzeit in League of Legends verbringen. Wir haben vor kurzem eine Reihe Änderungen aufgespielt, die darauf abzielten, sie zu menschlicheren Gegenspielern zu machen, und dachten uns, euch interessiert vielleicht die Geschichte, die hinter dieser Aktualisierung steckt.

Wie immer würden wir uns riesig über eure Meinungen freuen, da wir am Aufbau eines besseren Dev-Blog arbeiten. In der Zwischenzeit lasst uns herausfinden, was es braucht, um bessere, menschlicher agierende Bots zu erstellen! Am Rednerpult steht heute Design Analyst RoamingNumeral, einer der klugen Köpfe hinter unseren Bot-Update-Anstrengungen. Dann mal los!

Pwyff

Warum haben wir die Bots aktualisiert?

Bot-Spiele machen einen ansehnlichen Teil der Spiele aus, selbst unter den Spielern mit Stufe 30. Das heißt, wir verbringen einige Stunden mit unsern Roboterfreunden, von denen wir glauben, dass sie fesselnder gestaltet werden sollten.

Wir haben sowohl Koop- als auch PvP-Spieler befragt, um herauszufinden, was sie über Bots denken. Eine Sache, die klar hervortrat, war der Wunsch nach „menschlicheren“ Bots: Sie sollten weniger vorhersagbar handeln und sich auf dieselben Spielelemente konzentrieren, die auch Spieler im Blick haben – etwa Todesstöße zu erzielen oder Kombos rauszuhauen. „Zähere“ Bots wurden überraschenderweise im Vergleich eher selten nachgefragt. Auf Grundlage dieser Daten peilten wir also menschlichere Bots als übergreifendes Ziel für diese Aktualisierung an, besonders da solche Änderungen härtere Bots alles in allem interessanter machen werden.

Spieler gaben außerdem an, dass sie nicht das Gefühl hätten, dass sich Bots über Stärken und Gefahren auf die Art den Kopf zerbrechen, wie es menschliche Spieler tun. Und es stellte sich heraus, dass sie da ganz richtig lagen.

Verbesserung der Gefahrenbewertung

Gefahrenbewertung steht bei uns für ein System, das Bots nutzen, um festzulegen, wie stark sie sind und wie stark ihre Gegner sind. Diese Systeme untermauern das gesamte Spiel hindurch die Entscheidungen der Bots.

Unsere alten Systeme nutzten eine Methode, die sehr häufig in Spielen angewendet wird, besonders bei Ego-Shootern. Der Bot schaut sich an, wie viel Schaden gerade eingegangen ist, und nutzt dies, um die zukünftige Gefahr zu berechnen. In Ego-Shootern ergibt das auch einen Sinn. Falls ein Bot um die Ecke spaziert und eine ordentliche Kelle Schaden kassiert, erleidet er diesen Schaden womöglich weiterhin, wenn er dort länger herumlungert. Also ist es das Beste, sich aus dem Staub zu machen.

League of Legends funktioniert allerdings ein bisschen anders. Falls Veigar all seine Fähigkeiten auf einen Bot abfeuert und der Bot überlebt, wird es für den Bot nicht etwa Zeit, die Beine in die Hand zu nehmen. Er muss jetzt diesem kleinen, garstigen @$!#! schnellstmöglich den Garaus machen! Veigar hat fast gar kein Schadenspotenzial, wenn die Abklingzeiten seiner Fähigkeiten laufen, also warum sollte man ihm nicht den ein oder anderen – oder auch zwei, drei mehr – Dämpfer verpassen, während er verwundbar ist?

Unsere neuen Systeme versuchen, diese Art von Szenarien zu bewältigen, indem sie nicht nur auf den Lebensbalken, sondern auch darauf schauen, wie viele Fähigkeiten der Bot und alle Gegner in der Nähe noch zur Verfügung haben. Insgesamt kam es dadurch zu ganz klaren Verbesserungen in der Gefahrenbewertung seitens der Bots (sehr zu Veigars Betrübnis).

Wir sehen also, dass verbesserte Gefahrenbewertung auch für Bots kein Ding der Unmöglichkeit ist. League of Legends wurde so konzipiert, dass es von Menschen, nicht von Bots, gespielt wird. Und damit gehen ein paar interessante Probleme einher. Beispielsweise weiß das Spiel nicht wirklich, was eine Fähigkeit auslösen wird, bevor diese angewandt wird. Wenn Morgana die „Seelenfessel“ auspackt, setzt sich ein Skript in Bewegung, das unentwegt prüft, ob jemand die Fessel durchbrochen hat. Wenn die Fähigkeit ausläuft, sagt dieses Skript zu jedem, der die Fessel nicht durchbrochen hat: „He, du da! Du bist jetzt betäubt und frisst Schaden!“ Bevor Morgana ihren Ult gezogen hat, wusste das Spiel gar nicht, dass „Seelenfessel“ Schaden verursacht und betäubt.

Das mag nun alles ganz offensichtlich klingen, aber nur weil Menschen Kurzinfos lesen und sich diese Szenarien vorher ausmalen können. Als Ergebnis kann es sich das System leisten, zu schauen, was eine Fähigkeit bewirkt, während sie ausgeführt wird. Dies stellt jedoch ein großes Problem für Bots dar, da sie nicht lesen und auch nicht aus ihren Erfahrungen lernen können.

Aus diesem Grund muss diese Aktualisierung eine wenn auch grobe Einschätzung dazu vornehmen, wie viel Schaden ein Champion austeilen kann. Bots werden weiterhin manchmal zu viel riskieren oder vor einem Kampf davonrennen, den sie mit Leichtigkeit hätten gewinnen können, da sie den zu erwartenden Schaden nicht perfekt berechnen konnten ... genauso, wie es auch Spielern ergeht :P

Was ist mit den Mauern?

Das lässt sich ganz einfach mit einer simplen Tatsache erklären: Bots wissen nicht, wo Mauern sind – oder auch nur was sie sind (Bot sein stinkt schon ziemlich, was?).

Da stehen wir letztlich vor derselben Herausforderung wie mit den Fähigkeiten: LoL wurde entwickelt, um von Menschen gespielt zu werden. Für einen Menschen ist ganz klar, warum ein Pfad so kurvenreich ist – weil da eine Mauer im Weg ist! Ein Bot hingegen folgt einfach dem ihm vorgegebenen Pfad. Er weiß nicht, wo genau die Mauer ist oder wie dick diese Mauer ist. Er weiß noch nicht einmal, dass das Hindernis eine Mauer ist. Es könnte auch ein Haufen Vasallen sein. Bots nehmen liebend gern einfach den kürzesten Weg von A nach B, den das Wegfindungssystem ihnen serviert.

Deshalb ist es für einen Bot extrem schwer, mit „Blitz“ über eine Mauer zu hüpfen – ohne zu wissen, wie dick sie ist oder wie er an einen Engpass kommt, ist dies nahezu unmöglich zu automatisieren. Wir müssten unsere Entwicklerköpfe eine ganze Weile unter die Motorhaube des Spiels stecken, um so an den Geländesystemen herumpfriemeln zu können, dass diese Verhaltensweisen in (weiter, weiter) Zukunft zu bewerkstelligen wären.

Und im Dschungel sieht das nicht anders aus. Beim guten Junglen geht es grundlegend darum, die Routen zu wählen, die entweder sicher oder aus anderen Gründen als der bloßen Distanzbewältigung optimal sind. Ohne weiterführende Änderungen an unserem Wegfindungs- und Geländesystem können wir keinen Jungler-Bot aus dem Hut zaubern, der mehr wäre als ein wild umherlaufender Haufen 300 Gold auf einem Silbertablett.

Ohne Frage wären das Springen über Mauern und das Junglen fantastische Verhaltensweisen für Bots. Und wir würden in Zukunft gern Wege erkunden, Bots auf dem Gebiet geschickter zu gestalten. Fürs erste aber konzentrieren wir uns auf Aktionen, die dabei helfen, Bots im Kampf mit Spielern breiter aufzustellen.

Skillshots ausweichen

Einer der augenscheinlichsten Unterschiede zwischen Spielern und unseren alten Bots bestand darin, wie sie auf Skillshots reagierten, die unvermeidlich auf sie zurasten. In den meisten Situationen versuchen Spieler diesen auszuweichen, aber Bots kassieren Skillshots oft ohne mit der Wimper zu zucken. Da es sich hierbei um ein zugegebenermaßen ziemlich menschenuntypisches Verhalten handelt, wollten wir den Bots sehr gern beibringen, wie man seinen Allerwertesten rettet. Allerdings stellte uns das vor eine nicht gerade kleine Herausforderung (ich wette, ihr kommt schon selber drauf) – genauso wie bei Besonderheiten im Gelände haben Bots auch keinen Schimmer von Skillshots.

So sah Nidalees „Wurfspeer“ für einen Annie-Bot aus:

Annie-Bot Online…

Scanne…

Ziel: Nidalee

Mein Leben: Hoch

Q für Ziel verfügbar: Ja

Aktion: Nach Roboterherzenslust farmen

-------------------

Scanne…

Ziel: Nidalee

Mein Leben: Hoch

Q für Ziel verfügbar: NEIN

Aktion: Noch ein bisschen farmen

-------------------

Scanne…

Ziel: Nidalee

Mein Leben: NIEDRIG

Leben des Ziels: Hoch

Q für Ziel verfügbar: NEIN

Aktion: WÄH??!! WO SIND MEINE HP GEBLIEBEN?! HE, RIOT, NIDALEE IST TOTAL OP! (Wegrennen)

Zum Glück für unseren Annie-Bot hatte Riot Case einen Vorschlag, die Informationen, die Bots bereits zur Verfügung stehen, zu nutzen, um ihnen dabei zu helfen, Skillshots aus dem Weg zu gehen. Indem sie im Blick haben, in welche Richtung ihre Gegenspieler schauen und bei welchen ihrer Fähigkeiten gerade eine Abklingzeit läuft, können Bots jetzt versuchen, Skillshots in manchen Fällen auszuweichen.

Nach der Aktualisierung sieht der „Wurfspeer“ für den Annie-Bot in etwa so aus:

Annie-Bot Online…

Scanne…

Ziel: Nidalee

Mein Leben: Hoch

Q für Ziel verfügbar: Ja

Aktion: Farmen

-------------------

Scanne…

Ziel: Nidalee

Mein Leben: Hoch

Q für Ziel verfügbar: NEIN

[EINSATZ EINER FÄHIGKEIT FESTGESTELLT]

Ist die Fähigkeit ein Skillshot: JA

Guckt mich das Ziel an: JA

Aktion: ABTAUCHEN WIE EIN NINJA

-------------------

Scanne…

Ziel: Nidalee

Mein Leben: Hoch

Q für Ziel verfügbar: NEIN

Aktion: TANK SCHON MAL DAS AUTO VOLL, ICH GEB GLEICH VOLLGAS (Angriff)

Durch diese Änderung können Bots nun versuchen, Skillshots auszuweichen ... aber das ist sicher noch nicht perfekt. Beispielsweise läuft bei Anivias „Blitzeis“ die Abklingzeit erst, wenn er die volle Distanz zurückgelegt hat oder erneut aktiviert wurde. Deshalb wissen Bots nicht, dass er ausgeführt wurde. Ahris „Kugel der Täuschung“ kehrt zurück, was dazu führen kann, dass Bots ihr auf dem Hinweg ausweichen, auf dem Rückweg aber nicht. Es gibt auch andere Fähigkeiten, mit denen dieses System noch nichts anfangen kann, aber einigen Skillshots auszuweichen, ist definitiv besser, als keinem einzigen auszuweichen!

Aktualisierung der Bot-Kombos und -Ausstattung

Mal abgesehen von den oben beschriebenen kniffligeren Fällen konnten wir einige Hebel in Bewegung setzen, um die Bots zu vermenschlichen, einfach indem wir eine ganze Menge Zeit investierten – vor allem in das Aktualisieren von Fähigkeitskombinationen und das Zusammenstellen von Gegenständen. Unser Spezi für die Qualitätssicherung, Riot Afic, war dabei mit seinem Wissen auf Diamant-Niveau eine große Hilfe, sodass die neuen Bots nun sehr viel zeitgemäßere Kombos nutzen und sinnvollere Gegenstände anlegen.

Um das in diesem Zusammenhang zu klären: Unser Annie-Bot würde nun ein Feuerwerk aus „Blitz“-„Tibbers“-Betäubung zünden. Ihr solltet also die entsprechende, feuerfeste Unterwäsche nicht vergessen.

Menschlichere Bots

Es dürfte keine große Überraschung darstellen, dass Bots, die versuchen, mit einer ganzen Menge mehr Variablen zu jonglieren, um einiges rechnerintensiver daherkommen. Die Ingenieure in unserem Team, RiotAaronMike und RiotWooTang, haben bei der Optimierung unseres Codes ganze Arbeit geleistet, sodass wir diese Aktualisierung ohne Einfluss auf die Serverlast über die Bühne kriegen.

Eine gute Möglichkeit, die Bots sowohl effizienter als auch menschlicher zu gestalten, bestand darin, die Frequenz, mit der sie ihre Umgebung scannen und reagieren, entsprechend der Situation zu verlangsamen. Anfänger-Bots prüfen die Lage nun nur noch etwa ein Drittel so häufig wie vor der Überarbeitung, während Fortgeschrittenen-Bots zwischen 50 % und 100 % ihrer vorherigen Scanrate abhängig von der Bedrohungslage erreichen. Das ist noch weit von „langsam“ entfernt, aber sie sind nicht ganz so schnell wie vorher, was dazu beiträgt, diese unrealistischen, übermenschlichen Reaktionen abzumildern.

Diese Änderungen und eine Fülle von Schrauben und Rädchen haben das zuwege gebracht, was wir als menschlichere Bots empfinden. Sie erreichen sicherlich nicht die Diamant-Klasse (vielleicht nicht einmal Silber) – aber das war für den Moment auch nicht unser Ziel. Unsere nächsten Schritte bestehen darin, neue Wege zu suchen, auf den neuen Bots aufzubauen und für die ersten paar Begegnungen von Spielern eine schönere Koop-Erfahrung hinzuzaubern. Ihr solltet schon bald weitere Informationen zu diesem nächsten Projekt zu lesen bekommen!

RoamingNumeral


5 years ago

Suchwörter: 
DevBlog

Related Content