Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Ndakasangana nezvimwe zvinonakidza zvinhu nezve artificial intelligence mumitambo. Netsananguro yezvinhu zvakakosha nezveAI uchishandisa mienzaniso yakapusa, uye mukati mune akawanda maturusi anobatsira uye nzira dzekuvandudza kwayo uye dhizaini. Sei, kupi uye nguva yekuzvishandisa iripo zvakare.

Mazhinji emienzaniso akanyorwa mupseudocode, saka hapana ruzivo rwepamusoro chirongwa chinodiwa. Pasi pekucheka kune 35 mapepa ezvinyorwa ane mifananidzo uye gifs, saka gadzirira.

UPD. Ndinokumbira ruregerero, asi ndakatoita shanduro yangu yechinyorwa ichi paHabrΓ© PatientZero. Unogona kuverenga shanduro yake pano, asi nokuda kwechimwe chikonzero chinyorwa chakandipfuura (ndakashandisa kutsvaga, asi chimwe chinhu chakakanganisika). Uye sezvo ndiri kunyora pa blog yakatsaurirwa kusimudzira kwemutambo, ndakasarudza kusiya shanduro yangu yeshanduro kune vanyoreri (mamwe mapoinzi akaumbwa zvakasiyana, mamwe akasiiwa nemaune pamazano evagadziri).

Chii chinonzi AI?

Mutambo AI unotarisa pane zviito zvipi zvinofanirwa kuitwa nechinhu zvichienderana nemamiriro acho. Izvi zvinowanzodaidzwa kunzi "akangwara mumiriri" manejimendi, apo mumiririri ari mutambi hunhu, mota, bot, kana dzimwe nguva chimwe chinhu chisinganzwisisike: boka rese remasangano kana budiriro. Muchinoitika chimwe nechimwe, chinhu chinofanira kuona mhoteredzo yacho, kuita zvisarudzo zvakavakirwa pachiri, uye kuita mukuwirirana nazvo. Izvi zvinonzi Sense/Funga/Act kutenderera:

  • Sense: Mumiririri anowana kana kugamuchira ruzivo nezvezvinhu zviri munharaunda yayo izvo zvinogona kukanganisa maitiro ayo (kutyisidzira pedyo, zvinhu zvekuunganidza, nzvimbo dzinonakidza dzekuongorora).
  • Funga: Mumiririri anosarudza kuti oita sei (anofunga kuti zvakachengeteka zvakakwana kuunganidza zvinhu kana kuti anofanira kutanga arwa / kuhwanda).
  • Chiito: mumiriri anoita zviito kuita sarudzo yapfuura (inotanga kuenda yakananga kumuvengi kana chinhu).
  • ... ikozvino mamiriro achinja nekuda kwezviito zvevatambi, saka kutenderera kunodzokorora nedata idzva.

AI inowanzotarisa paSense chikamu chechiuno. Semuenzaniso, mota dzinozvimiririra dzinotora mifananidzo yemugwagwa, isanganise neradar uye lidar data, uye nekuidudzira. Izvi zvinowanzoitwa nekudzidza kwemichina, iyo inogadzirisa data inouya uye ichipa chirevo, ichitora ruzivo rwesemantic senge "kune imwe mota mayadhi makumi maviri pamberi pako." Aya ndiwo anonzi matambudziko ekuronga.

Mitambo haidi sisitimu yakaoma yekuburitsa ruzivo sezvo yakawanda yedata yatove chikamu chakakosha chayo. Iko hakuna chikonzero chekumhanyisa maalgorithms ekuzivikanwa kwemufananidzo kuona kana kune muvengi pamberi - mutambo unotoziva uye unopa ruzivo zvakananga mukuita sarudzo. Naizvozvo, iyo Sense chikamu chekutenderera chinowanzo kuve chakareruka kupfuura icho Funga uye Ita chikamu.

Kugumira kweGame AI

AI ine huwandu hwezvipimo zvinofanirwa kucherechedzwa:

  • AI haidi kudzidziswa pachine nguva, sekunge iri muchina kudzidza algorithm. Izvo hazvina musoro kunyora neural network panguva yekusimudzira yekutarisa makumi ezviuru evatambi uye kudzidza yakanakisa nzira yekutamba navo. Sei? Nekuti mutambo hausati waburitswa uye hapana vatambi.
  • Mutambo unofanirwa kunakidza uye uchinetsa, saka vamiririri havafanirwe kuwana nzira yakanaka yekupokana nevanhu.
  • MaAgents anofanirwa kutaridzika chaizvo kuitira kuti vatambi vanzwe sekunge vari kutamba nevanhu chaivo. Chirongwa cheAlphaGo chakakunda vanhu, asi matanho akasarudzwa aive kure nekunzwisisa kwechinyakare kwemutambo. Kana mutambo uchitevedzera munhu anopikisa, kunzwa uku hakufanirwe kuvepo. Iyo algorithm inoda kuchinjwa kuitira kuti iite sarudzo dzinonzwisisika kwete dzakanaka.
  • AI inofanira kushanda munguva chaiyo. Izvi zvinoreva kuti algorithm haigone kudzora kushandiswa kweCPU kwenguva yakareba yekuita sarudzo. Kunyangwe 10 milliseconds yakarebesa, nekuti mizhinji mitambo inongoda gumi nematanhatu kusvika 16 milliseconds kuita zvese kugadzirisa uye kuenderera kune inotevera girafu furemu.
  • Zvakanaka, chikamu chegadziriro chinofanira kunge chichitungamirirwa nedata, kuitira kuti vasiri-coders vagone kuchinja uye kugadzirisa kunogona kuitika nokukurumidza.

Ngatitarisei nzira dzeAI dzinovhara iyo yese Sense / Funga / Kuita kutenderera.

Kuita Zvisarudzo Zvikuru

Ngatitange nemutambo wakapusa - Pong. Chinangwa: fambisa paddle kuitira kuti bhora ribvire kubva pairi pane kubhururuka kupfuura iro. Zvakafanana netennis, kwaunorasikirwa kana ukasarova bhora. Pano iyo AI ine basa riri nyore - kusarudza kuti ndeipi nzira yekufambisa chikuva.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Conditional statements

Kune iyo AI muPong, mhinduro iri pachena ndeyekugara uchiedza kuisa chikuva pasi pebhora.

Yakareruka algorithm yeizvi, yakanyorwa mupseudocode:

yese furemu/update mutambo uchimhanya:
kana bhora riri kuruboshwe kwepaddle:
fambisa paddle kuruboshwe
zvimwe kana bhora riri kurudyi kwepaddle:
fambisa paddle kurudyi

Kana chikuva chikafamba nekumhanya kwebhora, saka iyi ndiyo yakakodzera algorithm yeAI muPong. Iko hakuna chikonzero chekuomesa chero chinhu kana pasina data rakawanda uye zviito zvinogoneka zvemumiririri.

Iyi nzira iri nyore zvekuti iyo yese Sense / Funga / Chiito kutenderera hainyatso kuoneka. Asi zviripo:

  • Chikamu cheSense chiri mumbiri kana zvirevo. Mutambo unoziva kuti bhora riripi uye pari papuratifomu, saka iyo AI inotarisa kwairi kune iyo ruzivo.
  • Chikamu cheKufunga chinosanganisirwa mune maviri kana zvirevo. Ivo vanosanganisira mhinduro mbiri, iyo mune iyi kesi inosarudzika. Nekuda kweizvozvo, chimwe chezviito zvitatu chinosarudzwa - fambisa puratifomu kuruboshwe, iendese kurudyi, kana kuita chero chinhu kana yakatomisikidzwa nemazvo.
  • Chikamu cheChiito chinowanikwa muFambisa Paddle Kuruboshwe uye Fambisa Paddle Kurudyi zvirevo. Zvichienderana nekugadzirwa kwemutambo, vanogona kufambisa chikuva ipapo ipapo kana nekumhanya chaiko.

Nzira dzakadaro dzinonzi reactive - kune yakapfava seti yemitemo (munyaya iyi kana zvirevo mukodhi) zvinobata kune yazvino mamiriro epasi uye kutora matanho.

Muti wesarudzo

Muenzaniso wePong wakanyatso kuenzana neiyo yakarongeka AI pfungwa inonzi muti wesarudzo. Iyo algorithm inofamba nayo kuti isvike "shizha" -chisarudzo pamusoro pechiito chekuita.

Ngatigadzirei dhizaini yemuti wesarudzo yealgorithm yepuratifomu yedu:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Chikamu chimwe nechimwe chemuti chinonzi node - AI inoshandisa girafu dzidziso kutsanangura zvimiro zvakadaro. Kune marudzi maviri emanodhi:

  • Sarudzo node: kusarudza pakati pedzimwe nzira mbiri zvichienderana nekuyedza imwe mamiriro, apo imwe neimwe nzira inomiririrwa senzvimbo yakaparadzana.
  • End node: Chiito chekuita chinomiririra sarudzo yekupedzisira.

Iyo algorithm inotanga kubva kune yekutanga node (iyo "mudzi" wemuti). Iyo inogona kuita sarudzo yekuti ndeipi node yemwana yekuenda, kana inoita chiitiko chakachengetwa munodhi uye kubuda.

