Welche Verhaltensweisen sollten dazu führen, dass ein KI-Kämpfer nicht perfekt wird?

19

Wenn man einen NPC-Kämpfer herstellt, ist es leicht zu verstehen , was zu tun ist , um eine Robotertodesmaschine zu erhalten, indem Kampftaktiken, Timing und Angriffstypen optimiert werden. Es ist jedoch schwieriger (und im Kampf interessanter), einen eigenwilligen, unvorhersehbaren Feind zu bekommen. Welche Verhaltensweisen (Algorithmen?) Sind nützlich, um einen organischeren, unkonventionelleren Feind zu erschaffen?

Bearbeiten: Mein spezieller Anwendungsfall betrifft MMO-ähnliche Gegner, z. B. World of Warcraft, obwohl weniger Grafiken erforderlich sind. Beachten Sie, dass dies sowohl menschliche als auch unmenschliche Feinde (Tiere, Monster usw.) bedeutet.

Kzqai
quelle

Antworten:

14

Es gibt einen sehr interessanten Artikel über Gamasutra: Intelligente Fehler: Wie Sie Dummheit in Ihren AI-Code integrieren , von Mick West.

Dieser Artikel handelt von einer Poolspiel-KI. Bei der Implementierung einer solchen KI ist es ziemlich einfach, bei jedem Schuss einen Ball zu machen. Eine vereinfachte Möglichkeit, die KI weniger "schlau" zu machen, besteht darin, wie in anderen Antworten vorgeschlagen, der Berechnung einen Zufallsfaktor hinzuzufügen, wodurch die KI mehr verfehlt.

Bei einem solchen Ansatz gibt es jedoch zwei Hauptmängel. Erstens ist es unvorhersehbar. Für einen Spieler, der im "Easy" -Modus spielt, ist es nicht akzeptabel, dass die KI "Glück" hat. Was ist, wenn Ihr Zufallsfaktor die KI dazu bringt, einen noch besseren Schlag zu erzielen, einen wertvolleren Ball zu treffen oder eine Combo zu machen? Sie wissen nicht, was passieren wird, und Glück zu haben, sollte für die KI in einem einfachen Modus keine Option sein.

Der andere Fehler ist, dass der Spieler versucht, ein Muster im AI-Verhalten zu identifizieren. Und mit einem einfachen Zufallsfaktor gibt es kein Muster. Das heißt aber nicht, dass der Spieler kein Muster sieht, im Gegenteil. Sobald die KI Glück hat, sieht der Spieler eine Strategie in seinem Verhalten. In dem Artikel beschweren sich die Spieler darüber, dass die KI eine Positionsstrategie spielt. Wenn es nur einen Zufallsfaktor für die Winkelgenauigkeit gibt .

Aus meiner Sicht sollte eine nicht perfekte KI nach dem Lesen dieses Artikels, der die Augen öffnet, niemals die Randomisierung als Vereinfachungsfaktor verwenden. Das Gegenteil ist der Fall. Eine einfachere KI sollte schlauer sein, aber versuchen, dem Spieler zu helfen.

Im Beispiel des Artikels "Pool-Spiel" bestand die beste Option für die Implementierung einer KI im "einfachen Modus" darin, alle Zufallsfaktoren zu entfernen und eine Positionierungsstrategie hinzuzufügen. Die KI würde versuchen, Bälle zu schlagen, um dem Spieler einen einfachen und tollen Schuss zu bereiten .

Auf diese Weise wird der Spieler glauben, er hätte Glück gehabt. Und das ist es, was Sie von einem Spiel erwarten, wenn Sie es einfach spielen.

Tyn
quelle
1
Es wäre für die KI auch nützlich, sich zu merken, was der Spieler ausnutzen kann. Die Entwickler denken vielleicht, dass er einen "einfachen Pot" hat, aber wenn er es nicht kann, sollte die KI die Falltaktik weniger anwenden. Es ist auch von Vorteil, weil Sie den Spieler trainieren, sich daran erinnern können, was er nicht kann, und dies absichtlich von Zeit zu Zeit ausnutzen können, bis er es kann. Auf diese Weise ist der Spieler weder gelangweilt noch frustriert.
Jonathan Connell
Während ich mit nicht mit der Randomisierung zustimmen, bin ich nicht einverstanden mit „helfen , den Spieler“: dass nur viel schlimmer wie Betrug, wäre , weil Sie würden liegend auf den Player.
o0 '.
@ Lo'oris: Naja, ich sehe es nicht als Lüge. Wenn der Spieler dem Spiel sagt, dass es ihm leichter gehen soll, erwartet er, dass das Spiel sanft ist. Wenn du ein Spiel spielst, kannst du es wirklich gut mit einem Freund machen, der es gerade entdeckt. Ich finde es ganz okay, ihm Gelegenheiten zu geben. Es macht das Spiel für alle angenehmer.
Tyn
1
Es gibt einen guten Blog-Beitrag von Shawn Hargreaves über Randomisierung und die Fähigkeit eines Menschen, zufällige Muster zu erkennen. Dies würde bedeuten, dass ein Spieler in diesem Fall die Taktik eines KI-Spielers falsch einschätzt.
Jonathan Connell
1
Tatsächlich halte ich die Randomisierung der Genauigkeit für einen guten Weg. Mit einem echten Spieler, der nicht so toll ist, macht er manchmal einen Fehler und schlägt einen besseren Ball ein.
AttackingHobo
10

