Pacman: Wie finden die Augen ihren Weg zurück zum Monsterloch?

321

Ich fand viele Hinweise auf die KI der Geister in Pacman, aber keiner von ihnen erwähnte, wie die Augen ihren Weg zurück zum zentralen Geisterloch finden, nachdem ein Geist von Pacman gefressen wurde.

In meiner Implementierung habe ich eine einfache, aber schreckliche Lösung implementiert. Ich habe nur an jeder Ecke fest codiert, in welche Richtung ich gehen soll.

Gibt es eine bessere / oder die beste Lösung? Vielleicht eine generische, die mit verschiedenen Level-Designs funktioniert?

RoflcoptrException
quelle
11
Sind Sie sicher, dass Hardcodierung an der Ecke gut genug ist? Dies garantiert nicht die beste Route. Stellen Sie sich vor, der Geist steht vor einem langen, schmalen Durchgang. Nach Ihrem Algorithmus müsste er die gesamte Passage hinuntergehen, eine Ecke erreichen und dann den schnellsten Weg nehmen. Wenn Sie auf jedem Feld fest codiert haben, in welche Richtung Sie gehen sollen, weiß er möglicherweise, dass Sie sich zuerst umdrehen müssen.
Mark Peters
3
@Mark, hängt von Ihrer Definition an einer Ecke ab. Wenn es sich um eine T-Verbindung handelt, auch wenn Sie gerade in die oberste Zeile gehen, ist dies in Ordnung.
Thorbjørn Ravn Andersen
1
@ Thorbjørn: Ich spreche nicht einmal von Kreuzungen. Schauen Sie sich dieses Forum an: en.wikipedia.org/wiki/File:Pac-man.png . Wenn sich der Geist nach rechts bewegte und am zweiten Punkt von links unten positioniert war, traf er für eine Weile keine Kreuzung. Dadurch bewegt es sich 10 Felder weiter als wenn es rückwärts (links) gedreht und den kürzesten Weg genommen hätte.
Mark Peters
6
Ihre Lösung verwendet Wegpunkte (oder Brotkrumen), und ich denke, dass dies eine häufig verwendete Technik ist, um Algorithmen zur Pfadfindung zu beschleunigen.
Nick Dandoulakis
1
danke für alle antworten! Ich habe mich einfach an meine vorherige Lösung gehalten und die Anweisungen an jeder Ecke fest codiert. Um dies generisch zu tun, muss der Leveldesigner / eine Level-Datei diese Informationen auch in der Level-Definition definieren.
RoflcoptrException

Antworten:

152

Eigentlich würde ich sagen, dass Ihr Ansatz eine ziemlich großartige Lösung ist, mit fast null Laufzeitkosten im Vergleich zu jeder Art von Pfadfindung.

Wenn Sie es benötigen, um es auf beliebige Karten zu verallgemeinern, können Sie einen beliebigen Pfadfindungsalgorithmus verwenden - die Breitensuche ist beispielsweise einfach zu implementieren - und damit berechnen, welche Richtungen an jeder Ecke codiert werden sollen, bevor das Spiel ausgeführt wird.

