🔍
Pac-Man Ghost AI Explained - YouTube
Channel: Retro Game Mechanics Explained
[1]
De vier geesten in Pac-Man lijken hun eigen regels te hebben over hoe de speler te vervolgen.
[7]
Hierdoor reizen ze zelden in een enkele groep en kunnen ze ook worden uitgebuit zodat
[12]
Pac-Man kan zich in het volle zicht verbergen.
[14]
Hoe is dit mogelijk?
[15]
In deze video zullen we de algoritmen verkennen die de beweging van de geesten bepalen en hoe
[20]
profiteer van hen.
[24]
De geesten hebben vier hoofdgedragstoestanden.
[30]
Je bent waarschijnlijk bekend met drie van
hen.
[32]
Ze staan bekend als de verstrooiing, achtervolging, bang,
en gegeten staten.
[38]
Wanneer Pac-Man een power pellet eet, komen de geesten
zullen hun bange staat ingaan, en als
[43]
Pac-Man raakt hen aan in deze staat,
ze zullen hun opgegeten toestand ingaan.
[47]
Op elk ander moment zijn ze verspreid
of achtervolgingsmodus.
[51]
In plaats van Pac-Man de hele duur achterna te zitten
van het niveau, zullen ze soms wegrennen
[56]
tijdens de spreidingsmodus.
[58]
De hoeveelheid tijd die de geesten verspreiden
en chase-modus zijn afhankelijk van het niveau van de speler
[63]
is momenteel ingeschakeld.
[64]
Over het algemeen starten de geesten in de spreidingsmodus
en wissel tussen deze en chase-modus
[69]
vier keer per niveau.
[72]
Dit patroon geeft de speler een adempauze voor
een moment zo nu en dan wanneer de geesten
[76]
zitten niet goed in de staart van Pac-Man.
[78]
Anders dan het allereerste niveau, het derde
achtervolgingssequentie is erg lang terwijl de vierde
[83]
spreidingssequentie is in wezen slechts een enkel frame
elimineren.
[88]
Na de laatste scatter-reeks komen de geesten
zitten vast in de chase-modus.
[93]
De timer die deze fasen regelt, wordt gereset
wanneer het niveau is gewist en wanneer Pac-Man
[98]
overlijdt.
[100]
Blinky heeft speciale gevallen die dit toelaten
hem te doen alsof hij in de achtervolgingsmodus is wanneer hij
[104]
is eigenlijk in de spreidingsmodus wanneer die er is
nog enkele stippen over in het doolhof.
[108]
Dit begint op het eerste niveau wanneer
er zijn nog 20 stippen over en dit neemt toe
[113]
naarmate het niveau stijgt.
[116]
Tijdens de scatter- en chase-toestand, de geesten
gebruik een targetingsysteem om te bepalen welke
[120]
richting om te reizen.
[123]
Zodra ze in een nieuwe tegel stappen, doen ze
zal onmiddellijk de volgende beste uitzoeken
[127]
tegel om vanaf dit punt te gaan.
[130]
De beslissing is tussen drie nieuwe tegels: de
één direct ervoor, 90 graden rechtsom,
[136]
of 90 graden tegen de klok in.
[139]
Merk op dat u zich op dit punt omdraait
180 graden achteruit is geen optie.
[145]
Dit betekent dat een geest normaal niet kan draaien
rond terwijl je rond kruipt.
[149]
Zoals je later zult zien, is het zeker mogelijk
omstandigheden, maar laten we dat nu even negeren.
[156]
Richtingen die een geest zouden doen reizen
in een massieve tegel worden ook uit overweging genomen.
[161]
Van de resterende opties om uit te kiezen, de
een die het dichtst bij de doeltegel ligt
[166]
lineair is de tegel die de geest zal starten
verhuizen naar.
[170]
Als twee of meer tegels op dezelfde afstand liggen
van de doeltegel, de tegel direct omhoog
[175]
op het scherm krijgt de hoogste prioriteit,
vervolgens naar links en naar beneden.
[181]
Dit algoritme wordt gebruikt voor elke tegelbeweging,
niet alleen op de kruispunten van het doolhof.
[187]
Omdat solide tegels worden genegeerd en spoken
kan niet achteruit draaien, zodra men binnenkomt
[192]
een deel van het doolhof, ze zullen allemaal reizen
de weg er doorheen naar het volgende kruispunt.
[198]
Als een ander voorbeeld, stel dat een geest op reis was
naar beneden in deze tegel, en deze tegel omhoog
[203]
hier was het doelwit.
[206]
Goed naar beneden gaan is al uitgesloten,
omdat dat een muur is en hij zich niet kan omdraaien
[210]
en ga terug naar boven.
[212]
Tussen links en rechts gaan, minimaliseert rechts
de afstand naar het doel.
[217]
Evenzo reist u naar deze tegel vanuit
de rechterkant resulteert in het kiezen tussen
[222]
naar links en naar boven.
[223]
Naar boven gaan zou hier de beslissing zijn
verklein de afstand.
[228]
Als de geest van links zou reizen
kant, de afstanden tussen omhoog en naar rechts
[232]
naar het doelwit zijn hetzelfde.
[234]
Boven krijgt echter voorrang boven recht,
dus de geest zou omhoog gaan.
[240]
Laten we, met het doelsysteem omlaag, pat
kijk hoe de geesten omgaan met hun respectieve
[245]
staten.
[246]
Tijdens de spreidingsmodus richt elke geest zich op één
specifieke tegel in het doolhof.
[251]
Dit doel verandert nooit tijdens de spreiding
staat.
[254]
De vier doelen staan in de vier hoeken van
het doolhof, waardoor elke geest stroomt naar een
[259]
ander gebied van de kaart.
[262]
Blinky gaat rechtsboven, Pinky naar de
linksboven, Inky rechtsonder en Clyde
[266]
links onderaan.
[269]
Meestal is de verstrooiingsfase zo kort
dat ze niet in de hoeken blijven hangen
[272]
te lang, maar als ze konden, zouden ze dat doen
blijven rondrennen in cirkels in de buurt van hun
[277]
respectieve doeltegels.
[279]
We kunnen dit simuleren door tonnen geesten te plaatsen
door het hele doolhof en zie hoe uiteindelijk
[285]
ze steken allemaal samen in hun respectieve hoeken.
[288]
Blinky zou altijd met de klok mee gaan
cyclus en Pinky tegen de klok in.
[293]
Inky en Clyde kunnen ook vast komen te zitten
richting afhankelijk van welk deel van de kaart
[297]
ze kwamen uit.
[300]
Laten we de chase-modus voor het laatst verlaten en naar kijken
eerst bang gemaakt.
[304]
Alle vier geesten gaan in de angstige modus
tegelijkertijd wanneer Pac-Man een power pellet eet
[309]
op niveaus 1-16 en 18.
[313]
Ze worden blauw en Pac-Man kan aanraken
ze voor punten en stuur ze terug naar de
[317]
spookhuis.
[318]
Bij het aanraken van een krachtpellet zullen de geesten dat doen
ook draaien allemaal rond 180 graden, ongeacht
[324]
van als ze bang worden of niet.
[327]
Dit is een van de uitzonderingen op de ommekeer
regel.
[330]
In bange modus, in plaats van minimaliseren
afstand tot een doeltegel, zullen ze gewoon
[335]
kies willekeurig een geschikte richting met
de uitvoer van een willekeurige nummergenerator.
[341]
Als Pac-Man een bange geest raakt,
ze zullen in de gegeten modus gaan.
[345]
Op dit punt worden ze leeg
set oogbollen en haast je terug naar de geest
[349]
huis alvorens opnieuw te vervolgen.
[352]
Dit wordt gedaan door het doel van de geesten te forceren
tegel recht voor de poort.
[357]
Zodra ze het bereiken, gaan ze naar beneden om naar binnen te gaan
en keer terug naar de scatter- of chase-modus.
[363]
En tot slot zullen we kijken naar de achtervolgingsmodus.
[366]
Wanneer alle geesten de achtervolgingsmodus ingaan, doen ze dat
draaien allemaal ongeveer 180 graden, net als
[371]
in angstige modus gaan.
[373]
Ze draaien ook om wanneer ze de chase-modus verlaten
en naar de spreidingsmodus gaan.
[377]
Dit zijn de andere twee uitzonderingen op de
turn-around regel, en u kunt dit gebruiken om
[381]
gemakkelijk zien wanneer een modusschakelaar optreedt.
[384]
In tegenstelling tot de spreidingsmodus waarbij de doeltegel
is constant, in chase-modus, een nieuwe doeltegel
[389]
wordt elke keer berekend vóór een beslissing
bewegen is gemaakt.
[394]
Elke geest heeft een unieke manier om te bepalen
deze actieve doeltegel, dat is wat uiteindelijk
[398]
leidt tot de unieke gewoonten van de geesten.
[402]
Blinky heeft de eenvoudigste manier om te bepalen
een doeltegel.
[405]
Het is gewoon de tegel waar Pac-Man is
gelegen.
[409]
Dit wetende, als we Blinky en Pac-Man ploffen
overal in het doolhof kunnen we de
[414]
pad dat Blinky zal nemen.
[416]
Omdat de doeltegel er direct bovenop ligt
van Pac-Man zal Blinky vrijwel altijd
[420]
op de een of andere manier zijn weg naar Pac-Man vinden.
[423]
Er zijn een paar uitzonderingen die we zullen bekijken
later meer.
[428]
Pinky heeft de volgende eenvoudigste manier om te achterhalen
haar doeltegel uit, maar het komt met een draai.
[433]
De tegel Pinky doelen is de tegel vier tegels
voor Pac-Man.
[437]
Dus vier tegels links als hij geconfronteerd wordt
links, vier onder wanneer naar beneden gericht, of vier
[443]
naar rechts als je naar rechts kijkt.
[445]
Maar wanneer Pac-Man naar boven wijst, het doelwit
tegel is vier tegels boven en vier tegels naar
[451]
links.
[452]
Laten we even op een raaklijn gaan
kijk waarom dit gebeurt.
[456]
Dus, de tegelposities van Pac-Man en de
spoken worden opgeslagen als twee bytes naast elk
[462]
andere.
[463]
De eerste byte is de horizontale positie,
beginnend vanaf de rechterkant van de
[467]
scherm, aftellend naar links.
[470]
De rechterkant van het scherm is X-positie
$ 20 en de linkerkant is $ 3B.
[476]
De tweede byte is de verticale positie,
beginnend bovenaan het scherm,
[480]
neerstorten.
[481]
De eerste rij van het doolhof is Y-positie $ 21,
en de bodem is $ 3F.
[488]
De game slaat richtingen op als eenheidsvectoren
ook in dit formaat.
[493]
Dus links is het paar ($ 01, $ 00) - horizontaal
positieve, verticaal nul.
[500]
Rechts zou dan het paar ($ FF, $ 00) zijn - horizontaal
negatieve, verticaal nul.
[507]
Omlaag en omhoog zouden ($ 00, $ 01) en ($ 00,
$ FF) respectievelijk.
[513]
Deze eenheidsvectoren kunnen worden vermenigvuldigd met een
constant en bij elkaar opgeteld om een willekeurige te krijgen
[518]
2-dimensionale vector.
[520]
Om bijvoorbeeld vier rechts te krijgen, wij
neem de vector ($ FF, $ 00) en vermenigvuldig deze
[526]
met vier te krijgen ($ 3FC, $ 00).
[530]
De posities zijn slechts 8-bit waarden, dus de
uitgevoerd drie wordt weggegooid en we krijgen ($ FC,
[537]
$ 00) wat overeenkomt met (-4, 0).
[542]
Maar wat veroorzaakt de up-vector onjuist?
[545]
Als we ($ 00, $ FF) met vier vermenigvuldigen, krijgen we ($ 00,
$ 3FC) die moet worden ingekort tot ($ 00, $ FC)
[554]
net als de juiste vector.
[557]
Het probleem is dat hoewel deze 8-bit zijn
waarden, de code die deze berekening verwerkt
[562]
behandelt de hele vector als één 16-bits waarde
in plaats van twee 8-bits.
[569]
Dus in plaats van dat de drie worden weggegooid, is het
stroomt over in de X-component van de vector.
[575]
Het resultaat is in plaats daarvan ($ 03, $ FC), wat overeenkomt
tot (3, -4).
[582]
Deze overloopfout treedt nog een keer op wanneer
de vector wordt toegevoegd aan de positie van de
[587]
voorwerp van belang, Pac-Man in dit geval.
[590]
De gedragen van het toevoegen van $ FC wordt toegevoegd
aan de X-component naast de drie
[596]
dat is al aanwezig.
[598]
Dit resulteert in een laatste offset van vier
omhoog en vier naar links in plaats van de verwachte
[603]
vier direct omhoog.
[605]
Deze fout treedt niet in de goede richting op,
aangezien elke overloop van de X-coördinaat dat doet
[610]
wordt weggegooid omdat deze zich in de bovenste helft bevindt
van de 16-bit waarde.
[616]
Omdat de twee 8-bits componenten van de vector
worden altijd als één 16-bits waarde behandeld
[622]
-1 wordt toegevoegd aan de verticale component, 1 is
ook toegevoegd aan de horizontale component.
[628]
Hoe dan ook, met die anamolie begrepen, laten we
kijk terug op Pinky's doeltegel.
[633]
We kunnen hetzelfde doen als met Blinky
en zoek welk pad ze ook zal nemen als wij
[638]
weet waar Pac-Man is.
[640]
Omdat de tegel iets voor Pac-Man staat,
Pinky neigt Pac-Man van voren te pakken
[645]
terwijl Blinky van achteren achtervolgt.
[647]
Omdat de tegel niet direct bovenaan staat
van Pac-Man, is het gemakkelijk mogelijk dat Pinky
[653]
zal Pac-Man nooit bereiken als hij zit
op bepaalde plaatsen.
[658]
Dit is nog gemakkelijker te doen wanneer Pac-Man wordt geconfronteerd
omhoog, omdat de doeltegel redelijk onsamenhangend is
[663]
met zijn positie.
[666]
Inky heeft een interessante berekening van de doeltegels,
vooral omdat het niet alleen afhankelijk is van
[671]
De positie van Pac-Man, maar ook de stroom van Blinky
positie ook.
[675]
Eerst wordt een tussenliggende tegel gevonden, die
is twee tegels voor Pac-Man.
[681]
Nogmaals, net als bij Pinky, als Pac-Man dat is
naar boven gericht, de tegel is twee vooraan en twee
[686]
in plaats daarvan naar links.
[688]
Vervolgens gaat de vector van deze tegel naar Blinky's
positie wordt 180 graden gedraaid aan het uiteinde.
[696]
Dit is de doeltegel van Inky.
[699]
Deze bijzondere methode om resultaten te richten
in Inky samen met Blinky om Pac-Man te flankeren
[704]
wanneer ze twee ver uit elkaar liggen.
[706]
Maar als Blinky precies op de staart van Pac-Man zit,
Inky komt ook dichtbij.
[711]
Deze paden veronderstellen dat Pac-Man stationair blijft,
wat normaal niet het geval is, en ook veronderstelt
[716]
dat Blinky stationair blijft, wat zeker
is niet waar.
[721]
Daarom is het relatief moeilijk te voorspellen
Inky's beweging vanwege de secundaire afhankelijkheid
[725]
op de positie van Pac-Man.
[728]
Dan is er Clyde.
[730]
Met een naam die uitsteekt van de anderen,
je weet gewoon dat hij de vreemde is.
[735]
Clyde's doeltegel is identiek aan Blinky's,
die direct bovenop Pac-Man staat
[739]
bevindt zich momenteel.
[741]
Dit is echter alleen het geval wanneer Clyde
is acht of meer tegels verwijderd van Pac-Man.
[746]
Als hij minder dan acht tegels verwijderd is, het doelwit
de tegel die hij kiest, is dezelfde als die voor de spreiding
[751]
modus.
[752]
Dit betekent dat er eigenlijk maar weinig plekken zijn waar
Pac-Man kan stationair draaien en Clyde zal hem vangen.
[757]
De meeste van deze vlekken zitten onderaan
linkerhoek bij Clyde's spreidingsdoel, maar
[762]
er zijn een paar andere gebieden in het doolhof
die lange tunnels hebben zonder vluchtroutes
[766]
links onderaan waar Clyde geen keus heeft
om Pac-Man tegen te komen.
[771]
Nu, eerder zei ik dat Blinky dat meestal wel zal doen
vind altijd Pac-Man, maar dat is er eigenlijk wel
[776]
een uitzondering hierop dankzij een aantal speciale
gevallen.
[780]
Er zijn twee gebieden van het doolhof waar spoken
in de scatter- of chase-modus wordt niet geprobeerd
[785]
om bij te werken in welke richting ze staan.
[788]
Dat wil zeggen, ze kunnen niet draaien op een kruising.
[791]
Eén gebied bevindt zich direct bij de uitgang van de geest
huis, en de andere is precies waar Pac-Man
[795]
begint in het doolhof.
[798]
Dit betekent effectief dat de geesten dat niet kunnen
opduiken op deze vier kruispunten.
[804]
Hierdoor is er minstens één tegel
waar Pac-Man zich voor altijd en mooi kan verbergen
[808]
veel wordt nooit gepakt.
[810]
In het geval van Blinky, stel dat hij gelijk heeft
hier op reis.
[815]
Hij gaat naar links, maar wordt dan gedwongen door te gaan
naar links gaan tot dit kruispunt waar
[820]
hij gaat naar beneden.
[821]
Hij gaat rechts en omhoog onderaan de
doolhof en nu heeft hij een cyclus voltooid, die
[826]
betekent dat hij tot deze tijd vastzit
Pac-Man beweegt.
[831]
Blinky kan hier vast komen te zitten met de klok mee
of tegen de klok in.
[835]
Pinky kan hier ook vast komen te zitten met de klok mee
alleen, of ze loopt vast rond de geest
[840]
huis in beide richtingen.
[843]
Clyde loopt ook vast in een van de twee cycli
ook in de buurt.
[848]
Inky is hier moeilijk op te sporen omdat
zijn beweging hangt af van waar Blinky is
[853]
zijn patroon, maar meestal loopt hij vast tijdens het fietsen
rond het spookhuis of een van deze T-vormige
[858]
muren.
[860]
De doeltegel van Inky komt uiteindelijk in beweging
een cyclus doordat Blinky in een cyclus rondloopt
[865]
patroon zelf.
[867]
Het aantal tegels dat nodig is voor Blinky
ren rond deze T-vormige muur is gelijk aan
[871]
het aantal tegels dat Inky nodig heeft om te rennen
rond een andere T-vormige muur, evenals de
[876]
spookhuis.
[877]
Daarom valt Inky eenmaal in een cyclus rond
een van deze dingen, hij zit daar voor onbepaalde tijd vast.
[885]
Pac-Man zal nooit worden gepakt zodra de geesten
ze vallen allemaal in hun eindeloze cycli, maar dat
[889]
betekent niet dat het ongelooflijk eenvoudig is om erin te komen
deze positie.
[893]
Alleen deze tegel niet betreden
onoverwinnelijkheid verlenen, omdat Blinky dat nog steeds kan
[897]
vind Pac-Man gemakkelijk vanaf ongeveer de helft van de
posities op de kaart.
[902]
Gelukkig reist Blinky niet veel van
dit deel van de kaart alleen, aangezien hij
[906]
bevindt zich meestal rechtsboven tijdens spreiding
modus en ergens in de buurt van Pac-Man tijdens de achtervolging
[911]
modus.
[912]
Pinky en Clyde kunnen Pac-Man echt alleen vinden
wanneer ze zich rechts onderaan het scherm bevinden
[916]
doolhof.
[918]
De gemakkelijkste manier om de veilige plek te activeren is
om de geesten linksonder te lokken en
[922]
ga binnen vanaf het onderste kruispunt.
[925]
Inky is de geest waar je op moet letten
vooral omdat het veel langer kan duren
[929]
dat hij ergens in een cyclus verstrikt raakt.
[933]
Deze schuilplaats is niet de enige manier om te nemen
voordeel van het gedrag van de geest, maar het
[937]
is het domste.
[939]
Er zijn veel kleinere en praktischer
manieren om deze kennis van de beweging te gebruiken
[943]
algoritme om de geesten tijdens het spelen te vermijden.
[947]
Gewoon begrijpen hoe de geesten hebzuchtig zijn
minimaliseer de afstand tussen hen en hun doel
[951]
tegel is een goed begin.
[953]
Bijvoorbeeld, in de onderste tunnels, Blinky
en Pinky zal naar boven of naar binnen gaan om dichterbij te komen
[959]
aan Pac-Man, hoewel geen van beide richtingen
zijn de beste manier om hem te bereiken.
[963]
Hierdoor blijft de rest van de tunnel leeg,
dankzij deze U-vormige bocht.
[968]
De offset targeting van Pinky kan worden misbruikt door
zich snel omdraaien na het passeren
[973]
een kruising.
[974]
Als Pinky binnen vier tegels van Pac-Man en
Pac-man draait zich om als Pinky binnenkomt
[979]
de kruistegel, zal de doeltegel
achter het kruispunt staan, waardoor Pinky maakt
[985]
sindsdien een bocht van 90 graden
rechtdoor gaan zou toenemen
[990]
de afstand tussen de twee.
[992]
Dit werkt nog beter als het naar beneden wordt achtervolgd
vanwege de links-offset bug.
[998]
Deze bug leidt ook tot andere manieren om te misleiden
Pinky, zoals stationair draaien in deze positie in
[1003]
het doolhof.
[1004]
De doeltegel ligt tegenover en volledig tegen
andere muur dan die Pac-Man aanraakt,
[1009]
dus Pinky wil in plaats daarvan omhoog en naar links gaan
van beneden of rechts.
[1015]
Je vraagt je misschien af of dit soort strategieën
worden gebruikt om perfecte spellen te spelen, waar
[1020]
de maximaal mogelijke score wordt behaald.
[1022]
Het antwoord is ja, maar waarschijnlijker de beweging
wordt gewoon onthouden.
[1027]
Zie, aangezien alle bewegingspatronen van de geesten
zijn uiteindelijk gebaseerd op de beweging van Pac-Man,
[1033]
en daarom is de input van de speler consistent
bewegingspatroon van Pac-Man resulteert in
[1038]
elke keer exact dezelfde spookbeweging.
[1042]
Het enige waar je tegen kunt vechten is het
random number generator output wanneer de geesten
[1046]
zijn in bange modus.
[1048]
Maar na niveau 19 doen de geesten het niet eens
schakel de angstige modus niet meer in.
[1053]
Op dit moment hoeft u alleen nog maar precies te onthouden
waar de geesten zullen bewegen, gegeven jou
[1057]
bedien Pac-Man elke keer op exact dezelfde manier
jij speelt.
[1063]
Voordat ik de video beëindig, wil ik deze delen
een laatste animatie die de geest laat zien
[1067]
doeltegels en geprojecteerde reispaden tijdens
gameplay.
[1070]
Ik vind het gewoon leuk om te zitten en te kijken, en
denk na over hoe sommige vrij eenvoudige wiskundige resultaten
[1075]
in zo'n geweldige game-ervaring.
[1143]
Bedankt voor het kijken!
[1144]
Als je nieuw bent in het kanaal en / of niet
de video gezien met uitleg over het kill-scherm
[1148]
in Pac-Man, bekijk het zeker.
[1151]
Misschien na het beheersen van de beweging van de geesten
patronen die je daar kunt maken
[1154]
niveau jezelf!
Most Recent Videos:
You can go back to the homepage right here: Homepage