Chii chakanakira kuve nemuti wesarudzo kuita basa rakafanana nerekuti kana zvirevo muchikamu chakapfuura? Pane hurongwa hwese pano apo sarudzo yega yega ine chimiro chimwe chete uye zviviri zvinogoneka mhedzisiro. Izvi zvinobvumira mugadziri kugadzira AI kubva kudhata inomiririra sarudzo mumuti pasina kuomesesa-kodhi. Ngatizviratidze muchimiro chetafura:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Padivi rekodhi iwe uchawana hurongwa hwekuverenga tambo. Gadzira node yemumwe nemumwe wavo, batanidza pfungwa dzesarudzo zvichibva pamutsara wechipiri, uye node dzevana zvichienderana nekoramu yechitatu neyechina. Iwe uchiri kuda kuronga mamiriro nezviito, asi ikozvino chimiro chemutambo chichave chakanyanya kuoma. Pano iwe unowedzera dzimwe sarudzo uye zviito, uye wobva wagadzirisa iyo AI yese nekungogadzirisa iyo yemuti tsanangudzo text file. Tevere, iwe unoendesa iyo faira kumugadziri wemutambo, anogona kushandura maitiro asina kudzoreredza mutambo kana kushandura kodhi.

Miti yesarudzo inobatsira zvikuru kana ichivakwa otomatiki kubva kune yakakura seti yemienzaniso (somuenzaniso, kushandisa ID3 algorithm). Izvi zvinovaita chishandiso chinoshanda uye chepamusoro chekugadzirisa mamiriro ezvinhu zvichienderana nedata rakawanikwa. Nekudaro, isu tinoenda kupfuura yakapusa sisitimu yekuti vamiririri vasarudze zviito.

Scenarios

Isu takaongorora sarudzo yemuti sarudzo yakashandisa pre-yakasikwa mamiriro uye zviito. Iye munhu ari kugadzira iyo AI anogona kuronga muti chero waanoda, asi anoramba achivimba nekodha akazvironga zvese. Zvakadini kana taigona kupa mugadziri maturusi ekugadzira kwavo vamene mamiriro kana zviito?

Kuitira kuti mugadziri wepurogiramu asanyore kodhi yemamiriro Ibhora Kuruboshwe KwePaddle uye Is Bhora Right Of Paddle, anogona kugadzira sisitimu umo mugadziri anonyora mamiriro ekutarisa aya maitiro. Ipapo iyo sarudzo yemuti data ichaita seizvi:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Izvi zvakangofanana nezviri mutafura yekutanga, asi mhinduro mukati madzo dzine kodhi yadzo, zvakada kuita sechikamu chechimiro chei kana chirevo. Padivi rekodhi, izvi zvaizoverenga muchikamu chechipiri chenzvimbo dzesarudzo, asi panzvimbo yekutsvaga mamiriro chaiwo ekuita (Iri Bhora Kuruboshwe KwePaddle), inoongorora chirevo chechirevo uye inodzorera chokwadi kana nhema saizvozvo. Izvi zvinoitwa pachishandiswa mutauro wechiLua kana weAngelscript. Achishandisa iwo, mugadziri anogona kutora zvinhu mumutambo wake (bhora uye chirauro) uye kugadzira zvinoshanduka zvichave zviripo mune script (ball.position). Zvakare, mutauro wekunyora uri nyore pane C++. Izvo hazvidi iyo yakazara nhanho yekubatanidza, saka yakanakira kukurumidza kugadzirisa logic yemutambo uye inobvumira "vasiri-makodha" kuti vagadzire iwo anodiwa mabasa ivo pachavo.

Mumuenzaniso uri pamusoro, mutauro wekunyora unoshandiswa chete kuongorora chirevo chechirevo, asi unogona kushandiswa kuita zviito. Semuenzaniso, iyo data Move Paddle Right inogona kuve script statement (ball.position.x += 10). Saka kuti chiito chinotsanangurwa zvakare mune script, pasina chikonzero chekuronga Move Paddle Right.

Iwe unogona kuenda zvakatopfuura uye kunyora iyo yese sarudzo muti mumutauro wekunyora. Iyi ichava kodhi mumhando yeakaomeswa emamiriro ezvinhu, asi iwo achange ari mune ekunze script mafaira, ndiko kuti, anogona kuchinjwa pasina kudzorera chirongwa chose. Iwe unogona kazhinji kugadzirisa iyo script faira panguva yemutambo kukurumidza kuyedza akasiyana mhinduro dzeAI.

Chiitiko Mhinduro

Mienzaniso iri pamusoro yakanakira Pong. Ivo vanoramba vachimhanyisa iyo Sense / Funga / Ita kutenderera uye kuita zvinoenderana neazvino mamiriro epasi. Asi mumitambo yakaoma iwe unofanirwa kuita kune zviitiko zvega, uye kwete kuongorora zvese kamwechete. Pong munyaya iyi yatova muenzaniso wakaipa. Ngatisarudze imwe.

Fungidzira mupfuri apo vavengi vasingafambi kusvikira vaona mutambi, mushure mezvo voita zvinoenderana ne "specialization" yavo: mumwe munhu achamhanya "kumhanya", mumwe munhu acharwisa kubva kure. Ichiri yakakosha reactive system - "kana mutambi akaonekwa, ita chimwe chinhu" - asi inogona kuputswa zvine mutsindo kuita chiitiko cheMutambi Akaonekwa uye Chiitiko (sarudza mhinduro uye woita).

Izvi zvinotidzosera kuSense / Funga / Kuita kutenderera. Tinogona kukodha chikamu cheSense chinotarisa furemu yega yega kuti AI inoona mutambi. Kana zvisina kudaro, hapana chinoitika, asi kana ikaona, ipapo Mutambi Akaonekwa chiitiko chinogadzirwa. Iyo kodhi ichava nechikamu chakasiyana chinoti "kana chiitiko cheMutambi Akaonekwa chikaitika, ita" mhinduro iripi yaunoda kugadzirisa zvikamu zve Funga uye Ita. Nekudaro, iwe unozomisa maitiro kune iyo Mutambi Akaonekwa chiitiko: kune "anomhanyisa" hunhu - ChargeAndAttack, uye ye sniper - HideAndSnipe. Hukama uhwu hunogona kugadzirwa mufaira re data kuti rigadziriswe nekukurumidza pasina kudzoreredza. Mutauro wekunyora unogona kushandiswa pano zvakare.

Kuita zvisarudzo zvakaoma

Kunyangwe masisitimu akareruka ekuita ane simba kwazvo, kune akawanda mamiriro ayo asina kukwana. Dzimwe nguva unofanirwa kuita sarudzo dzakasiyana zvichienderana nezviri kuitwa nemumiririri, asi zvakaoma kufungidzira izvi semamiriro. Dzimwe nguva kune mamiriro akawandisa kuti anyatsovamiririra mumuti wesarudzo kana script. Dzimwe nguva unofanira kufanoongorora kuti mamiriro acho achachinja sei usati wasarudza danho rinotevera. Dzimwe nzira dzakaoma kunzwisisa dzinodiwa kugadzirisa matambudziko aya.

Finite state muchina

Finite state muchina kana FSM (finite state muchina) inzira yekureva kuti mumiririri wedu parizvino ari mune imwe yematunhu akati wandei, uye kuti anogona kushandura kubva kune imwe nyika kuenda kune imwe. Kune imwe nhamba yematunhu akadaro-saka zita. Muenzaniso wakanakisa kubva kuhupenyu mwenje wemotokari. Kune kutevedzana kwakasiyana kwemwenje munzvimbo dzakasiyana, asi musimboti wakafanana - imwe neimwe nyika inomiririra chimwe chinhu (mira, famba, nezvimwewo). Robhoti robhoti riri munzvimbo imwe chete panguva ipi zvayo, uye rinofamba kubva kune rimwe richienda kune rimwe zvichibva pamitemo iri nyore.

Inyaya yakafanana neNPC mumitambo. Semuenzaniso, ngatitorei murindi ane zvinotevera anoti:

  • Patrolling.
  • Attacking.
  • Kutiza.

Uye aya mamiriro ekuchinja mamiriro ayo:

  • Kana murindi akaona muvengi, anorwisa.
  • Kana murindi akarwisa asi asingachaoni muvengi, anodzoka kuzorinda.
  • Kana murindi akarwisa asi akakuvadzwa zvakaipisisa, anotiza.

Iwe unogona zvakare kunyora kana-zvirevo zvine muchengeti mamiriro akasiyana uye macheki akasiyana-siyana: pane muvengi ari pedyo, ndeupi hutano hwehutano hweNPC, nezvimwewo. Ngatiwedzere mamwe mashoma anoti:

  • Kusashanda - pakati pepatrol.
  • Kutsvaga - kana muvengi akaonekwa anyangarika.
  • Kutsvaga Rubatsiro - kana muvengi akaonekwa, asi akasimba zvakanyanya kuti asarwe ari ega.

Sarudzo yeumwe neumwe wavo inogumira - semuenzaniso, murindi haazoendi kutsvaga muvengi akavanzika kana aine hutano hwakaderera.