EDIT (11. August 2010): Ich wurde gerade auf eine sehr detaillierte Seite des Pacman-Systems verwiesen: Das Pac-Man-Dossier , und da ich hier die akzeptierte Antwort habe, hatte ich das Gefühl, ich sollte sie aktualisieren. Der Artikel scheint nicht explizit die Rückkehr zum Monsterhaus zu behandeln, aber er besagt, dass die direkte Wegfindung in Pac-Man ein Fall von Folgendem ist:

  • Bewegen Sie sich weiter in Richtung der nächsten Kreuzung (obwohl dies im Wesentlichen ein Sonderfall von 'ist, wenn Sie die Wahl haben, wählen Sie die Richtung, in der Sie Ihre Richtung nicht umkehren müssen, wie im nächsten Schritt gezeigt).
  • Schauen Sie sich an der Kreuzung die angrenzenden Ausgangsplätze an, mit Ausnahme desjenigen, von dem Sie gerade gekommen sind.
  • Wählen Sie eine aus, die dem Ziel am nächsten liegt. Wenn sich mehr als eine gleich nahe am Ziel befindet, wählen Sie die erste gültige Richtung in dieser Reihenfolge: oben, links, unten, rechts.
Kylotan
quelle
16
Ich denke, er meint, Sie könnten es zur Laufzeit berechnen (wenn das Level geladen ist, aber bevor Sie anfangen, es zu spielen), aber nur einmal. Das ist nicht schwer zu pflegen.
Mark Peters
3
Ja, oder wenn es ein Tool zum Erstellen der Karten gibt, als Teil davon.
Kylotan
6
Es ist nichts Falsches daran, die Rückwege vorab zu berechnen. Sie tauschen Speicher (Pfade) gegen Laufzeitleistung.
Steve Kuo
6
Vielen Dank. Ich denke, ich bleibe bei dieser Lösung. Weiß jemand, wie es im ursprünglichen Pacman gemacht wurde?
RoflcoptrException
4
Nein, ich nicht. In der ursprünglichen Frage wurde dieser Begriff verwendet, aber er ist rechtlich nicht bindend.
Kylotan
85

Ich habe dieses Problem für generische Levels folgendermaßen gelöst: Bevor das Level beginnt, mache ich eine Art "Flood Fill" aus dem Monsterloch; Jedes Plättchen des Labyrinths, das keine Wand ist, erhält eine Zahl, die angibt, wie weit es vom Loch entfernt ist. Wenn sich die Augen also auf einer Kachel mit einem Abstand von 68 befinden, sehen sie, welche der benachbarten Kacheln einen Abstand von 67 hat. das ist dann der richtige Weg.

Erich Kitzmüller
quelle
15
Ja. Floodfill ist sehr gut für die Wegfindung in Situationen geeignet, in denen die Welt nicht zu groß ist, um sie lebensfähig zu machen. Ich würde denken, dass es auch in großen Welten verwendet werden kann, indem ein gröberes Gitter eingeführt wird, dessen Konnektivität vorberechnet wurde. Es würde die Dinge etwas aus dem Weg räumen lassen, aber das wäre besser als die Staus, die ich in solchen Spielen gesehen habe.
Loren Pechtel
1
Um Platz zu sparen (für größere Welten oder eingeschränkte Systeme), können Sie die Fahrtrichtung an jeder Kreuzung speichern, anstatt für jede Kachel einen Wert zu speichern. Dies ist im Wesentlichen das, was OP vorschlug.
BlueRaja - Danny Pflughoeft
BlueRaja: Sicher, aber das ist komplexer und das Ergebnis ist nicht so optimal - der Geist wird zwischen zwei Kreuzungen gefressen, sodass er möglicherweise für einige Zeit in die falsche Richtung läuft. Meine Lösung hat auf einem en.wikipedia.org/wiki/HP_200LX gut funktioniert. Wie viel eingeschränkter könnte sie sein?
Erich Kitzmüller
5
(Ich bin spät dran ...) Ja, Flutfüllung ist gut, aber Sie benötigen keine vollständige Zahl, sondern nur eine Richtung (zwei Bits) in jedem Quadrat, um auf das nächste zu verwendende Quadrat zu zeigen.
Matthieu M.
Matthieu: Ja, das wäre eine mögliche Optimierung.
Erich Kitzmüller
42

Als Alternative zu herkömmlichen Pfadfindungsalgorithmen können Sie sich das (entsprechend benannte!) Pac-Man Scent Antiobject-Muster ansehen .

Sie könnten beim Start den Duft von Monsterlöchern im Labyrinth verbreiten und die Augen nach Hause folgen lassen.

Sobald der Geruch eingerichtet ist, sind die Laufzeitkosten sehr niedrig.


Edit: Leider wurde der Wikipedia-Artikel gelöscht, also WayBack Machine zur Rettung ...

Dan Vinton
quelle
2
Das würde meine Antwort sein. Es ist im Wesentlichen dasselbe wie bei ammoQ, aber ich erinnere mich immer an den Pacman-Geruch :)
Luke Schafer
Der Wikipedia-Artikel ist anscheinend tot / gelöscht. Top Google Ergebnis ist dieser Thread, aber ich denke, das kommt nahe.
David
2
Ich war für eine Sekunde verwirrt, verstand dann aber sofort, was unter "Geruch" zu verstehen ist. Es ist eine großartige Möglichkeit, diese skalaren Feldsachen zu beschreiben!
Steven Lu
18