Das Schlüsselkonzept besteht darin, zu vermeiden, dem NPC "perfektes Wissen" zu vermitteln.

  • Randomisierte Fehlerquote bei Entscheidungen oder Aktionen, die eine Berechnung beinhalten. offensichtliches Beispiel ist das Zielen (dh Stormtrooper-Scharfschützen). Wenn sie dich nicht immer schlagen, ist es realistischer.
  • Sichtlinie ... wenn sie dich nicht sehen können, kann dies ein interessantes Katz- und Mausspiel sein.
  • Je nach Art des Spiels kann die Teamtaktik für Gegner interessanter sein, die sich an die jeweilige Situation anpassen. Wenn Sie zum Beispiel angeschossen werden, würden Sie nicht blindlings in Deckung gehen, bis das einfallende Feuer nachlässt. Oder vielleicht würden Sie sich wohler fühlen, wenn Sie Teamkollegen in der Nähe haben ... Sie können diese Verhalten simulieren, damit sich die NPCs so verhalten, als wären sie am Leben.

Ich bin mir sicher, dass es eine Menge weiterer Beispiele geben wird. Vielleicht könntest du uns etwas über dein Spiel erzählen und wir können es genauer beschreiben :-)

Joel Martinez
quelle
4

Eine schnelle Möglichkeit, eine perfekte KI kampffähig zu machen, besteht darin, dass sie unvollkommene Entscheidungen trifft, indem sie entweder ihren Eingängen oder ihren Ausgängen etwas Rauschen hinzufügt. Mit Rauschen meine ich einige zufällige Faktoren.

Hier ist ein kleines Beispiel für die Ausgabe:

  • Der perfekte Algorithmus ergibt drei mögliche Aktionen, die mit einer Punktzahl bewertet werden.
  • Fügen Sie jeder Punktzahl einen zufälligen Wert hinzu.
  • Wählen Sie die beste Punktzahl.

Hier sind einige Ideen für die Eingabe:

  • Wenn Aktionen auf der Gesundheit des Gegners basieren, addieren Sie einen zufälligen Faktor (etwa +/- 10 für einen 0-100-Lebensbalken) zum wahrgenommenen Zustand der KI.
  • Gleiches gilt für die Bewertung von Aktionen. Wenn KI weiß, dass einige Angriffe stärker sind als andere, addieren oder subtrahieren Sie zufällig einige Werte.

Eine naheliegende Sache, die berücksichtigt werden muss, ist die Geschwindigkeit der KI. In den meisten Spielen können AIs VIEL schneller als Menschen reagieren (insbesondere im Kampf) und scheinbares Multitasking ausführen (in RTS-Spielen sehr gut sichtbar). Sie müssen also darauf reagieren, indem Sie die KI ein wenig langsam halten (möglicherweise adaptiv) und die Menge der Dinge begrenzen, die sie in einem bestimmten Zeitrahmen ausführen kann (dh eine Aktion pro halbe Sekunde).

Hoffe das hilft und viel Glück!

jv42
quelle
3

Es ist schwierig, eine direkt nützliche Antwort zu geben, ohne zu wissen, was genau Sie versuchen.

Ich habe zu diesem Thema zwei Dinge zu sagen, die Ihnen helfen könnten.

Als Erstes (und dies ist bei weitem das Wichtigste) ist Ihre Kampftaktik irrelevant, wenn Sie versuchen, den Feind interessanter und menschlicher zu machen. Der Trick, um Spieler zum "Glauben" zu bringen, dass ein Feind lebt, besteht darin, Animation, Geräusche und kleine Details zu verwenden, um menschliches Verhalten zu implizieren. Die perfekte KI könnte um eine Ecke gehen, einen Spieler sehen und schießen. Eine menschliche KI könnte um eine Ecke gehen, einen Spieler sehen, einen überraschten Blick auf sein Gesicht werfen und alarmiert schreien und schießen. Der erste scheint ein Roboter zu sein. Der zweite scheint menschlich. Beide verwenden in jeder Hinsicht die gleiche KI, mit Ausnahme des Einfügens der Animation kurz vor dem Aufnehmen (oder, um das taktische Verhalten während des Aufnehmens gleich zu halten ).