Mushure mezvose, pane rondedzero yakakura ye "kana" , Izvo " inogona kuomesera, saka isu tinofanirwa kugadzira nzira inotibvumira kuchengeta nyika uye shanduko pakati penyika mupfungwa. Kuti tiite izvi, isu tinofunga nezvese nyika, uye pasi penyika imwe neimwe tinonyora pasi mune runyorwa shanduko dzese kune dzimwe nyika, pamwe nemamiriro ezvinhu anodiwa kwavari.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Iyi itafura yekuchinja kwenyika - nzira yakazara yekumiririra FSM. Ngatidhirowe dhayagiramu uye tiwane tarisiro yakazara yekuti maitiro eNPC anochinja sei.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Dhiagiramu inoratidza kukosha kwekuita sarudzo yemumiriri uyu zvichienderana nemamiriro azvino. Uyezve, museve wega wega unoratidza shanduko pakati penyika kana mamiriro ari padivi payo ari echokwadi.

Yega yega inogadziridza isu tinotarisa ikozvino mamiriro emumiririri, tarisa kuburikidza nerondedzero yeshanduko, uye kana mamiriro ekuchinja akazadzikiswa, anogashira iyo nyowani. Semuenzaniso, furemu yega yega inotarisa kana iyo gumi-yechipiri timer yapera, uye kana zvirizvo, ipapo murindi anobva kuIdling state achienda kuPatrolling. Nenzira imwecheteyo, iyo Attacking state inotarisa hutano hwemumiririri - kana yakaderera, zvino inopinda muKutiza.

Uku kubata shanduko pakati penyika, asi ko maitiro ane chekuita nematunhu pachawo? Panyaya yekushandisa maitiro chaiwo kune imwe nyika, pane kazhinji marudzi maviri e "hook" apo tinopa zviito kuFSM:

  • Zviito zvatinogara tichiitira mamiriro azvino.
  • Zviito zvatinotora pakuchinja kubva kune imwe nyika kuenda kune imwe.

Mienzaniso yemhando yekutanga. Iyo Patrolling state inofambisa mumiriri munzira yekutarisa imwe neimwe furemu. Iyo Attacking state ichaedza kutanga kurwisa yega yega furemu kana shanduko kuenda kune imwe nyika inogoneka.

Kurudzi rwechipiri, funga nezve shanduko "kana muvengi achionekwa uye muvengi akanyanya kusimba, saka enda kuKutsvaga Rubatsiro state. Mumiririri anofanira kusarudza kwekuenda kuti awane rubatsiro uye achengete ruzivo urwu kuitira kuti Nyika yeKutsvaga Rubatsiro izive kwekuenda. Kana rubatsiro rwawanikwa, mumiririri anodzokera kuAttacking state. Panguva ino, achada kuudza mubatanidzwa nezve kutyisidzira, saka iyo NotifyFriendOfThreat chiito chinogona kuitika.

Zvekare, isu tinogona kutarisa iyi sisitimu kuburikidza nelenzi yeSense / Funga / Kuita kutenderera. Sense inoiswa mune data rinoshandiswa neshanduko logic. Funga - shanduko dziripo mudunhu rega rega. Uye Mutemo unoitwa nezviito zvinoitwa nguva nenguva mukati menyika kana pakuchinjana pakati penyika.

Dzimwe nguva kuenderera mberi kwekuchinja kwesarudzo kunogona kudhura. Semuyenzaniso, kana mumiriri wega wega akaita maverengero akaomarara furemu yega yega kuti aone kana achigona kuona vavengi uye kunzwisisa kana achigona kushandura kubva kuPatrolling kuenda kuAttacking state, izvi zvinotora yakawanda yeCPU nguva.

Shanduko dzakakosha mumamiriro enyika dzinogona kufungidzirwa sezviitiko zvichagadziriswa sezvazvinoitika. Panzvimbo yeFSM yekutarisa shanduko yekuchinja "mumiriri wangu anogona kuona mutambi here?" yega furemu, yakaparadzana sisitimu inogona kugadzirwa kuti itarise zvishoma kazhinji (semuenzaniso 5 nguva pasekondi). Uye mhedzisiro ndeyekuburitsa Mutambi Akaonekwa kana cheki ichipfuura.

Izvi zvinopfuudzwa kuFSM, iyo inofanirwa kuenda ikozvino kuMutambi Akaonekwa chiitiko chakagamuchirwa uye pindura zvinoenderana. Maitiro akabuda akafanana kunze kwekunonoka kusingaonekwe usati wapindura. Asi kuita kwave nani nekuda kwekuparadzanisa chikamu cheSense kuita chikamu chakasiyana chechirongwa.

Hierarchical finite state muchina

Zvisinei, kushanda neFSM hombe hakusi nyore nguva dzose. Kana isu tichida kuwedzera mamiriro ekurwisa kuti aparadzanise MeleeAttacking uye RangedAttacking, isu tichafanirwa kushandura shanduko kubva kune dzimwe nyika dzese dzinotungamira kune Attacking state (ikozvino uye ramangwana).

Iwe unogona kunge wakaona kuti mumuenzaniso wedu kune akawanda duplicate ekuchinja. Shanduko zhinji mudunhu reIdling dzakafanana neshanduko muPatrolling state. Zvingave zvakanaka kuti tisazvidzokorora isu, kunyanya kana tikawedzera mamwe matunhu akafanana. Zvine musoro kuunganidza Idling uye Patrolling pasi pezita rekuti "kwete-kurwa", uko kune imwe chete yakajairika seti yekuchinja kurwisa nyika. Kana isu tikafunga nezve iyi label senyika, ipapo Idling uye Patrolling vanova substates. Muenzaniso wekushandisa tafura yeshanduko yakaparadzana kune itsva isiri-yekurwa substate:

Main anoti:
Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Kunze kwekurwa
Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Uye mune diagram fomu:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Ndiyo yakafanana sisitimu, asi iine nyowani isiri-yekurwa nyika inosanganisira Idling uye Patrolling. Nenyika yega yega ine FSM ine substates (uye idzi substates, zvakare, ine yavo FSMs - uye zvichingodaro kwenguva yakareba sezvaunoda), tinowana Hierarchical Finite State Machine kana HFSM (hierarchical finite state muchina). Nekuunganidza nyika isiri-yekurwa, tinocheka boka remashanduko akawandisa. Isu tinogona kuita zvimwechete kune chero nyika itsva dzine shanduko dzakafanana. Semuenzaniso, kana mune ramangwana isu tikawedzera iyo Attacking state kuenda kuMeleeAttacking neMissileAttacking states, ivo vanove substates iyo shanduko pakati peumwe neumwe zvichienderana nekureba kune muvengi uye ammo kuwanikwa. Nekuda kweizvozvo, maitiro akaomarara uye madiki-maitiro anogona kumiririrwa nehushoma hwekuchinja kwakapetwa.

Muti wehunhu

NeHFSM, kusanganiswa kwakaoma kwemaitiro kunogadzirwa nenzira iri nyore. Zvisinei, pane kuoma kuduku kuti kuita sarudzo nenzira yemitemo yekuchinja kunowirirana zvikuru nemamiriro ezvinhu aripo. Uye mumitambo mizhinji izvi ndizvo chaizvo zvinodiwa. Uye kushandisa nekungwarira kwehutongi hwehurumende kunogona kuderedza huwandu hwekudzokororwa kweshanduko. Asi dzimwe nguva unoda mitemo inoshanda zvisinei kuti uri munyika ipi, kana kuti inoshanda munenge chero nyika. Semuenzaniso, kana hutano hwemumiririri hukadzikira kusvika pa25%, unenge uchida kuti atize zvisinei nekuti anga ari muhondo, asina basa, kana kutaura - unotofanira kuwedzera mamiriro aya kudunhu rega rega. Uye kana mugadziri wako akazoda kushandura hutano hwakaderera kubva pa25% kusvika ku10%, zvino izvi zvichafanirwa kuitwa zvakare.

Sezvineiwo, mamiriro ezvinhu aya anoda hurongwa umo sarudzo dzekuti "mamiriro ekuve" ari kunze kwematunhu pachawo, kuitira kuti shanduko iite panzvimbo imwechete uye kwete kubata mamiriro ekuchinja. Miti yehunhu inoonekwa pano.

Pane nzira dzakati wandei dzekudzishandisa, asi hunhu hwakangofanana kune vese uye hwakafanana nemuti wesarudzo: algorithm inotanga ne "mudzi" node, uye muti une node dzinomiririra sarudzo kana zviito. Kune misiyano mishoma yakakosha asi:

  • Node zvino dzosa chimwe chezvitatu zvakakosha: Kubudirira (kana basa rapera), Rakakundikana (kana risingakwanisi kutangwa), kana Kumhanya (kana richiri kushanda uye pasina mhedzisiro yekupedzisira).
  • Hapasisina sarudzo dzekusarudza pakati pedzimwe nzira mbiri. Pane kudaro, iwo maDecorator node, ane imwe node yemwana. Kana vakabudirira, vanouraya mwana wavo chete node.
  • Node dzinoita zviito zvinodzosa Running kukosha kumiririra zviito zviri kuitwa.