Jede einfache Lösung, die funktioniert, ist wartbar, zuverlässig und funktioniert gut genug, ist eine gute Lösung. Es klingt für mich so, als hätten Sie bereits eine gute Lösung gefunden ...

Eine Pfadfindungslösung ist wahrscheinlich komplizierter als Ihre aktuelle Lösung und erfordert daher eher ein Debugging. Es wird wahrscheinlich auch langsamer sein.

IMO, wenn es nicht kaputt ist, reparieren Sie es nicht.

BEARBEITEN

IMO, wenn das Labyrinth fixiert ist dann Ihre aktuelle Lösung ist gut / elegant - Code. Machen Sie nicht den Fehler, "gut" oder "elegant" mit "klug" gleichzusetzen. Einfacher Code kann auch "gut" und "elegant" sein.

Wenn Sie konfigurierbare Labyrinth-Ebenen haben, sollten Sie möglicherweise nur die Pfadfindung durchführen, wenn Sie die Labyrinthe zum ersten Mal konfigurieren. Am einfachsten wäre es, den Labyrinthdesigner dazu zu bringen, dies von Hand zu tun. Ich würde mich nur darum kümmern, dies zu automatisieren, wenn Sie eine Unmenge Labyrinthe haben ... oder Benutzer sie entwerfen können.

(Nebenbei: Wenn die Routen von Hand konfiguriert werden, könnte der Labyrinthdesigner ein Level durch die Verwendung suboptimaler Routen interessanter machen ...)

Stephen C.
quelle
Ja, es funktioniert. Ich möchte jedoch guten Code schreiben und nicht nur Code. Außerdem habe ich den letzten Satz in meiner Frage hinzugefügt, sodass der Algorithmus nach Möglichkeit nicht nur für ein Labyrinth, sondern für mehrere gelten sollte.
RoflcoptrException
Labyrinthe können auch generiert werden (ich habe einen Algorithmus, der gut aussehende Pacman-Labyrinthe generiert), also ist ein bisschen Automatisierung der
richtige
"... oder Benutzer können sie entwerfen." In diesem Fall haben Sie eine Unmenge Labyrinthe.
Phuzion
@phuzion - das ist mir bewusst. Es gibt jedoch einen Unterschied zwischen den beiden Fällen. Wenn es das OP ist, das ein Bazzilion-Labyrinth erstellt, ist es unpraktisch, das Routing von Hand erstellen zu müssen. Wenn es sich um einen Endbenutzer handelt, bedeutet dies, dass das OP Dokumentation schreiben, endlose Fehlerbehebung bei den Labyrinthen der Endbenutzer durchführen, endlose Beschwerden darüber vorbringen muss, wie unfreundlich es ist usw. Mit anderen Worten, die Gründe für die Implementierung der automatischen Routengenerierung sind unterschiedlich .
Stephen C
14

Im ursprünglichen Pacman fand der Geist den gelben Pillenfresser durch seinen "Geruch", er würde eine Spur auf der Karte hinterlassen, der Geist würde zufällig herumwandern, bis sie den Geruch fanden, dann würden sie einfach dem Geruchspfad folgen, zu dem sie direkt führten der Spieler. Jedes Mal, wenn sich Pacman bewegte, wurden die "Geruchswerte" um 1 verringert.

