Tekoälyn käyttäytyminen tilakoneilla
Toteuttakaa tilakoneisiin perustuva vihollisten tekoälylogiikka kokonaan Lua-skripteinä.
Tekoälyn käyttäytyminen tilakoneilla on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on äärellinen tilakone?
Äärellinen tilakone (FSM) määrittelee toiminnan joukkona tiloja, joiden välillä on siirtymiä. Ehdot tai tapahtumat käynnistävät siirtymät.
FSM:n taulukkorakenne
Esitä FSM taulukkona, jolla on nykyinen tila, tilataulukko sekä valinnaiset enter-, exit- ja update-callbackit kullekin tilalle.
local function newFSM(initialState)
return {
current = initialState,
states = {},
}
endTilojen määrittäminen
Jokainen tila on taulukko, jolla on valinnaiset enter-, update- ja exit-funktiot.
local fsm = newFSM("idle")
fsm.states.idle = {
enter = function(self) print("Enter idle") end,
update = function(self, dt)
if self.enemy then self:transition("chase") end
end,
exit = function(self) print("Exit idle") end
}Chase-tilan lisääminen
Chase-tila seuraa pelaajaa ja siirtyy attack-tilaan, kun etäisyys on riittävän pieni.
fsm.states.chase = {
enter = function(self) print("Chasing!") end,
update = function(self, dt)
if self.distToPlayer < 2 then
self:transition("attack")
elseif not self.enemy then
self:transition("idle")
end
end
}Siirtymäfunktio
Siirtymä kutsuu nykyisen tilan exit-funktiota, vaihtaa tilaa ja kutsuu sitten uuden tilan enter-funktiota.
function fsm:transition(newState)
local cur = self.states[self.current]
if cur and cur.exit then cur:exit() end
self.current = newState
local next = self.states[newState]
if next and next.enter then next:enter() end
endFSM:n päivittäminen
Kutsu jokaisella pelitikinillä fsm:update(dt)-metodia suorittaaksesi nykyisen tilan päivityslogiikan.
function fsm:update(dt)
local state = self.states[self.current]
if state and state.update then
state:update(dt)
end
endHierarkkiset tilakoneet
Tilat voivat sisältää sisäkkäisiä FSM:iä. Ylätaso käsittelee yleistä toimintaa, kuten taistelua tai partiointia, kun taas alitason FSM:t käsittelevät kunkin ylätason tilan yksityiskohtia.
Dataohjautuvat FSM:t
Määritä FSM:n siirtymät määritystiedostoista ladattavina datataulukkoina. Näin suunnittelijat voivat säätää tekoälyä koskematta koodiin.
local transitions = {
idle = {seeEnemy = "chase"},
chase = {lostEnemy = "idle", nearEnemy = "attack"},
attack = {enemyDead = "idle"},
}Pinotut tilakoneet
Tilapino sallii väliaikaisten tilojen, kuten "stunned", pinoamisen nykyisen tilan päälle ja nykyiseen tilaan palaamisen väliaikaisen tilan päätyttyä.
Useat tekoälyagentit
Jokaisella vihollisentiteetillä on oma FSM-instanssinsa, joten niiden tekoäly toimii itsenäisesti. Tämä on helppo toteuttaa Lua-taulukoilla ja sulkeumilla.
FSM:n virheenkorjaus
Kirjaa kaikki siirtymät kehityksen aikana. Jäljitystaulukko tallentaa muodossa {from, to, time} olevat tiedot tekoälyn toiminnan jälkikäteistä analysointia varten.
FSM:ää koskeva kysymys
Mikä käynnistää tilasiirtymän FSM:ssä?
Kertaus: tekoäly tilakoneilla
Luan FSM:t käyttävät tiliohjainobjektien taulukkoa (enter/update/exit) ja siirtymäfunktiota. Ne erottavat tekoälyn osa-alueet selkeästi, tukevat dataohjautuvaa suunnittelua ja skaalautuvat yksinkertaisista vihollisten tekoälyistä monimutkaisiin hierarkkisiin käyttäytymispuu-rakenteisiin.
Opi Lua tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 40
- Oppitunnit
- 159
Usein kysytyt kysymykset
Onko oppitunti ”Tekoälyn käyttäytyminen tilakoneilla” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Tekoälyn käyttäytyminen tilakoneilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tekoälyn käyttäytyminen tilakoneilla”?
Toteuttakaa tilakoneisiin perustuva vihollisten tekoälylogiikka kokonaan Lua-skripteinä. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Tekoälyn käyttäytyminen tilakoneilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?
Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Tapahtumajärjestelmät Luassa
- Komponenttipohjainen skriptaus
- Tekoälyn käyttäytyminen tilakoneilla
- Tietopohjainen määritys ja hot reload