Iyi diki seti yemanode inogona kubatanidzwa kugadzira nhamba huru yemaitiro akaomarara. Ngatimbofungidzirai HFSM murindi kubva pamuenzaniso wapfuura semuti wekuita:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Nechimiro ichi hapafanirwe kuve neshanduko iri pachena kubva kuIdling/Patrolling nyika kuenda Kurwisa kana chero dzimwe nyika. Kana muvengi achionekwa uye hutano hwemunhu hwakaderera, kuuraya kunomira panzvimbo Inotiza, zvisinei nekuti yaimboitwa node ipi - Patrolling, Idling, Attacking, kana chero imwe.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Miti yekuzvibata yakaoma-kune nzira dzakawanda dzekudzinyora, uye kuwana musanganiswa wakakodzera wevanoshongedza uye node dzekomboni zvinogona kunetsa. Panewo mibvunzo pamusoro pekuti kangani kutarisa muti - tinoda kupfuura nepakati pese chikamu chayo kana chete kana imwe yemamiriro yachinja? Tinochengeta sei nyika ine chekuita nemanode - tinoziva sei isu tave Idling kwemasekonzi gumi, kana kuti tinoziva sei kuti ndeapi ma node anga achiita nguva yekupedzisira kuti tikwanise kugadzirisa kutevedzana kwayo?

Ichi ndicho chikonzero kune maitiro akawanda. Semuenzaniso, mamwe masisitimu akatsiva decorator node neinline decorator. Vanoongororazve muti kana mamiriro ekushongedza achinja, anobatsira kujoina node, uye anopa nguva nenguva.

Utility-based system

Mimwe mitambo ine makanika akawanda akasiyana. Izvo zvinodikanwa kuti vagamuchire zvikomborero zvose zvemitemo yakapfava uye yakajairika yekuchinja, asi kwete hazvo muchimiro chemuti wakakwana wekuita. Panzvimbo yekuve nesarudzo dzakajeka dzezvisarudzo kana muti wezviito zvinogoneka, zviri nyore kuongorora zviito zvese uye kusarudza iyo yakakodzera kwazvo panguva ino.

Iyo Utility-yakavakirwa sisitimu ichabatsira neizvi chete. Iyi ihurongwa apo mumiririri ane maitiro akasiyana-siyana uye anosarudza kuti ndeapi ekuita zvichienderana nehukama hwekushandisa kweumwe neumwe. Uko utility chiyero chisingaverengeki chekukosha kana kudikanwa kuti mumiririri aite chiito ichi.

Iyo yakaverengerwa kushandiswa kwechiito kunoenderana nemamiriro azvino uye zvakatipoteredza, mumiriri anogona kutarisa uye kusarudza akanyanya kukodzera imwe nyika chero nguva. Izvi zvakafanana neFSM, kunze kwekunge shanduko inotarwa nefungidziro yenzvimbo imwe neimwe inogona kuitika, kusanganisira yazvino. Ndokumbira utarise kuti isu tinosarudza iyo inonyanya kukosha chiito chekuenderera mberi (kana kugara kana isu takatopedza). Kune zvimwe zvakasiyana-siyana, iyi inogona kunge iri pakati nepakati asi yakasarudzika sarudzo kubva kune diki rondedzero.

Iyo sisitimu inopa huwandu husina kujeka hwehushandiso hwemhando - semuenzaniso, kubva pa0 (haidiwe zvachose) kuenda ku100 (inodiwa zvachose). Chiito chega chega chine huwandu hwema paramita anokanganisa kuverengerwa kweukoshi uhu. Kudzokera kumuenzaniso wedu wevatariri:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Shanduko pakati pezviito hazvina kujeka-chero nyika inogona kutevera chero imwe. Zviito zvakakosha zvinowanikwa mune zvakadzoserwa zvekushandisa. Kana muvengi achionekwa, uye muvengi iyeye akasimba, uye hutano hwemunhu hwakaderera, saka zvese zviri zviviri Kutiza uye KuwanaHelp zvichadzosa yakakwirira isiri zero kukosha. Muchiitiko ichi, FindingHelp ichagara yakakwirira. Saizvozvo, mabasa asiri ehondo haadzoke anopfuura makumi mashanu, saka anogara akaderera pane ekurwa. Iwe unofanirwa kufunga nezve izvi paunenge uchigadzira zviito uye kuverenga zvekushandisa kwavo.

Mumuenzaniso wedu, zviito zvinodzorera ingave yakagadziriswa kukosha kwechigarire kana chimwe chezvinhu zviviri zvakagadziriswa. Humwe hurongwa hwechokwadi hunogona kudzorera fungidziro kubva kuhuwandu hunoenderera hwehukoshi. Semuyenzaniso, iyo Inotiza chiito inodzosa yakakwirira utility kukosha kana hutano hwemumiririri hwakaderera, uye Attacking chiito chinodzosera yakaderera utility kukosha kana muvengi akanyanya kusimba. Nekuda kweizvi, Chiito cheKutiza chinotungamira pane Kurwisa mune chero mamiriro ezvinhu apo mumiririri anonzwa kuti haana hutano hwakakwana kukunda muvengi. Izvi zvinobvumira zviito kuti zvikosheswe zvichienderana nenhamba ipi zvayo yezvipimo, zvichiita kuti nzira iyi iwedzere kushanduka uye yakasiyana-siyana kupfuura muti wekuita kana FSM.

Chiito chimwe nechimwe chine mamiriro mazhinji ekuverenga chirongwa. Inogona kunyorwa mumutauro wekunyora kana senhevedzano yemasvomhu mafomula. Iyo Sims, iyo inoteedzera maitiro ezuva nezuva emunhu, inowedzera imwezve chikamu chekuverenga - mumiririri anogamuchira akatevedzana e "makurudziro" anopesvedzera zviyero zvekushandisa. Kana munhu aine nzara, anotowedzera kunzwa nzara nekufamba kwenguva, uye kukosha kwekushandisa kweEatFood chiitiko kuchawedzera kudzamara mutambi azviita, achidzikisa huwandu hwenzara uye kudzoreredza kukosha kweEatFood kusvika zero.

Pfungwa yekusarudza zviito zvichibva pane rating system iri nyore, saka Utility-yakavakirwa sisitimu inogona kushandiswa sechikamu cheAI kuita sarudzo, kwete sechinotsiva chakazara kwavari. Muti wesarudzo unogona kukumbira chiyero chekushandiswa kwemanodhi maviri evana uye sarudza yepamusoro. Saizvozvo, muti wekuita unogona kuve neyakaumbwa Utility node yekuongorora kushandiswa kwezviito kusarudza kuti ndeupi mwana wekuuraya.

Movement uye kufamba

Mumienzaniso yapfuura, takanga tine chikuva chataifambisa kuruboshwe kana kurudyi, uye murindi aitenderera kana kuti kurwisa. Asi isu tinobata sei chaizvo kufamba kweajenti pane imwe nguva? Tinoseta sei kumhanya, tinonzvenga sei zvipingamupinyi, uye tinoronga sei nzira kana kusvika kwaunoenda kwakaoma pane kungofamba mumutsara wakatwasuka? Ngatitarisei izvi.

Hurumende

Padanho rekutanga, isu tichafunga kuti mumiriri wega wega ane kukosha kwekumhanya, kunosanganisira kukurumidza kwairi kufamba uye munzira ipi. Inogona kuyerwa mumamita pasekondi, makiromita paawa, pixels pasekondi, zvichingodaro. Tichirangarira Sense/Funga/Act loop, tinogona kufungidzira kuti Funga chikamu chinosarudza kumhanya, uye Chikamu cheChiito chinoshandisa iyo kumhanya kune mumiririri. Kazhinji mitambo ine fizikisi system inokuitira basa iri, kudzidza kukosha kwekumhanya kwechinhu chimwe nechimwe uye kuchigadzirisa. Naizvozvo, iwe unogona kusiya iyo AI nebasa rimwechete - kusarudza kuti imhanyi iyo mumiririri anofanirwa kuve nayo. Kana iwe uchiziva kuti mumiriri anofanira kunge ari papi, saka unofanirwa kuifambisa nenzira kwayo nekumhanya kwakatarwa. Equation isingakoshi:

zvinodiwa_kufamba = destination_position - agent_position

Fungidzira nyika ye2D. Mumiririri ari panzvimbo (-2,-2), kwainoenda kune imwe nzvimbo kuchamhembe kwakadziva kumabvazuva panzvimbo (30, 20), uye nzira inodiwa kuti mumiririri asvike ikoko (32, 22). Ngatitii nzvimbo idzi dzakayerwa mumamita - kana tikatora kumhanya kwemumiririri kuve 5 metres pasekondi, isu tinozoyera yedu displacement vector uye towana kumhanya kweinenge (4.12, 2.83). Nemaparamita aya, mumiririri aisvika kwaaizoenda mumasekonzi masere.

Iwe unogona kuverengera zvakare kukosha chero nguva. Kana mumiririri anga ari pakati nepakati kune chinangwa, kufamba kwaizova hafu yehurefu, asi sezvo kukurumidza kwemumiririri iri 5 m / s (takasarudza izvi pamusoro), kukurumidza kunenge kwakafanana. Izvi zvinoshandawo pakufambisa zvinangwa, zvichibvumira mumiririri kuita shanduko diki pavanenge vachifamba.