Ein einfacher Weg, um den gesamten Prozess umzukehren, wäre eine "Pyramide des Geistergeruchs", deren höchster Punkt in der Mitte der Karte liegt. Dann bewegt sich der Geist einfach in Richtung dieses Geruchs.

Ivo Wetzel
quelle
Ich mag diesen Ansatz wirklich und ich werde auch diesen versuchen
RoflcoptrException
5
Das ist nicht richtig; Wenn sie alle diesem Algorithmus folgen würden, würden sie ihm am Ende eine einzelne Datei nachjagen. Das Verhalten jedes Geistes ist unterschiedlich; Weitere Informationen finden Sie im Wikipedia-Artikel.
Teiler
5

Angenommen, Sie haben bereits die Logik, die erforderlich ist, um Pacman zu jagen, warum sollten Sie das nicht wiederverwenden? Ändern Sie einfach das Ziel. Es scheint viel weniger Arbeit zu sein, als zu versuchen, eine ganz neue Routine mit genau derselben Logik zu erstellen.

John Gardeniers
quelle
Ja, ich habe die Logik, Pacman zu verfolgen, bereits implementiert, aber ich bin auch nicht zufrieden damit;)
RoflcoptrException
Nach meiner Erfahrung (ich liebe es, Pacman-Versionen nur zum Spaß zu schreiben) kann dies dazu führen, dass die Augen lange Zeit außerhalb des Lochs stecken bleiben. Das liegt daran, dass der Verfolgungsalgorithmus im Allgemeinen nach dem Motto "Wenn Pacman im Norden ist, gehe nach Norden" geht, aber das Labyrinth könnte "Fallen" enthalten, in denen die Augen zuerst nach Süden gehen müssten. Da sich Pacman bewegt, wird der Geist früher oder später entkommen, aber das Loch ist ein festes Ziel. (Hinweis: Ich spreche von generierten Labyrinthen)
Erich Kitzmüller
3

Wie wäre es mit jedem Quadrat, das einen Abstand zum Zentrum hat? Auf diese Weise können Sie für jedes gegebene Quadrat Werte von unmittelbaren Nachbarquadraten in alle möglichen Richtungen erhalten. Sie wählen das Quadrat mit dem niedrigsten Wert und bewegen sich zu diesem Quadrat.

Die Werte würden mit jedem verfügbaren Algorithmus vorberechnet.

mvbl fst
quelle
Ich würde das vorschlagen. Eine nach außen gerichtete Flutfüllung beginnend am 'Monsterloch'. Ich denke, Ihre Antwort würde von einem Bild profitieren.
AjahnCharles
3

Dies war die beste Quelle, die ich finden konnte, wie es tatsächlich funktionierte.

http://gameai.com/wiki/index.php?title=Pac-Man#Respawn Wenn die Geister getötet werden, kehren ihre körperlosen Augen zu ihrem Ausgangspunkt zurück. Dies wird einfach erreicht, indem das Zielplättchen des Geistes auf diesen Ort gesetzt wird. Die Navigation verwendet dieselben Regeln.

Es macht tatsächlich Sinn. Vielleicht nicht die effizienteste der Welt, aber eine ziemlich gute Möglichkeit, sich keine Sorgen um einen anderen Staat oder irgendetwas in dieser Richtung machen zu müssen. Sie ändern nur das Ziel.

Randnotiz: Ich wusste nicht, wie großartig diese Pac-Man-Programmierer waren, die im Grunde genommen ein ganzes Nachrichtensystem auf sehr kleinem Raum mit sehr begrenztem Speicher erstellt haben ... das ist erstaunlich.

Midpipps
quelle
2