Zweitens vermeiden Sie Randomisierung. Spieler schätzen es nicht so sehr, wie Designer glauben wollen. Spieler sehen nicht, dass der Computer eine 1 von 100 generiert hat, gefolgt von einer 5, 3 und 4, sodass die Fehlerfaktoren für die letzten vier Schüsse nur 1%, 5%, 3% und 4% waren, und das ist warum bist du in dieser Runde in einer halben Sekunde gestorben? " Die Spieler sehen nur Feinde, die sie manchmal wild verfehlen und manchmal ohne erkennbaren Grund wiederholt festnageln, was unglaublich frustrierend ist. Bei gutem Spieldesign geht es hauptsächlich darum, Muster zu erstellen, die menschliche Spieler könnenbeobachten, lernen und schlagen und den Erfolg des Spielers auf der Grundlage seines eigenen Urteilsvermögens und seiner eigenen Fähigkeiten und Intuition bestimmen, anstatt darüber zu entscheiden, ob der Spieler Glück hat. Der Drang zum Zufallsprinzip beruht auf Erfahrungen mit Tisch- und Glücksspielen, die sich erheblich von Videospielen unterscheiden (und was in einem Medium funktioniert, ergibt in einem anderen oft keinen Sinn).

Sean Middleditch
quelle
1

Ich erinnere mich, dass es bei unserem AI-Kurs am College um das Thema ging, AI "menschlicher" und weniger perfekt zu machen. Das war vor vielen Jahren, also erinnere ich mich nur an ein paar Punkte, die mir in den Sinn kamen.

  • Verwenden Sie "Bibliotheken von Zügen". Wenn du gegen einen Ork kämpfst, gib ihm 3 Kampfroutinen, die sie hin und wieder wiederholen. Dies macht Kämpfe einfacher, da sie vorhersehbarer sind. Dies scheint das Gegenteil von dem zu sein, was Sie wollen, macht die KI jedoch weniger zu einer "perfekten Maschine" und mehr zu einer "Noob, die denselben Zug immer und immer wieder wiederholt".
  • Wenn möglich, suboptimieren. Wenn Ihre KI, wie Sie sagen, darauf basiert, den besten Zug zu berechnen, begrenzen Sie diese Berechnung künstlich. Machen Sie die Suche flacher oder begrenzen Sie die Anzahl der Schritte. Anstelle des besten Zuges, den die KI je gemacht hat, wählt sie stattdessen einfach einen guten Zug. Dies kann Ihrem Feind viel Abwechslung bringen, da es viel mehr gute als die besten Moves gibt.
  • Mit Absicht Fehler machen. Wählen Sie anstelle des besten Zuges den zweit- oder drittbesten. Oder wählen Sie sogar einen Zug mit schlechtem Nutzen. Dies kann Ihre "Unvorhersehbarkeit" beheben.

Natürlich sind dies nur allgemeine Ratschläge, die für jeden Fall studiert und getestet werden sollten, und Ihre KI kann in der Tat noch künstlicher aussehen als beabsichtigt. Ich denke jedoch, dass sie ein guter Ausgangspunkt sind.

angarg12
quelle
0

Ich habe gerade dieses Pop-up gesehen und wollte eine Idee teilen, die ich in der Vergangenheit verwendet habe.

Angenommen, der Charakter hat drei Züge und jeder wird gewertet. Eine höhere Punktzahl ist ein besserer Zug. (Andere Antworten beziehen sich auf das Hinzufügen von Rauschen zur Erstellung dieser Partitur.)

  • Angriff mit einem Schwert (30 Punkte)
  • Feuerzauber (50 Punkte)
  • Eiszauber (20 Punkte)

Summiere die Gesamtpunkte (100)

Nimm den Intelligenzstatus des Charakters aus dem maximal möglichen Wert für diesen Status heraus (sagen wir 60 von 100).

Erzeugen Sie eine Zufallszahl zwischen 0 (oder einem anderen Stockwerk) und dem Intelligenzverhältnis (0,6), multiplizieren Sie diese mit den Gesamtpunkten (100). In unserem Beispiel ist das Ergebnis 45.

Jetzt fängst du an, die schlechten Züge von diesem Wert zu subtrahieren, bis du Null erreichst. (In der Reihenfolge subtrahieren.)

Zuerst betrachten wir den Eiszauber, der 20 Punkte erzielt hat. 45 - 20 = 25. Dieser liegt über Null, also werfen wir den Eiszauber aus.

Zweitens, schauen Sie sich den Angriff mit einem Schwert an, das 30 Punkte wert ist. 25 - 30 = -5. Wir haben unsere Schwelle erreicht und wählen den Angriff mit einer Schwertaktion.

In diesem System wählt ein Charakter mit geringer Intelligenz nicht den besten Zug aus. Und ein Charakter mit hoher Intelligenz wählt oft den besten Zug aus. (In diesem Beispiel wählt ein Charakter mit perfekter Intelligenz in 50% der Fälle den besten Zug.)

Wenn Sie der Zufallszahl einen Floor-Mechanismus hinzufügen, erhöht sich die Wahrscheinlichkeit, dass bessere Züge ausgewählt werden.

Xtros
quelle