Asi isu tinoda misiyano yakawanda - semuenzaniso, kuwedzera zvishoma nezvishoma kumhanya kutevedzera hunhu hunofamba kubva pakumira kuenda pakumhanya. Zvimwe chetezvo zvinogona kuitwa pakupedzisira usati wamira. Aya maficha anozivikanwa semafambiro ekufambisa, rimwe nerimwe rine mazita chaiwo: Tsvaka, Tiza, Kusvika, etc. Pfungwa ndeyokuti masimba ekumhanyisa anogona kushandiswa kune kumhanya kwemumiririri, zvichibva pakuenzanisa chinzvimbo chemumiririri uye kumhanya kwazvino nekwazvino. kuti ushandise nzira dzakasiyana dzekuenda kune chinangwa.

Maitiro ega ega ane chinangwa chakati siyanei. Kutsvaga uye Kusvika inzira dzekufambisa mumiririri kune kwaunoenda. Zvipingamupinyi Kunzvenga uye Kupatsanura gadzirisa mafambiro emumiririri kudzivirira zvipingamupinyi munzira yekuenda kuchinangwa. Kurongeka uye Kubatana kunoita kuti vamiririri vafambe pamwechete. Chero huwandu hweakasiyana hunhu hwekutungamira hunogona kupfupikiswa kugadzira imwe nzira vector ichitora zvese zvinhu mukufunga. Mumiririri anoshandisa Kusvika, Kupatsanura, uye Zvipingamupinyi Kunzvenga maitiro kuti agare kure nemadziro uye mamwe maagent. Iyi nzira inoshanda zvakanaka munzvimbo dzakavhurika pasina ruzivo rusina basa.

Mumamiriro ezvinhu akaoma, kuwedzera kwemaitiro akasiyana kunoshanda zvakanyanya - semuenzaniso, mumiriri anogona kunamatira mumadziro nekuda kwekupokana pakati peKusvika uye Kudzivisa Kudzivisa. Naizvozvo, iwe unofanirwa kufunga nezve sarudzo dzakaomarara pane kungowedzera zvese zvakakosha. Nzira ndeiyi: pachinzvimbo chekuwedzera mhedzisiro yemaitiro ega ega, unogona kufunga nezvekufamba munzira dzakasiyana uye sarudza yakanakisa sarudzo.

Nekudaro, munzvimbo yakaoma ine magumo akafa uye sarudzo nezve nzira yekuenda, isu tichada chimwe chinhu chakatonyanya kufambira mberi.

Kutsvaga nzira

Mafambiro ekufambisa akanakira kufamba kuri nyore munzvimbo yakavhurika (nhandare yenhabvu kana nhandare) uko kubva paA kuenda kuB igwara rakatwasuka rine zvipingaidzo zvidiki chete. Kune nzira dzakaoma, tinoda kutsvaga nzira, inova nzira yekuongorora nyika uye kusarudza nzira yekupfuura nayo.

Iyo iri nyore ndeyekuisa gidhi kune yega yega sikweya padivi pemumiriri uye ongorora kuti ndeupi wavo anotenderwa kufamba. Kana imwe yadzo iri kwainoenda, tevera nzira kubva pane imwe neimwe square kuenda kune yapfuura kusvika wasvika kwekutanga. Iyi ndiyo nzira. Zvikasadaro, dzokorora maitirwo acho nemamwe masikweya ari padyo kudzamara wawana kwauri kuenda kana kuti wapera masikweya (zvinoreva kuti hapana nzira inogoneka). Izvi ndizvo zvinozivikanwa seBreadth-First Search kana BFS (breadth-first search algorithm). Panhanho imwe neimwe anotarisa kumativi ose (nokudaro kufara, "upamhi"). Nzvimbo yekutsvaga yakafanana newavefront inofamba kusvika yasvika panzvimbo yaidiwa - nzvimbo yekutsvaga inowedzera pane imwe neimwe nhanho kusvikira iyo yekupedzisira yakabatanidzwa, mushure meiyo inogona kurondwa kubva pakutanga.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Nekuda kweizvozvo, iwe unogashira runyoro rwemasikweya painobatanidzwa nzira yaunoda. Iyi ndiyo nzira (saka, nzira yekutsvaga) - runyorwa rwenzvimbo dzinozoshanyirwa nemumiririri uchitevera kwainoenda.

Tichifunga kuti tinoziva chinzvimbo chemativi ese epasirese, tinogona kushandisa mafambiro ekufambisa kufamba munzira - kubva pa node 1 kuenda pa node 2, tobva pa node 2 kusvika node 3 zvichingodaro. Sarudzo yakareruka ndeyekunanga pakati pechikwere chinotevera, asi sarudzo iri nani kumira pakati pemupendero pakati pechikwere chazvino neicho chinotevera. Nekuda kweizvi, mumiririri achakwanisa kucheka makona pakutendeuka kwakapinza.

Iyo BFS algorithm zvakare ine zvakaipira - inoongorora akawanda masikweya munzira "isiyo" semu "kurudyi" gwara. Apa ndipo panopinda imwe algorithm yakaomesesa inonzi A * (Nyeredzi). Inoshanda nenzira imwecheteyo, asi panzvimbo yekuongorora neupofu nzvimbo dzakavakidzana (ipapo vavakidzani vevavakidzani, ipapo vavakidzani vevavakidzani vevavakidzani, zvichingodaro), inounganidza node murunyoro uye inoaronga kuitira kuti node inotevera yakaongororwa inogara iri iyo. imwe inotungamira kunzira ipfupi. Manodhi anorongwa zvichibva pane heuristic inofunga nezvezvinhu zviviri β€” "mutengo" wenzira yekufungidzira kuenda kune inodiwa skweya (kusanganisira chero mari yekufambisa) uye fungidziro yekuti skweya iyi iri kure sei kubva kwainoenda (inorerekera kutsvaga munzvimbo nzira yakarurama).

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Uyu muenzaniso unoratidza kuti mumiririri anoongorora sikweya imwe panguva, nguva yega yega achisarudza iri padyo neiyo inonyanya kuvimbisa. Iyo inokonzeresa nzira yakafanana neBFS, asi mashoma masikweya akatariswa mukuita - izvo zvine simba guru pakuita kwemutambo.

Movement isina grid

Asi mitambo mizhinji haina kuiswa pagridi, uye kazhinji hazvigoneke kuzviita pasina kupira chokwadi. Kubvumirana kunodiwa. Sikweya inofanira kuva saizi ipi? Yakakura kwazvo uye havazokwanise kumiririra nenzira kwayo makoridho madiki kana matenderedzwa, madiki uye pachave neakawandisa masikweya ekutsvaga, izvo zvinozopedzisira zvatora nguva yakawanda.

Chinhu chekutanga kunzwisisa ndechekuti mesh inotipa girafu yemanodhi akabatana. Iyo A * uye BFS algorithms inoshanda pamagirafu uye haina basa nezve mesh yedu zvachose. Tinogona kuisa nodes chero kupi zvako munyika yemutambo: chero paine hukama pakati pezvipi zviviri zvakabatanidzwa node, pamwe nepakati pekutanga uye yekupedzisira poindi uye inokwana imwe yemanodhi, iyo algorithm ichashanda sezvakangoita kare. Iyi inowanzonzi waypoint system, sezvo nodi imwe neimwe ichimiririra nzvimbo yakakosha munyika inogona kuva chikamu chenhamba ipi neipi yenzira dzekufungidzira.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga
Muenzaniso 1: knot mune imwe neimwe square. Kutsvaga kunotanga kubva ku node uko mumiriri anowanikwa uye kunogumira pane node yechikwere inodiwa.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga
Muenzaniso 2: Seti diki yemanodhi (waypoints). Kutsvaga kunotanga pachikwere chemumiririri, kunopfuura nenhamba inodiwa yemanodhi, yozoenderera mberi kuenda kwainoenda.

Iyi inonyatso shanduka uye ine simba system. Asi kumwe kungwarira kunodiwa pakusarudza kupi uye sei nzira yekuisa nzira, zvikasadaro vamiririri vanogona kungotadza kuona nzvimbo iri padyo uye havazokwanisa kutanga nzira. Zvingave nyore kana isu taigona kuisa otomatiki mapoinzi zvichienderana neiyo geometry yenyika.

Apa ndipo panoonekwa mesh yekufambisa kana navmesh (navigation mesh). Iyi inowanzoita 2D mesh yematriangles inoturikidzwa pajeometry yenyika - pese panotenderwa mumiririri kufamba. Imwe neimwe yemakona matatu ari mumambure inova node mugirafu, uye ine anosvika matatu matatu akatarisana anove mafundo akabatana mugirafu.

Uyu mufananidzo muenzaniso kubva kuUnited injini - yakaongorora geometry munyika uye yakagadzira navmesh (mune skrini muchiedza chebhuruu). Porigoni imwe neimwe mu navmesh inzvimbo iyo mumiririri anogona kumira kana kufamba kubva paporigoni kuenda pane rimwe barika. Mumuenzaniso uyu, mapolygoni maduku pane pasi pavanenge vari - izvi zvinoitwa kuitira kuti titarise saizi yemumiririri, iyo ichawedzera kupfuura nzvimbo yayo yezita.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Tinogona kutsvaga nzira kuburikidza nemambure aya, zvakare tichishandisa iyo A * algorithm. Izvi zvichatipa inenge yakakwana nzira munyika, iyo inofunga nezvese geometry uye haidi zvisina kufanira node uye kusikwa kwenzira.