Ich denke, Ihre Lösung ist richtig für das Problem, einfacher als das, eine neue Version "realistischer" zu machen, bei der Geisteraugen durch Wände gehen können =)

Hernán Eche
quelle
2
Um noch mehr Realismus hinzuzufügen, erlauben Sie den Geistern selbst, sich durch Wände zu bewegen: D
Thomas Eding
3
Das sind die undurchsichtigen Wände des Geistes, aber die Geister zweiter Ordnung (Geist eines Geistes) sind transparenter. (Sie konnten viele Benutzerhandbücher mit Fehlern finden, die in Funktionen umgewandelt wurden)
Hernán Eche
1
+1 für "Geister zweiter Ordnung" - oh ja, die Ableitung eines Geistes muss sicherlich nur Objekte erster Ordnung wie Wände überschreiten ... :)
Assad Ebrahim
2

Hier ist ein Analogon und ein Pseudocode zur Flutfüllungsidee von ammoQ.

queue q
enqueue q, ghost_origin
set visited

while q has squares
   p <= dequeue q
   for each square s adjacent to p
      if ( s not in visited ) then
         add s to visited
         s.returndirection <= direction from s to p
         enqueue q, s
      end if
   next
 next

Die Idee ist, dass es sich um eine Breitensuche handelt. Jedes Mal, wenn Sie auf ein neues benachbartes Quadrat s stoßen, führt der beste Weg durch p. Es ist O (N), glaube ich.

Mark Peters
quelle
2