Pathfinding inyaya yakawandisa iyo chikamu chimwe chechinyorwa chisina kukwana. Kana iwe uchida kuidzidza zvakadzama, zvino izvi zvichabatsira Amit Patel webhusaiti.

Kuronga

Takadzidza nekutsvaga nzira kuti dzimwe nguva hazvina kukwana kungotora gwara nekufamba - isu tinofanirwa kusarudza nzira toita majana mashoma kuti tisvike kwatinoda kwatinoenda. Tinogona kuenzanisa pfungwa iyi: kuzadzisa chinangwa harisi danho rinotevera chete, asi kutevedzana kwese uko dzimwe nguva unofanirwa kutarisa mberi matanho akati wandei kuti uone kuti chekutanga chinofanira kunge chii. Uku kunonzi kuronga. Pathfinding inogona kufungidzirwa seimwe yeakawanda ekuwedzera pakuronga. Panyaya yedu Sense / Funga / Chiito kutenderera, apa ndipo pane Funga chikamu chinoronga akawanda Act zvikamu zvenguva yemberi.

Ngatitarisei muenzaniso webhodhi mutambo Mashiripiti: Iko Kuunganidza. Isu tinoenda chekutanga neanotevera seti yemakadhi mumaoko edu:

  • Swamp - Inopa 1 mana manna (land card).
  • Sango - rinopa 1 green mana (nyika kadhi).
  • Fugitive Wizard - Inoda 1 mana yebhuruu kudaidza.
  • Elvish Mystic - Inoda 1 green mana kudaidza.

Isu tinofuratira makadhi matatu asara kuti zvive nyore. Zvinoenderana nemirairo, mutambi anotenderwa kutamba 1 kadhi renyika pakutendeuka, anogona "kubaya" kadhi iri kuti abvise mana kubva mariri, obva akanda zvitsinga (kusanganisira kudaidza chisikwa) zvichienderana nehuwandu hwemana. Mumamiriro ezvinhu aya, mutambi wevanhu anoziva kutamba Sango, tora 1 green mana, wobva wadaidza Elvish Mystic. Asi mutambo weAI unogona sei kufunga izvi?

Kuronga kuri nyore

Nzira diki ndeyekuedza chiito chega chega kusvika pasisina vakakodzera vasara. Nekutarisa makadhi, iyo AI inoona izvo Swamp inogona kutamba. Uye anoiridza. Pane mamwe maitiro asara pajana rino here? Izvo hazvigone kudaidza kana Elvish Mystic kana Fugitive Wizard, sezvo ivo vachida girinhi nebhuruu mana zvakateerana kuti vashevedze ivo, nepo Swamp inongopa mana mana. Uye haachakwanisa kutamba Forest, nekuti akatotamba Swamp. Nokudaro, mutambo AI wakatevera mitemo, asi wakazviita zvakashata. Inogona kuvandudzwa.

Kuronga kunogona kuwana runyoro rwezviito zvinounza mutambo kune inodiwa mamiriro. Sezvinongoita mativi ese enzira aive nevavakidzani (mukutsvaga nzira), chiitiko chese muchirongwa chinewo vavakidzani kana vatsivi. Tinogona kutsvaga zviito izvi uye zviito zvinozotevera kusvika tasvika kune yatinoda.

Mumuenzaniso wedu, mhedzisiro inodiwa ndeye "kudaidza chisikwa kana zvichibvira." Pakutanga kwekutendeuka, tinoona zviito zviviri chete zvinotenderwa nemitemo yemutambo:

1. Tamba Swamp (mhedzisiro: Swamp mumutambo)
2. Tamba Sango (mhedzisiro: Sango mumutambo)

Chiito chimwe nechimwe chinotorwa chinogona kutungamirira kune mamwe zviito uye kuvhara vamwe, zvakare zvichienderana nemitemo yemutambo. Fungidzira isu takatamba Swamp - izvi zvichabvisa Swamp sedanho rinotevera (takatoitamba), uye izvi zvichabvisawo Sango (nekuti maererano nemitemo unogona kutamba kadhi renyika rimwe nerimwe). Mushure meizvi, iyo AI inowedzera kuwana 1 nhema mana sedanho rinotevera nekuti hapana dzimwe sarudzo. Kana akaenderera mberi osarudza Tap the Swamp, anogashira 1 unit yeblack man uye haakwanise kuita chero chinhu nayo.

1. Tamba Swamp (mhedzisiro: Swamp mumutambo)
1.1 "Tap" Swamp (mhedzisiro: Swamp "yakabatwa", +1 unit yeblack mana)
Hapana zviito zviripo - END
2. Tamba Sango (mhedzisiro: Sango mumutambo)

Rondedzero yezviito yaive pfupi, takasvika kumagumo. Isu tinodzokorora nzira yedanho rinotevera. Isu tinotamba Sango, vhura chiitiko "tora 1 green mana", iyo inozovhura yechitatu chiitiko - sheedza Elvish Mystic.

1. Tamba Swamp (mhedzisiro: Swamp mumutambo)
1.1 "Tap" Swamp (mhedzisiro: Swamp "yakabatwa", +1 unit yeblack mana)
Hapana zviito zviripo - END
2. Tamba Sango (mhedzisiro: Sango mumutambo)
2.1 "Tap" Sango (mhedzisiro: Sango "rakatepwa", +1 unit yegirinhi mana)
2.1.1 Summon Elvish Mystic (mhedzisiro: Elvish Mystic ari kutamba, -1 green mana)
Hapana zviito zviripo - END

Pakupedzisira, takaongorora zvese zvingaite uye takawana chirongwa chinodaidza chisikwa.

Uyu muenzaniso wakarerutswa zvikuru. Zvinokurudzirwa kuti usarudze chirongwa chakanakisa, pane kungoita chero chirongwa chinosangana nezvimwe zvinodiwa. Zvinowanzogoneka kuongorora zvirongwa zvingangove zvichibva pane zvakabuda kana kubatsirika kwese kwekuita kwavo. Unogona kuzviwanira iwe 1 poindi yekutamba kadhi renyika uye matatu mapoinzi ekudaidza chisikwa. Kutamba Swamp kwaizova 3 point plan. Uye kutamba Sango β†’ Tinya Sango β†’ sheedza Elvish Mystic ichapa ipapo 1 mapoinzi.

Aya ndiwo mashandiro anoita kuronga muMashiripiti: Iko Kuunganidza, asi pfungwa imwechete inoshanda mune mamwe mamiriro. Semuyenzaniso, kufambisa chitambi kuti bhishopi afambe muchesi. Kana tora chivharo kuseri kwemadziro kuti upfure zvakachengeteka muXCOM seizvi. Kazhinji, iwe unowana pfungwa.

Kuronga kwakavandudzwa

Dzimwe nguva kune zvakawanda zvakawandisa zvinogona kuita zvekufunga nezvese zvingaite sarudzo. Kudzokera kumuenzaniso neMashiripiti: Iko Kuunganidza: ngatitii mumutambo uye muruoko rwako mune akati wandei makadhi epasi uye zvisikwa - huwandu hwezvinogoneka musanganiswa wemafambiro unogona kunge uri mumakumi mazhinji. Pane zvakawanda zvinogadzirisa dambudziko racho.

Nzira yekutanga ndeyekudzokera kumashure. Panzvimbo yekuyedza masanganiswa ese, zviri nani kutanga nemhedzisiro uye edza kutsvaga nzira yakananga. Panzvimbo pekubva pamudzi wemuti kuenda kune rimwe shizha, tinofamba nenzira yakatarisana - kubva pashizha kusvika kumudzi. Iyi nzira iri nyore uye nekukurumidza.

Kana muvengi aine hutano 1, unogona kuwana iyo "dhiri 1 kana kupfuura kukuvadza" chirongwa. Kuti uite izvi, zviverengero zvemamiriro zvinofanirwa kusangana:

1. Kukuvadza kunogona kukonzerwa nechitsinga - inofanira kunge iri muruoko.
2. Kuroya, unoda mana.
3. Kuti uwane mana, unofanirwa kutamba kadhi renyika.
4. Kuti utambe kadhi renyika, unofanira kuva naro muruoko rwako.

Imwe nzira ndiyo yakanakisa-yekutanga kutsvaga. Panzvimbo yekuedza nzira dzese, tinosarudza iyo yakakodzera kwazvo. Kazhinji, nzira iyi inopa hurongwa hwakakwana pasina mari yekutsvaga isingakoshi. A* imhando yekutsvaga yakanakisa yekutanga - nekuongorora nzira dzinovimbisa kubva pakutanga, inogona kutowana nzira yakanaka pasina kutarisa dzimwe sarudzo.

Inonakidza uye inowedzera kufarirwa yakanakisa-yekutanga yekutsvaga sarudzo ndeye Monte Carlo Tree Kutsvaga. Panzvimbo yekufungidzira kuti ndezvipi zvirongwa zviri nani pane vamwe pakusarudza chimwe nechimwe chinotevera chiito, iyo algorithm inosarudza vatsivi vasina kurongeka padanho rega rega kusvika yasvika kumagumo (apo chirongwa chakakonzera kukunda kana kukundwa). Mhedzisiro yekupedzisira inobva yashandiswa kuwedzera kana kuderedza huremu hwesarudzo dzakapfuura. Nekudzokorora chiitiko ichi kakawanda mumutsara, iyo algorithm inopa fungidziro yakanaka yekuti chii chakanakisa chinotevera kufamba, kunyangwe mamiriro akachinja (kana muvengi akatora chiito kuvhiringidza mutambi).

Hapana nyaya yekuronga mumitambo ingave yakakwana pasina Goal-Oriented Action Planning kana GOAP (chinangwa-chinotungamirwa kuita kuronga). Iyi inzira inoshandiswa zvakanyanya uye yakakurukurwa, asi kunze kwemamwe mashoma ekusiyanisa, ndiyo nzira yekudzokera kumashure yatakambotaura nezvayo. Kana chinangwa chaive cheku "paradza mutambi" uye mutambi ari kumashure kwechivharo, chirongwa chinogona kunge chiri: kuparadza negirinedhi β†’ tora β†’ ikande.

Panowanzova nezvinangwa zvakati kuti, chimwe nechimwe chine pokutanga. Kana chinangwa chepamusoro-soro chikatadza kupedzwa (hapana musanganiswa wezviito zvinogadzira chirongwa che "kuuraya mutambi" nekuti mutambi haaonekwe), iyo AI inodzokera kudzikisa zvibodzwa zvekutanga.

Kudzidzira uye kugadzirisa

Takatotaura kuti mutambo AI kazhinji haushandise muchina kudzidza nekuti hauna kukodzera kutonga vamiririri munguva chaiyo. Asi izvi hazvirevi kuti haugone kukwereta chimwe chinhu kubva munzvimbo iyi. Tinoda mupikisi mune anopfura kuti tinogona kudzidza chimwe chinhu kubva. Semuenzaniso, tsvaga nezvenzvimbo dzakanakisa pamepu. Kana kuti mudzvanyiriri mumutambo wekurwa angavharisa mutambi wacho mafambiro ecombo anogara achishandiswa, achimukurudzira kushandisa vamwe. Saka kudzidza kwemichina kunogona kubatsira mumamiriro ezvinhu akadaro.

Nhamba uye Zvinogoneka

Tisati tapinda mumienzaniso yakaoma, ngationei kuti tingasvika papi nekutora zviyero zvakapfava zvishoma uye kuzvishandisa kuita sarudzo. Semuyenzaniso, chaiyo-nguva zano - tinoona sei kuti mutambi anogona kutanga kurwisa mumaminetsi mashoma ekutanga emutambo uye ndedzipi dziviriro yekugadzirira pamusoro peizvi? Tinogona kudzidza zvakamboitika nemutambi kuti tinzwisise zvingaite mune ramangwana. Kutanga, isu hatina data mbishi kudaro, asi tinogona kuiunganidza - pese apo AI inotamba nemunhu, inogona kurekodha nguva yekutanga kurwiswa. Mushure mezvikamu zvishoma, tichawana avhareji yenguva ichatora kuti mutambi arwise mune ramangwana.

Panewo dambudziko neavhareji tsika: kana mutambi akamhanya ka20 uye akatamba zvishoma nezvishoma ka20, ipapo hunhu hunodiwa huchave pane imwe nzvimbo pakati, uye izvi hazvizotipe chero chinhu chinobatsira. Imwe mhinduro ndeyekudzikamisa data rekuisa - yekupedzisira zvidimbu makumi maviri zvinogona kuverengerwa.

Maonero akafanana anoshandiswa pakuenzanisa mukana wezvimwe zviito nekufungidzira kuti zvakambofarirwa nemutambi zvichafanana mune ramangwana. Kana mutambi akatirwisa kashanu nebhora remoto, kaviri nemheni, uye kamwe nemelee, zviri pachena kuti anoda bhora remoto. Ngatiwedzerei tione mukana wekushandisa zvombo zvakasiyana: fireball=62,5%, mheni=25% uye melee=12,5%. Mutambo wedu AI unofanirwa kugadzirira kuzvidzivirira kubva kumoto.

Imwe nzira inonakidza ndeye kushandisa iyo Naive Bayes Classifier kudzidza akawanda ekuisa data uye kuronga mamiriro acho kuti AI iite nenzira yaunoda. Bayesian classifiers vanozivikanwa zvakanyanya nekushandisa kwavo mune email spam mafirita. Ikoko vanoongorora mazwi, vaaenzanisa neaya mazwi akamboonekwa (mu spam kana kwete), uye vanotora mhedziso nezve maemail anouya. Tinogona kuita zvimwe chetezvo kunyangwe tiine mashoma ekuisa. Zvichienderana neruzivo rwese runobatsira rwunoonekwa neAI (sezvakagadzirwa mauto evavengi, kana zvitsinga zvavanoshandisa, kana matekinoroji avakatsvaga), uye mhedzisiro (hondo kana rugare, kumhanyisa kana kudzivirira, nezvimwewo) - isu tichasarudza inodiwa AI maitiro.

Idzi dzese nzira dzekudzidzisa dzakakwana, asi zvinokurudzirwa kudzishandisa zvichienderana nedata rekuyedza. Iyo AI ichadzidza kuchinjika kune akasiyana matipi akashandiswa nevatambi vako. AI inojairana nemutambi mushure mekuburitswa inogona kuve yakafanotaurwa kana kunetsa kukunda.

Value based adaptation

Tichifunga nezvemukati menyika yedu yemutambo uye mitemo, tinogona kushandura seti yehunhu inopesvedzera kuita sarudzo, pane kungoshandisa data rekuisa. Tinoita izvi:

  • Rega iyo AI iunganidze data pamusoro penyika uye zviitiko zvakakosha panguva yemutambo (sepamusoro).
  • Ngatichinjei mashoma akakosha kukosha kwakavakirwa pane iyi data.
  • Isu tinoshandisa zvisarudzo zvedu zvichibva pakugadzirisa kana kuongorora izvi zvakakosha.

Semuenzaniso, mumiririri ane makamuri akati wandei ekusarudza kubva pamepu yemunhu wekutanga kupfura. Imba imwe neimwe ine kukosha kwayo, iyo inosarudza kuti inodikanwa sei kushanyira. Iyo AI inosarudza zvisingaite kamuri yekuenda nayo zvichienderana nekukosha. Mumiririri anobva ayeuka kuti akaurairwa kamuri ripi uye anoderedza kukosha kwayo (mukana wekuti achadzokera ikoko). Saizvozvo kune reverse mamiriro - kana mumiriri achiparadza vazhinji vanopikisa, ipapo kukosha kwekamuri kunowedzera.

Markov muenzaniso

Ko kana tikashandisa data yakaunganidzwa kuita fungidziro? Kana tikarangarira kamuri yega yega yatinoona mutambi mune imwe nguva yenguva, isu tinofanotaura kuti ndeipi kamuri iyo mutambi angaenda. Nekutevera uye kurekodha mafambiro emutambi mumakamuri (tsika), tinogona kuzvifembera.

Ngatitore makamuri matatu: tsvuku, girini uye bhuruu. Uye zvakare zvakacherechedzwa zvatakarekodha tichiona chikamu chemutambo:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Huwandu hwekucherechedzwa mukamuri yega yega hunenge hwakaenzana - isu hatisati taziva kuti tingagadzira kupi nzvimbo yakanaka yekuvandira. Kuunganidza manhamba kwakaomeswa zvakare nekutsikisa kwevatambi, vanoonekwa zvakaenzana pamepu yese. Asi iyo data yekamuri rinotevera ravanopinda mushure mekuonekwa pamepu yatove inobatsira.

Zvinogona kuoneka kuti imba yakasvibira inokodzera vatambi - vanhu vazhinji vanotama kubva mukamuri dzvuku kuenda kwairi, 50% avo vanosara ipapo. Imba yebhuruu, pane zvinopesana, haina kufarirwa; anenge hapana anoenda kwairi, uye kana vakadaro, havagari kwenguva refu.

Asi iyo data inotitaurira chimwe chinhu chinonyanya kukosha - kana mutambi ari muimba yebhuruu, kamuri rinotevera ratinomuona richava dzvuku, kwete rakasvibirira. Kunyange zvazvo imba yakasvibirira inonyanya kufarirwa kupfuura imba tsvuku, mamiriro ezvinhu anoshanduka kana mutambi ari muimba yebhuruu. Iyo inotevera mamiriro (kureva kamuri ichaenda mutambi) zvinoenderana neyakapfuura mamiriro (kureva kamuri iro mutambi arimo parizvino). Nekuti isu tinoongorora zvinotsamira, tichaita kufanotaura kwakaringana kupfuura kana tikangoverenga zvakaonekwa takazvimirira.