Ich weiß nicht viel darüber, wie Sie Ihr Spiel implementiert haben, aber Sie könnten Folgendes tun:

  1. Bestimmen Sie die relative Position der Augen zum Tor. dh ist es oben gelassen? Gleich darunter?
  2. Bewegen Sie dann die Augen in eine der beiden Richtungen (z. B. bewegen Sie sie nach links, wenn sie sich rechts vom Tor befinden, und unterhalb des Tors) und prüfen Sie, ob Wände vorhanden sind, die Sie daran hindern.
  3. Wenn es Wände gibt, die Sie daran hindern, bewegen Sie es in die andere Richtung (z. B. wenn die Koordinaten der Augen relativ zum Stift rechts nach Norden liegen und es sich gerade nach links bewegt, aber eine Wand im Weg ist, machen Sie es bewege dich nach Süden.
  4. Denken Sie daran, jedes Mal zu überprüfen, um sich zu bewegen, um zu überprüfen, wo sich die Augen relativ zum Tor befinden, und um festzustellen, ob keine Breitengradkoordinate vorhanden ist. dh es ist nur über dem Tor.
  5. Wenn es sich nur über dem Tor befindet, bewegen Sie sich nach unten, wenn es eine Wand gibt, bewegen Sie sich entweder nach links oder rechts und machen Sie diese Nummer 1 - 4 weiter, bis die Augen in der Höhle sind.
  6. Ich habe noch nie eine Sackgasse in Pacman gesehen. Dieser Code berücksichtigt keine Sackgassen.
  7. Außerdem habe ich eine Lösung hinzugefügt, wann die Augen zwischen einer Wand "wackeln" würden, die sich über den Ursprung in meinem Pseudocode erstreckt.

Ein Pseudocode:

   x = getRelativeOppositeLatitudinalCoord()
   y
   origX = x
    while(eyesNotInPen())
       x = getRelativeOppositeLatitudinalCoordofGate()
       y = getRelativeOppositeLongitudinalCoordofGate()
       if (getRelativeOppositeLatitudinalCoordofGate() == 0 && move(y) == false/*assume zero is neither left or right of the the gate and false means wall is in the way */)
            while (move(y) == false)
                 move(origX)
                 x = getRelativeOppositeLatitudinalCoordofGate()
        else if (move(x) == false) {
            move(y)
    endWhile

quelle
2

Der Vorschlag von dtb23, an jeder Ecke nur eine zufällige Richtung zu wählen, und schließlich werden Sie feststellen, dass das Monsterloch schrecklich unzulänglich klingt.

Sie können jedoch den ineffizienten Return-to-Home-Algorithmus verwenden, um das Spiel unterhaltsamer zu gestalten, indem Sie den Schwierigkeitsgrad des Spiels variieren. Sie würden dies tun, indem Sie einen der oben genannten Ansätze wie Ihre Wegpunkte oder die Flutfüllung anwenden, dies jedoch nicht deterministisch. Sie können also an jeder Ecke eine Zufallszahl generieren, um zu entscheiden, ob Sie den optimalen Weg oder eine zufällige Richtung wählen.

Mit fortschreitendem Level verringern Sie die Wahrscheinlichkeit, dass eine zufällige Richtung eingeschlagen wird. Dies würde zusätzlich zur Levelgeschwindigkeit, Geistergeschwindigkeit, Pillenfresspause (usw.) einen weiteren Hebel für den Gesamtschwierigkeitsgrad hinzufügen. Sie haben mehr Zeit zum Entspannen, während die Geister nur harmlose Augen sind, aber diese Zeit wird im Laufe der Zeit immer kürzer.

imoatama
quelle
2

Kurze Antwort, nicht sehr gut. :) Wenn Sie das Pac-Man-Labyrinth ändern, werden die Augen nicht unbedingt zurückkommen. Einige der herumschwebenden Hacks haben dieses Problem. Es kommt also auf ein kooperatives Labyrinth an.

dwidel
quelle
2

Ich würde vorschlagen, dass der Geist den Weg speichert, den er vom Loch zum Pacman genommen hat. Sobald der Geist stirbt, kann er diesem gespeicherten Pfad in umgekehrter Richtung folgen.

Fischer Ludrian
quelle
2
Dieser Weg wird höchstwahrscheinlich zu lang sein
Ahmad Y. Saleh
Wenn Sie einen Knoten erneut besuchen, können Sie eine Schleife aus dem Verlauf entfernen. Das würde es ein bisschen direkter machen. Könnte interessanter sein als immer dem gleichen direkten Pfad zu folgen, aber ziemlich oft enthält es einige ziemlich alberne Fast-Schleifen (z. B. 3 Seiten eines Quadrats).
AjahnCharles
1

Wenn Sie wissen, dass Pacman-Pfade nicht zufällig sind (dh jedes spezifische Level 0-255, Inky, Blinky, Pinky und Clyde funktionieren genau für dieses Level).

Ich würde dies nehmen und dann vermuten, dass es einige Hauptpfade gibt, die das gesamte Labyrinth als "Rückweg" umschließen, den ein Augapfelobjekt nimmt, bis es dort ist, wo Pac Man den Geist gegessen hat.

Inkognito
quelle
1

Die Geister in Pacman folgen mehr oder weniger vorhersehbaren Mustern, wenn sie versuchen, zuerst auf X oder Y zu passen, bis das Ziel erreicht ist. Ich habe immer angenommen, dass dies genau das gleiche für Augen ist, die ihren Weg zurück finden.

Sockel
quelle
1
  1. Speichern Sie vor Spielbeginn die Knoten (Kreuzungen) in der Karte
  2. Wenn das Monster stirbt, nimm den Punkt (die Koordinaten) und finde den nächsten Knoten in deiner Knotenliste
  3. Berechnen Sie alle Pfade, die von diesem Knoten zum Loch beginnen
  4. Nehmen Sie den kürzesten Weg nach Länge
  5. Fügen Sie die Länge des Abstands zwischen dem Punkt und dem nächsten Knoten hinzu
  6. Zeichne und bewege dich auf dem Weg

Genießen!

GingerHead
quelle
1

Mein Ansatz ist ein wenig speicherintensiv (aus der Sicht der Pacman-Ära), aber Sie müssen nur einmal rechnen und es funktioniert für jedes Level-Design (einschließlich Sprünge).

Beschriften Sie die Knoten einmal

Wenn du zum ersten Mal ein Level lädst, beschrifte alle Monster-Lair-Knoten mit 0 (was den Abstand zum Lair darstellt). Beschriften Sie die verbundenen Knoten 1, die mit ihnen verbundenen Knoten 2 usw. nach außen, bis alle Knoten beschriftet sind. (Hinweis: Dies funktioniert sogar, wenn das Versteck mehrere Eingänge hat.)

Ich gehe davon aus, dass Sie bereits Objekte haben, die jeden Knoten und Verbindungen zu seinen Nachbarn darstellen. Pseudocode könnte ungefähr so ​​aussehen:

public void fillMap(List<Node> nodes) { // call passing lairNodes
    int i = 0;

    while(nodes.count > 0) {
        // Label with distance from lair
        nodes.labelAll(i++);

        // Find connected unlabelled nodes
        nodes = nodes
            .flatMap(n -> n.neighbours)
            .filter(!n.isDistanceAssigned());
    }
}

Hochwasser aus dem Versteck ausfüllen

Die Augen bewegen sich zum Nachbarn mit dem Etikett mit dem geringsten Abstand

Sobald alle Knoten beschriftet sind, ist das Routing der Augen trivial. Wählen Sie einfach den Nachbarknoten mit der niedrigsten Entfernungsbeschriftung aus (Hinweis: Wenn mehrere Knoten den gleichen Abstand haben, spielt es keine Rolle, welcher ausgewählt wird). Pseudocode:

public Node moveEyes(final Node current) {
    return current.neighbours.min((n1, n2) -> n1.distance - n2.distance);
}

Vollständig beschriftetes Beispiel

Komplette Karte

AjahnCharles
quelle
0

Für mein PacMan-Spiel habe ich einen etwas " shortest multiple path home" Algorithmus erstellt, der für jedes Labyrinth funktioniert, mit dem ich es versorge (innerhalb meiner Regeln). Es funktioniert auch über diese Tunnel.

Wenn das Level geladen ist, ist alles path home data in every crossroadleer (Standard) und sobald die Geister beginnen, das Labyrinth zu erkunden, werden sie crossroad path home informationjedes Mal aktualisiert, wenn sie auf eine "neue" Kreuzung stoßen oder von einem anderen Pfad wieder auf ihre bekannte Kreuzung stoßen.

iNyuu
quelle
-2

Der ursprüngliche Pac-Man benutzte keine Wegfindung oder ausgefallene KI. Es hat die Spieler nur glauben lassen, dass es mehr Tiefe gibt als es tatsächlich war, aber tatsächlich war es zufällig. Wie in Künstliche Intelligenz für Spiele / Ian Millington, John Funge angegeben.

Ich bin mir nicht sicher, ob es wahr ist oder nicht, aber es macht für mich sehr viel Sinn. Ehrlich gesagt sehe ich diese Verhaltensweisen, über die die Leute sprechen, nicht. Red / Blinky zum Beispiel folgt dem Spieler nicht immer, wie es heißt. Niemand scheint dem Spieler absichtlich konsequent zu folgen. Die Chance, dass sie dir folgen, erscheint mir zufällig. Und es ist einfach sehr verlockend, zufälliges Verhalten zu sehen, besonders wenn die Chancen, verfolgt zu werden, mit 4 Feinden und sehr begrenzten Drehmöglichkeiten auf kleinem Raum sehr hoch sind. Zumindest in der ersten Implementierung war das Spiel extrem einfach. Schauen Sie sich das Buch an, es befindet sich in einem der ersten Kapitel.

user4664601
quelle
Ja, es wurde KI verwendet. Und ja, Blinky folgt Pacman, wenn er sich im Verfolgungsmodus befindet (wechselt von Zeit zu Zeit), also ist es in Ordnung
Jean-François Fabre