Kufanotaura mamiriro emangwana zvichienderana nedata kubva kune yakapfuura mamiriro anonzi Markov modhi, uye mienzaniso yakadaro (ine makamuri) inonzi Markov maketani. Sezvo mapatani achimiririra mukana wekuchinja pakati penyika dzinotevedzana, iwo anoratidzwa nemaziso seFSM ane mukana wakatenderedza shanduko yega yega. Kare, takashandisa FSM kumiririra maitiro aivemo mumiririri, asi pfungwa iyi inotambanukira kune chero nyika, ingave yakabatana nemumiririri kana kwete. Muchiitiko ichi, nyika dzinomiririra kamuri iyo mumiririri anogara:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Iyi inzira yakapusa yekumiririra mukana wehukama hwekuchinja kwenyika, ichipa iyo AI imwe kugona kufanotaura nyika inotevera. Unogona kutarisira matanho akati kuti mberi.

Kana mutambi ari mukamuri rakasvibira, pane mukana we50% wekuti acharamba aripo nguva inotevera yaanocherechedzwa. Asi ndeapi mikana yekuti acharamba aripo kunyangwe mushure? Kwete chete kune mukana wekuti mutambi akaramba ari mukamuri yakasvibira mushure mekutarisa kaviri, asi panewo mukana wekuti akabva akadzoka. Heino tafura nyowani uchifunga nezve data nyowani:

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga

Zvinoratidza kuti mukana wekuona mutambi muimba yakasvibirira mushure mekucherechedza maviri achave akaenzana ne51% - 21% kuti achabva mukamuri dzvuku, 5% yavo iyo mutambi achashanyira imba yebhuruu pakati pavo, uye 25% iyo mutambi asingadi ichasiya imba yakasvibirira.

Tafura ingori chishandiso chekuona - maitiro acho anongoda kuwanza zvinokwanisika padanho rega rega. Izvi zvinoreva kuti iwe unogona kutarisa kure mune ramangwana uine imwe caveat: isu tinofungidzira kuti mukana wekupinda mukamuri unoenderana zvachose nekamuri iripo. Izvi zvinonzi Markov Property - mamiriro emangwana anoenderana chete nezvino. Asi ichi hachisi chokwadi zana kubva muzana. Vatambi vanogona kuchinja sarudzo zvichienderana nezvimwe zvinhu: nhanho yehutano kana huwandu hwepfuti. Nekuti isu hatirekodhe izvi zvakakosha, kufanotaura kwedu kuchave kushoma.

N-Grams

Zvakadini nemuenzaniso wemutambo wekurwa uye kufanotaura mafambiro emutambi combo? Zvimwe chete! Asi pachinzvimbo cheimwe nyika kana chiitiko, isu tichaongorora ese anoteedzana anoumba combo kuramwa.

Imwe nzira yekuita izvi ndeyekuchengetedza yega yega yekuisa (seKick, Punch kana Block) mubuffer uye nyora bhafa yese sechiitiko. Saka mutambi anoramba achidzvanya Kick, Kick, Punch kushandisa iyo SuperDeathFist kurwisa, iyo AI system inochengeta zvese zvinopinda mubuffer uye inorangarira matatu ekupedzisira anoshandiswa munhanho imwe neimwe.

Maitiro ekugadzira AI yemitambo: gwara kune vanotanga
(Mitsetse ine bold ndeye apo mutambi anotanga SuperDeathFist kurwisa.)

Iyo AI ichaona sarudzo dzese kana mutambi asarudza Kick, ichiteverwa neimwe Kick, uye wozoona kuti iyo inotevera inopinza inogara Punch. Izvi zvinobvumira mumiririri kufanotaura SuperDeathFist's combo kufamba uye kuivhara kana zvichibvira.

Aya akatevedzana ezviitiko anodaidzwa kunzi N-grams, apo N ndiyo nhamba yezvinhu zvakachengetwa. Mumuenzaniso wekare yaive 3-giramu (trigram), zvinoreva: zvinyorwa zviviri zvekutanga zvinoshandiswa kufanotaura chechitatu. Saizvozvowo, mu-5-giramu, zvinyorwa zvina zvekutanga zvinofanotaura chechishanu uye zvichingodaro.

Mugadziri anofanirwa kusarudza saizi yeN-grams nekungwarira. Idiki N inoda ndangariro shoma asi zvakare inochengeta nhoroondo shoma. Semuenzaniso, 2-giramu (bigram) icharekodha Kick, Kick kana Kick, Punch, asi haizokwanise kuchengeta Kick, Kick, Punch, saka iyo AI haizopindura kune SuperDeathFist combo.

Nekune rimwe divi, nhamba huru dzinoda ndangariro zhinji uye iyo AI ichanyanya kuoma kudzidzisa sezvo kuchave nezvimwe zvakawanda zvinogoneka sarudzo. Dai iwe uine matatu anogoneka ekuisa eKick, Punch kana Block, uye isu takashandisa gumi-giramu, ingangove zviuru makumi matanhatu sarudzo dzakasiyana.

Iyo bigram modhi iri nyore Markov cheni - imwe neimwe yapfuura mamiriro / yazvino mamiriro maviri iBigram, uye unogona kufanotaura mamiriro echipiri zvichienderana nekutanga. Iyo 3-giramu uye yakakura N-magiramu inogona zvakare kufungidzirwa seMarkov cheni, apo zvinhu zvese (kunze kweyekupedzisira muN-giramu) pamwe chete zvinoumba nyika yekutanga uye yekupedzisira chinhu chechipiri. Muenzaniso wemutambo wekurwa unoratidza mukana wekuchinja kubva kuKick uye Kick state kuenda kuKick and Punch state. Nekubata akawanda mapindiro enhoroondo sechikamu chimwe chete, isu tiri kunyatso kushandura kutevedzana kwekupinza kuita chikamu chenyika yese. Izvi zvinotipa iyo Markov chivakwa, icho chinotibvumira kushandisa Markov maketani kufanotaura iyo inotevera yekuisa uye fungidzira kuti combo kufamba kuchave chii.

mhedziso

Takataura pamusoro pezvishandiso zvakajairika uye nzira mukuvandudza kwehungwaru hwekugadzira. Takatarisawo mamiriro ezvinhu avanoda kushandiswa uye paanonyanya kukosha.

Izvi zvinofanirwa kukwana kuti unzwisise izvo zvekutanga zvemutambo AI. Asi, hongu, idzi hadzisi nzira dzese. Zvishoma kufarirwa, asi zvisingaite zvishoma zvinosanganisira:

  • optimization algorithms anosanganisira kukwira chikomo, gradient kudzika uye genetic algorithms
  • kutsvaga kweanopikisa/kuronga algorithms (minimax uye alpha-beta kuchekerera)
  • nzira dzekuisa (perceptrons, neural network uye kutsigira vector michina)
  • masisitimu ekugadzirisa maonero uye ndangariro
  • nzira dzekuvaka kuAI (hybrid system, subset architectures uye dzimwe nzira dzekufukidza AI masisitimu)
  • animation zvishandiso (kuronga uye kufamba kurongeka)
  • maitiro ekuita (chikamu chetsanangudzo, chero nguva, uye timelicing algorithms)

Zviwanikwa zvepamhepo pamusoro pemusoro wenyaya:

1. GameDev.net ine chikamu chine zvinyorwa uye zvidzidzo paAI, pamwe chete forum.
2. AiGameDev.com ine mharidzo dzakawanda uye zvinyorwa pamhando dzakasiyana dzemisoro ine chekuita nemutambo weAI kusimudzira.
3. Iyo GDC Vault inosanganisira misoro kubva kuGDC AI Summit, yakawanda yacho inowanikwa mahara.
4. Zvishandiso zvinobatsira zvinogonawo kuwanikwa pawebhusaiti AI Game Programmers Guild.
5. Tommy Thompson, muongorori weAI uye mugadziri wemutambo, anoita mavhidhiyo paYouTube AI neMitambo ine tsananguro uye kudzidza kweAI mumitambo yekutengesa.

Mabhuku ane musoro wenyaya:

1. The Game AI Pro bhuku rakatevedzana muunganidzwa wezvinyorwa zvipfupi zvinotsanangura maitiro ekuita chaiwo maficha kana kugadzirisa kwakanangana nematambudziko.

Game AI Pro: Yakaunganidzwa Hungwaru hweMutambo AI Nyanzvi
Game AI Pro 2: Yakaunganidzwa Hungwaru hweMutambo AI Nyanzvi
Game AI Pro 3: Yakaunganidzwa Hungwaru hweMutambo AI Nyanzvi

2. AI Game Programming Wisdom series ndiyo yakatangira yeGame AI Pro series. Iine nzira dzekare, asi dzinenge dzose dzinokosha kunyange nhasi.

AI Game Programming Uchenjeri 1
AI Game Programming Uchenjeri 2
AI Game Programming Uchenjeri 3
AI Game Programming Uchenjeri 4

3. Artificial Intelligence: Nzira Yemazuva Ano ndechimwe chezvinyorwa zvekutanga zvemunhu wese anoda kunzwisisa iyo general field yeartificial intelligence. Iri harisi bhuku nezvekuvandudzwa kwemutambo - rinodzidzisa izvo zvekutanga zveAI.

Source: www.habr.com

Voeg