Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Mwen te rankontre kèk materyèl enteresan sou entèlijans atifisyèl nan jwèt. Avèk yon eksplikasyon sou bagay debaz sou AI lè l sèvi avèk egzanp senp, ak andedan gen anpil zouti ak metòd itil pou devlopman ak konsepsyon pratik li yo. Ki jan, ki kote ak ki lè yo sèvi ak yo se tou la.

Pifò nan egzanp yo ekri nan pseudocode, kidonk pa gen okenn konesans pwogram avanse obligatwa. Anba koupe a gen 35 fèy tèks ak foto ak gif, kidonk prepare.

UPD. Mwen eskize, men mwen deja fè pwòp tradiksyon atik sa a sou Habré PatientZero. Ou ka li vèsyon li a isit la, men pou kèk rezon atik la te pase m 'pa (mwen te itilize rechèch la, men yon bagay ale mal). Epi depi m ap ekri sou yon blog ki dedye a devlopman jwèt, mwen deside kite vèsyon mwen an nan tradiksyon an pou abonnés (kèk pwen yo fòma yon fason diferan, kèk yo te fè espre omisyon sou konsèy devlopè yo).

Ki sa ki AI?

Jwèt AI konsantre sou ki aksyon yon objè ta dwe fè ki baze sou kondisyon kote li ye. Sa a se souvan refere yo kòm "ajan entèlijan" jesyon, kote yon ajan se yon karaktè jwè, yon machin, yon bot, oswa pafwa yon bagay ki pi abstrè: yon gwoup antye nan antite oswa menm yon sivilizasyon. Nan chak ka, li se yon bagay ki dwe wè anviwònman li, pran desizyon ki baze sou li, epi aji an akò ak yo. Yo rele sa sik Sans/Panse/Aji:

  • Sans: Ajan an jwenn oswa resevwa enfòmasyon sou bagay ki nan anviwònman li yo ki ka enfliyanse konpòtman li (menas ki tou pre, atik pou kolekte, kote enteresan yo eksplore).
  • Panse: Ajan an deside kijan pou l reyaji (konsidere si li an sekirite ase pou kolekte atik oswa si li ta dwe goumen/kache an premye).
  • Aji: ajan an fè aksyon pou aplike desizyon anvan an (kòmanse deplase nan direksyon lènmi an oswa objè).
  • ... kounye a sitiyasyon an chanje akòz aksyon karaktè yo, kidonk sik la repete ak nouvo done.

AI gen tandans konsantre sou pati sans nan bouk la. Pou egzanp, machin otonòm pran foto wout la, konbine yo ak done rada ak lidar, epi entèprete yo. Sa a se tipikman fè nan aprantisaj machin, ki trete done fèk ap rantre epi ba li siyifikasyon, ekstrè enfòmasyon semantik tankou "gen yon lòt machin 20 yad devan ou." Sa yo se pwoblèm yo rele klasifikasyon.

Jwèt yo pa bezwen yon sistèm konplèks yo ekstrè enfòmasyon paske pi fò nan done yo se deja yon pati entegral nan li. Pa gen okenn nesesite pou kouri algorithm rekonesans imaj pou detèmine si gen yon lènmi devan-jwèt la deja konnen ak manje enfòmasyon an dirèkteman nan pwosesis la pran desizyon. Se poutèt sa, pati Sans nan sik la souvan pi senp pase pati Panse ak Aji.

Limit nan jwèt AI

AI gen yon kantite limit ki dwe obsève:

  • AI pa bezwen resevwa fòmasyon davans, tankou si se te yon algorithm aprantisaj machin. Li pa fè okenn sans pou ekri yon rezo neral pandan devlopman pou kontwole dè dizèn de milye jwè yo epi aprann pi bon fason pou jwe kont yo. Poukisa? Paske jwèt la pa te lage epi pa gen okenn jwè.
  • Jwèt la ta dwe amizan ak defi, kidonk ajan yo pa ta dwe jwenn pi bon apwòch kont moun.
  • Ajan yo bezwen gade reyalis pou jwè yo santi yo ap jwe kont moun reyèl. Pwogram AlphaGo a depase moun, men etap yo te chwazi yo te trè lwen konpreyansyon tradisyonèl yo nan jwèt la. Si jwèt la simule yon opozan imen, santiman sa a pa ta dwe egziste. Algorithm la bezwen chanje pou li pran desizyon ki posib olye ke desizyon ideyal.
  • AI dwe travay an tan reyèl. Sa vle di ke algorithm la pa ka monopolize itilizasyon CPU pou peryòd tan ki long pou pran desizyon. Menm 10 milisgond twò lontan, paske pifò jwèt sèlman bezwen 16 a 33 milisgond pou fè tout pwosesis la epi ale nan pwochen ankadreman grafik la.
  • Idealman, omwen yon pati nan sistèm lan ta dwe baze sou done, pou moun ki pa kode yo ka fè chanjman ak ajisteman ka rive pi vit.

Ann gade apwòch AI ki kouvri tout sik Sans/Panse/Aji.

Pran Desizyon Debaz yo

Ann kòmanse ak jwèt ki pi senp lan - Pong. Objektif: deplase pedal la pou boul la rebondi sou li olye ke vole pase li. Se tankou tenis, kote ou pèdi si ou pa frape boul la. Isit la AI a gen yon travay relativman fasil - deside nan ki direksyon pou deplase platfòm la.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Deklarasyon kondisyonèl

Pou AI a nan Pong, solisyon ki pi evidan se toujou eseye mete platfòm la anba boul la.

Yon algorithm senp pou sa a, ekri nan pseudocode:

chak ankadreman / aktyalizasyon pandan jwèt la ap kouri:
si boul la sou bò gòch pedal la:
deplase pedal goch
lòt bagay si boul la sou bò dwat pedal la:
deplase pedal adwat

Si platfòm la deplase nan vitès boul la, Lè sa a, sa a se algorithm ideyal pou AI a nan Pong. Pa gen okenn bezwen konplike anyen si pa gen anpil done ak aksyon posib pou ajan an.

Apwòch sa a tèlman senp ke tout sik Sans / Panse / Aji se apèn aparan. Men li la:

  • Pati nan sans se nan de si deklarasyon. Jwèt la konnen ki kote boul la ye ak ki kote platfòm la ye, kidonk AI a ap chèche enfòmasyon sa yo.
  • Pati Panse a tou enkli nan de deklarasyon si yo. Yo enkòpore de solisyon, ki nan ka sa a se mityèlman eksklizif. Kòm yon rezilta, youn nan twa aksyon yo chwazi - deplase platfòm la sou bò gòch la, deplase li sou bò dwat la, oswa pa fè anyen si li deja kòrèkteman pozisyone.
  • Pati Lwa a jwenn nan deklarasyon Deplase Paddle Left ak Deplase Paddle Dwat. Tou depan de konsepsyon jwèt la, yo ka deplase platfòm la imedyatman oswa nan yon vitès espesifik.

Apwòch sa yo rele reyaktif - gen yon seri règ senp (nan ka sa a si deklarasyon nan kòd la) ki reyaji nan eta aktyèl la nan mond lan ak pran aksyon.

Pyebwa desizyon

Egzanp Pong la aktyèlman ekivalan a yon konsèp fòmèl AI ki rele yon pye bwa desizyon. Algorithm la ale atravè li pou rive nan yon "fèy" - yon desizyon sou ki aksyon yo pran.

Ann fè yon dyagram blòk nan pye bwa desizyon an pou algorithm platfòm nou an:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Chak pati nan pye bwa a rele yon ne - AI itilize teyori graf pou dekri estrikti sa yo. Gen de kalite nœuds:

  • Nœuds Desizyon: chwazi ant de altènativ ki baze sou tès kèk kondisyon, kote chak altènatif reprezante kòm yon ne separe.
  • Fin nœuds: Aksyon pou fè ki reprezante desizyon final la.

Algorithm la kòmanse nan premye ne (rasin nan pye bwa a). Li swa pran yon desizyon sou ki nod timoun yo ale nan, oswa li egzekite aksyon an ki estoke nan ne la ak sòti.

Ki avantaj ki genyen nan yon pyebwa desizyon fè menm travay ak deklarasyon si yo nan seksyon anvan an? Gen yon sistèm jeneral isit la kote chak desizyon gen sèlman yon kondisyon ak de rezilta posib. Sa a pèmèt devlopè a kreye AI apati done ki reprezante desizyon nan yon pye bwa san yo pa oblije kode li. Ann prezante li nan fòm tab:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Sou bò kòd ou pral jwenn yon sistèm pou li strings. Kreye yon ne pou chak nan yo, konekte lojik desizyon ki baze sou dezyèm kolòn nan, ak nœuds timoun ki baze sou twazyèm ak katriyèm kolòn yo. Ou toujou bezwen pwogram kondisyon yo ak aksyon, men kounye a estrikti nan jwèt la pral pi konplèks. Isit la ou ajoute plis desizyon ak aksyon, ak Lè sa a, Customize tout AI a pa tou senpleman modifye dosye tèks definisyon pyebwa a. Apre sa, ou transfere fichye a nan designer nan jwèt, ki moun ki ka chanje konpòtman an san yo pa recompiling jwèt la oswa chanje kòd la.

Pye bwa desizyon yo trè itil lè yo bati otomatikman nan yon seri gwo egzanp (pa egzanp, lè l sèvi avèk algorithm ID3). Sa fè yo yon zouti efikas ak pèfòmans segondè pou klasifye sitiyasyon ki baze sou done yo jwenn. Sepandan, nou ale pi lwen pase yon sistèm senp pou ajan yo chwazi aksyon.

Senaryo

Nou analize yon sistèm pyebwa desizyon ki te itilize kondisyon ak aksyon ki te deja kreye. Moun ki desine AI a ka òganize pye bwa a jan li vle, men li toujou gen konte sou kodè a ki pwograme li tout. E si nou ta ka bay designer a zouti yo kreye pwòp kondisyon yo oswa aksyon yo?

Se konsa ke pwogramè a pa oblije ekri kòd pou kondisyon yo Èske boul kite nan pedal ak se boul dwat nan pagay, li ka kreye yon sistèm nan ki designer nan pral ekri kondisyon yo tcheke valè sa yo. Lè sa a, done pyebwa desizyon yo pral sanble sa a:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Sa a se esansyèlman menm jan ak nan premye tablo a, men solisyon yo nan tèt yo gen pwòp kòd yo, yon ti jan tankou pati nan kondisyonèl nan yon deklarasyon si. Sou bò kòd, sa a ta li nan dezyèm kolòn nan pou nœuds desizyon yo, men olye pou yo chèche yon kondisyon espesifik pou egzekite (Èske boul kite nan pedal), li evalye ekspresyon kondisyonèl la epi li retounen vre oswa fo kòmsadwa. Sa fè lè l sèvi avèk lang scripting Lua oswa Angelscript. Sèvi ak yo, yon pwomotè ka pran objè nan jwèt li (boul ak pedal) epi kreye varyab ki pral disponib nan script la (ball.position). Epitou, langaj script la pi senp pase C++. Li pa mande pou yon etap konpilasyon konplè, kidonk li se ideyal pou byen vit ajiste lojik jwèt ak pèmèt "ki pa kode" yo kreye fonksyon ki nesesè yo tèt yo.

Nan egzanp ki anwo a, yo itilize langaj scripting sèlman pou evalye ekspresyon kondisyonèl la, men li ka itilize tou pou aksyon. Pa egzanp, done Move Paddle Right yo ka vin yon deklarasyon script (ball.position.x += 10). Se konsa, aksyon an defini tou nan script la, san yo pa bezwen pwograme Move Paddle Right.

Ou ka ale menm pi lwen epi ekri tout pyebwa desizyon an nan yon langaj scripting. Sa a pral kòd nan fòm lan nan deklarasyon kondisyonèl hardcoded, men yo pral lokalize nan dosye script ekstèn, se sa ki, yo ka chanje san yo pa recompiling tout pwogram nan. Ou ka souvan edite fichye script la pandan jeu pou byen vit teste diferan reyaksyon AI.

Repons evènman

Egzanp ki anwo yo pafè pou Pong. Yo kontinyèlman kouri sik la Sans / Panse / Aji ak aji ki baze sou dènye eta a nan mond lan. Men, nan jwèt ki pi konplèks ou bezwen reyaji nan evènman endividyèl, epi yo pa evalye tout bagay nan yon fwa. Pong nan ka sa a se deja yon move egzanp. Ann chwazi yon lòt.

Imajine yon tirè kote lènmi yo san mouvman jiskaske yo detekte jwè a, apre sa yo aji depann sou "espesyalizasyon" yo: yon moun pral kouri nan "prese", yon moun pral atake byen lwen. Li toujou yon sistèm reyaktif debaz - "si yon jwè takte, fè yon bagay" - men li ka lojikman divize an yon evènman Player Seen ak yon reyaksyon (chwazi yon repons epi egzekite li).

Sa fè nou tounen nan sik la Sans / Panse / Aji. Nou ka kode yon pati sans ki pral tcheke chak ankadreman si wi ou non AI a wè jwè a. Si ou pa, pa gen anyen k ap pase, men si li wè, Lè sa a, evènman an Player Seen kreye. Kòd la pral gen yon seksyon separe ki di "lè evènman Player Seen an rive, fè" kote repons ou bezwen pou adrese pati Panse ak Aji. Se konsa, ou pral mete reyaksyon nan evènman an Player Seen: pou karaktè "brise" - ChargeAndAttack, ak pou tirè pwofesyonèl la - HideAndSnipe. Relasyon sa yo ka kreye nan dosye done a pou koreksyon rapid san yo pa bezwen rekonpile. Ou ka itilize langaj scripting isit la tou.

Pran desizyon difisil

Malgre ke sistèm reyaksyon senp yo trè pwisan, gen anpil sitiyasyon kote yo pa ase. Pafwa ou bezwen pran desizyon diferan selon sa ajan an ap fè kounye a, men li difisil pou imajine sa a kòm yon kondisyon. Pafwa gen twòp kondisyon pou reprezante yo efektivman nan yon pyebwa desizyon oswa yon script. Pafwa ou bezwen evalye davans ki jan sitiyasyon an pral chanje anvan ou deside sou pwochen etap la. Yo bezwen apwòch plis sofistike pou rezoud pwoblèm sa yo.

Machin eta fini

Machin eta fini oswa FSM (machin eta fini) se yon fason pou di ke ajan nou an se kounye a nan youn nan plizyè eta posib, e ke li ka tranzisyon soti nan yon eta nan yon lòt. Gen yon sèten kantite eta sa yo-kon sa non an. Pi bon egzanp nan lavi a se yon limyè trafik. Gen diferan sekans limyè nan diferan kote, men prensip la se menm bagay la - chak eta reprezante yon bagay (sispann, mache, elatriye). Yon limyè trafik nan yon sèl eta a nenpòt ki lè, epi li deplase soti nan youn nan yon lòt ki baze sou règ senp.

Li se yon istwa ki sanble ak NPCs nan jwèt. Pou egzanp, ann pran yon gad ak eta sa yo:

  • Patwouy.
  • Atake.
  • Kouri.

Ak kondisyon sa yo pou chanje eta li yo:

  • Si gad la wè lènmi an, li atake.
  • Si gad la atake men li pa wè lènmi an ankò, li retounen nan patwouy.
  • Si yon gad atake men li blese grav, li kouri ale.

Ou ka ekri tou si-deklarasyon ak yon varyab eta gadyen ak chèk divès kalite: èske gen yon lènmi ki tou pre, ki nivo sante nan NPC a, elatriye Ann ajoute kèk lòt eta:

  • Ochomaj - ant patwouy.
  • Chèche - lè lènmi an remake te disparèt.
  • Jwenn èd - lè yon lènmi takte, men li twò fò pou goumen pou kont li.

Chwa a pou chak nan yo limite - pou egzanp, gad palè a pa pral chèche yon lènmi kache si li gen sante ki ba.

Apre yo tout, gen yon lis gwo "si" , Sa "ka vin twò ankonbran, kidonk nou bezwen fòmalize yon metòd ki pèmèt nou kenbe eta ak tranzisyon ant eta yo nan tèt ou. Pou fè sa, nou pran an kont tout eta yo, epi anba chak eta nou ekri nan yon lis tout tranzisyon yo nan lòt eta yo, ansanm ak kondisyon ki nesesè pou yo.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Sa a se yon tablo tranzisyon eta - yon fason konplè pou reprezante FSM. Ann trase yon dyagram epi jwenn yon apèsi konplè sou fason konpòtman NPC chanje.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Dyagram nan reflete sans nan pran desizyon pou ajan sa a ki baze sou sitiyasyon aktyèl la. Anplis, chak flèch montre yon tranzisyon ant eta si kondisyon akote li a se vre.

Chak aktyalizasyon nou tcheke eta aktyèl ajan an, gade nan lis tranzisyon yo, epi si kondisyon yo pou tranzisyon an satisfè, li aksepte nouvo eta a. Pou egzanp, chak ankadreman tcheke si revèy 10-dezyèm lan te ekspire, epi si se konsa, Lè sa a, gad la ale nan eta a Idling nan Patwouy. Nan menm fason an, eta a atake tcheke sante ajan an - si li ba, Lè sa a, li ale nan eta a ki sove.

Sa a se manyen tranzisyon ant eta yo, men sa ki sou konpòtman ki asosye ak eta yo tèt yo? An tèm de egzekite konpòtman aktyèl la pou yon eta an patikilye, anjeneral gen de kalite "kwòk" kote nou bay aksyon FSM la:

  • Aksyon ke nou fè detanzantan pou eta aktyèl la.
  • Aksyon sa yo nou pran lè tranzisyon soti nan yon eta nan yon lòt.

Egzanp pou premye kalite a. Eta Patwouy la pral deplase ajan an sou wout patwouy la chak ankadreman. Eta Atak la pral eseye kòmanse yon atak chak ankadreman oswa tranzisyon nan yon eta kote sa a posib.

Pou dezyèm kalite a, konsidere tranzisyon an "si lènmi an vizib ak lènmi an twò fò, Lè sa a, ale nan eta a Jwenn èd. Ajan an dwe chwazi ki kote pou l ale pou jwenn èd epi konsève enfòmasyon sa yo pou eta jwenn Èd la konnen ki kote pou l ale. Yon fwa yo jwenn èd, ajan an tounen nan eta atak la. Nan pwen sa a, li pral vle di alye a sou menas la, kidonk aksyon NotifyFriendOfThreat ka rive.

Yon fwa ankò, nou ka gade nan sistèm sa a atravè lantiy sik la Sans / Panse / Aji. Sans se incorporée nan done yo itilize pa lojik tranzisyon an. Panse - tranzisyon ki disponib nan chak eta. Ak lwa fèt pa aksyon ki fèt detanzantan nan yon eta oswa nan tranzisyon ant eta yo.

Pafwa kontinyèlman biwo vòt kondisyon tranzisyon yo ka koute chè. Pou egzanp, si chak ajan fè kalkil konplèks chak ankadreman pou detèmine si li ka wè lènmi ak konprann si li ka tranzisyon soti nan eta Patwouy nan atake, sa pral pran anpil tan CPU.

Chanjman enpòtan nan eta a nan mond lan ka konsidere kòm evènman ki pral trete jan yo rive. Olye ke FSM tcheke kondisyon tranzisyon an "èske ajan mwen an ka wè jwè a chak ankadreman, yo ka konfigirasyon yon sistèm separe pou tcheke mwens souvan (egzanp 5 fwa pa segonn?"). Ak rezilta a se bay Player Seen lè chèk la pase.

Sa a se pase nan FSM a, ki ta dwe kounye a ale nan evènman an Player Seen resevwa kondisyon epi reponn kòmsadwa. Konpòtman an ki kapab lakòz se menm bagay la eksepte pou yon reta prèske insansibl anvan reponn. Men, pèfòmans yo te amelyore kòm yon rezilta nan separe pati nan sans nan yon pati apa nan pwogram nan.

Machin eta yerarchize fini

Sepandan, travay ak gwo FSM pa toujou pratik. Si nou vle elaji eta atak la separe MeleeAttacking ak RangedAttacking, nou pral oblije chanje tranzisyon yo soti nan tout lòt eta ki mennen nan eta a atake (aktyèl ak fiti).

Ou pwobableman remake ke nan egzanp nou an gen yon anpil nan tranzisyon kopi. Pifò tranzisyon nan eta Idling yo idantik ak tranzisyon nan eta Patroling la. Li ta bon pou nou pa repete tèt nou, sitou si nou ajoute plis eta menm jan an. Li fè sans pou gwoupe Idling ak Patrolling anba etikèt jeneral "ki pa konba", kote gen sèlman yon seri tranzisyon komen pou konbat eta yo. Si nou panse sou etikèt sa a kòm yon eta, Lè sa a, Idling ak Patrolling vin sou-eta. Yon egzanp itilize yon tab tranzisyon separe pou yon nouvo sou-eta ki pa konba:

Eta prensipal yo:
Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Deyò sitiyasyon konba:
Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Ak nan fòm dyagram:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Se menm sistèm lan, men ak yon nouvo eta ki pa konba ki gen ladann Idling ak Patrolling. Avèk chak eta ki gen yon FSM ak sou-eta (ak sou-eta sa yo, nan vire, ki gen pwòp FSM yo - ak sou sa pou tout tan ou bezwen), nou jwenn yon Hierarchical Finite State Machine oswa HFSM (hierarchical finite state machine). Lè nou gwoupe eta ki pa konba a, nou koupe yon pakèt tranzisyon redondants. Nou ka fè menm bagay la pou nenpòt nouvo eta ki gen tranzisyon komen. Pou egzanp, si nan lavni an nou elaji eta atak la nan eta MeleeAttacking ak MissileAttacking, yo pral sub-eta ki tranzisyon youn ak lòt ki baze sou distans ak ènmi an ak disponiblite minisyon yo. Kòm yon rezilta, konpòtman konplèks ak sub-konpòtman yo ka reprezante ak yon minimòm de tranzisyon kopi.

Konpòtman pye bwa

Avèk HFSM, yo kreye konbinezon konplèks nan yon fason ki senp. Sepandan, gen yon ti difikilte pou pran desizyon nan fòm règ tranzisyon an se pre relasyon ak eta aktyèl la. Ak nan anpil jwèt sa a se egzakteman sa ki nesesè. Ak anpil atansyon itilizasyon yerachi eta a ka diminye kantite repetisyon tranzisyon an. Men pafwa ou bezwen règ ki travay kèlkeswa eta ou ye a, oswa ki aplike nan prèske nenpòt eta. Pou egzanp, si sante yon ajan desann nan 25%, ou pral vle l 'kouri lwen kèlkeswa si li te nan konba, san fè anyen konsa, oswa pale - ou pral oblije ajoute kondisyon sa a nan chak eta. Men, si designer ou pita vle chanje papòt sante ki ba soti nan 25% a 10%, Lè sa a, sa a pral gen yo dwe fè ankò.

Idealman, sitiyasyon sa a mande pou yon sistèm nan ki desizyon sou "ki eta yo dwe nan" yo deyò eta yo tèt yo, yo nan lòd yo fè chanjman sèlman nan yon sèl kote epi yo pa manyen kondisyon yo tranzisyon. Pye bwa konpòtman parèt isit la.

Gen plizyè fason pou aplike yo, men esans lan se apeprè menm bagay la pou tout moun epi li sanble ak yon pye bwa desizyon: algorithm la kòmanse ak yon ne "rasin", ak pye bwa a gen nœuds ki reprezante swa desizyon oswa aksyon. Men, gen kèk diferans kle:

  • Nœuds kounye a retounen youn nan twa valè: Siksè (si travay la fini), Echwe (si li pa ka kòmanse), oswa Kouri (si li toujou ap kouri epi pa gen okenn rezilta final).
  • Pa gen plis desizyon nœuds pou chwazi ant de altènativ. Olye de sa, yo se nœuds Decorator, ki gen yon nœud pitit. Si yo reyisi, yo egzekite nœud sèl pitit yo.
  • Nœuds ki fè aksyon yo retounen yon valè Running pou reprezante aksyon yo ap fè yo.

Sa a ti seri nœuds ka konbine pou kreye yon gwo kantite konpòtman konplèks. Ann imajine gad HFSM nan egzanp anvan an kòm yon pye bwa konpòtman:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Avèk estrikti sa a pa ta dwe gen okenn tranzisyon evidan soti nan eta Idling / Patwouy pou atake oswa nenpòt lòt eta. Si yon lènmi vizib epi sante pèsonaj la ba, egzekisyon an ap sispann nan nœud ki sove a, kèlkeswa ki nœud li te egzekite anvan - Patwouy, Idling, Atak, oswa nenpòt lòt.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Pye bwa konpòtman yo konplèks—gen plizyè fason pou konpoze yo, epi jwenn bon konbinezon dekoratè ak nœuds konpoze ka difisil. Genyen tou kesyon sou konbyen fwa yo tcheke pye bwa a - èske nou vle ale nan chak pati nan li oswa sèlman lè youn nan kondisyon yo te chanje? Ki jan nou estoke eta ki gen rapò ak nœuds - ki jan nou konnen lè nou te Idling pou 10 segonn, oswa ki jan nou konnen ki nœuds te egzekite dènye fwa pou nou ka trete sekans lan kòrèkteman?

Se poutèt sa gen anpil aplikasyon. Pou egzanp, kèk sistèm te ranplase nœuds dekoratè ak dekoratè inline. Yo re-evalye pye bwa a lè kondisyon dekoratè chanje, ede rantre nan nœuds, epi bay mizajou peryodik.

Sistèm sèvis piblik ki baze sou

Gen kèk jwèt ki gen anpil mekanik diferan. Li se dezirab ke yo resevwa tout benefis ki genyen nan règ tranzisyon senp ak jeneral, men se pa nesesèman nan fòm lan nan yon pye bwa konplè nan konpòtman. Olye pou w gen yon seri chwa ki klè oswa yon pye bwa aksyon posib, li pi fasil pou egzamine tout aksyon yo epi chwazi youn ki pi apwopriye nan moman sa a.

Sistèm ki baze sou sèvis piblik la pral ede jis sa a. Sa a se yon sistèm kote ajan an gen yon varyete aksyon epi li chwazi kiyès pou fè dapre sèvis piblik relatif chak. Ki kote sèvis piblik se yon mezi abitrè ki enpòtan oswa dezirab pou ajan an fè aksyon sa a.

Itilite a kalkile nan yon aksyon ki baze sou eta aktyèl la ak anviwònman an, ajan an ka tcheke epi chwazi lòt eta ki pi apwopriye a nenpòt ki lè. Sa a se menm jan ak FSM, eksepte kote tranzisyon yo detèmine pa yon estimasyon pou chak eta potansyèl, enkli youn aktyèl la. Tanpri sonje ke nou chwazi aksyon ki pi itil pou nou avanse (oswa rete si nou te deja fini l). Pou plis varyete, sa a ta ka yon seleksyon balanse men o aza nan yon ti lis.

Sistèm nan bay yon seri abitrè valè sèvis piblik—pa egzanp, soti nan 0 (konplètman endezirab) a 100 (konplètman dezirab). Chak aksyon gen yon kantite paramèt ki afekte kalkil valè sa a. Retounen nan egzanp gadyen nou an:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Tranzisyon ant aksyon yo anbigwi—nenpòt eta ka swiv nenpòt lòt. Yo jwenn priyorite aksyon nan valè sèvis piblik yo retounen. Si yon lènmi vizib, epi lènmi sa a fò, epi sante karaktè a ba, Lè sa a, tou de Fleeing ak FindingHelp ap retounen gwo valè ki pa zewo. Nan ka sa a, FindingHelp ap toujou pi wo. Menm jan an tou, aktivite ki pa konba pa janm retounen plis pase 50, kidonk yo ap toujou pi ba pase sa yo konba. Ou bezwen pran sa a an kont lè w ap kreye aksyon ak kalkile sèvis piblik yo.

Nan egzanp nou an, aksyon yo retounen swa yon valè konstan fiks oswa youn nan de valè fiks. Yon sistèm ki pi reyalis ta retounen yon estimasyon nan yon seri kontinyèl valè. Pou egzanp, aksyon ki sove a retounen pi gwo valè sèvis piblik si sante ajan an ba, ak aksyon atak la retounen pi ba valè sèvis piblik si lènmi an twò fò. Poutèt sa, aksyon an kouri pran priyorite sou atake nan nenpòt sitiyasyon kote ajan an santi ke li pa gen ase sante pou defèt lènmi an. Sa pèmèt aksyon yo dwe priyorite dapre nenpòt kantite kritè, ki fè apwòch sa a pi fleksib ak varyab pase yon pye bwa konpòtman oswa FSM.

Chak aksyon gen anpil kondisyon pou kalkil pwogram. Yo ka ekri nan langaj scripting oswa kòm yon seri fòmil matematik. Sims yo, ki similye woutin chak jou yon karaktè, ajoute yon kouch adisyonèl nan kalkil - ajan an resevwa yon seri "motivasyon" ki enfliyanse evalyasyon sèvis piblik. Si yon karaktè grangou, yo pral vin menm pi grangou apre yon sèten tan, ak valè sèvis piblik aksyon EatFood la ap ogmante jiskaske karaktè a fè li, diminye nivo grangou a epi retounen valè EatFood a zewo.

Lide a nan chwazi aksyon ki baze sou yon sistèm evalyasyon se byen senp, kidonk yon sistèm sèvis piblik ka itilize kòm yon pati nan pwosesis pou pran desizyon AI, olye ke kòm yon ranplasman konplè pou yo. Pyebwa desizyon an ka mande pou yon evalyasyon sèvis piblik de nœuds timoun epi chwazi youn ki pi wo a. Menm jan an tou, yon pye bwa konpòtman ka gen yon nod itilite konpoze pou evalye itilite aksyon yo pou deside ki timoun pou egzekite.

Mouvman ak navigasyon

Nan egzanp anvan yo, nou te gen yon platfòm ke nou deplase agoch ​​oswa dwa, ak yon gad ki patwouy oswa atake. Men, ki jan egzakteman nou okipe mouvman ajan sou yon peryòd de tan? Ki jan nou fikse vitès, ki jan nou evite obstak, ak ki jan nou planifye yon wout lè rive nan yon destinasyon pi difisil pase jis deplase nan yon liy dwat? Ann gade sa.

Управление

Nan premye etap la, nou pral asime ke chak ajan gen yon valè vitès, ki gen ladan konbyen vit li ap deplase ak nan ki direksyon. Li ka mezire an mèt pa segonn, kilomèt pou chak èdtan, piksèl pou chak segonn, elatriye. Raple bouk Sans / Panse / Aji, nou ka imajine ke pati nan Panse chwazi yon vitès, ak pati nan Lwa aplike vitès sa a nan ajan an. Tipikman jwèt yo gen yon sistèm fizik ki fè travay sa a pou ou, aprann valè vitès chak objè ak ajiste li. Se poutèt sa, ou ka kite AI a ak yon sèl travay - deside ki vitès ajan an ta dwe genyen. Si ou konnen ki kote ajan an ta dwe ye, Lè sa a, ou bezwen deplase li nan bon direksyon an nan yon vitès fikse. Yon ekwasyon trè trivial:

souhait_travel = pozisyon_destinasyon – pozisyon_agent

Imajine yon mond 2D. Ajan an se nan pwen (-2,-2), destinasyon an se yon kote nan nòdès nan pwen (30, 20), ak chemen ki nesesè pou ajan an rive la se (32, 22). Ann di pozisyon sa yo mezire an mèt - si nou pran vitès ajan an 5 mèt pa segonn, Lè sa a, nou pral echèl vektè deplasman nou an epi jwenn yon vitès apeprè (4.12, 2.83). Avèk paramèt sa yo, ajan an ta rive nan destinasyon li nan prèske 8 segonn.

Ou ka rekalkile valè yo nenpòt ki lè. Si ajan an te mwatye nan sib la, mouvman an ta dwe mwatye longè a, men depi vitès maksimòm ajan an se 5 m/s (nou deside sa a pi wo a), vitès la pral menm. Sa ap travay tou pou sib k ap deplase, sa ki pèmèt ajan an fè ti chanjman pandan y ap deplase.

Men, nou vle plis varyasyon - pou egzanp, tou dousman ogmante vitès la simulation yon karaktè k ap deplase soti nan kanpe nan kouri. Menm bagay la tou ka fè nan fen anvan yo sispann. Karakteristik sa yo ke yo rekonèt kòm konpòtman volan, yo chak gen non espesifik: Chèche, Kouri, Arive, elatriye Lide a se ke fòs akselerasyon yo ka aplike nan vitès ajan an, ki baze sou konpare pozisyon ajan an ak vitès aktyèl la ak destinasyon an nan. lòd yo sèvi ak diferan metòd pou deplase nan objektif la.

Chak konpòtman gen yon objektif yon ti kras diferan. Chèche ak Arive se fason pou deplase yon ajan nan yon destinasyon. Evite Obstak ak Separasyon ajiste mouvman ajan an pou evite obstak sou wout la nan objektif la. Aliyman ak Jwenti kenbe ajan yo deplase ansanm. Nenpòt kantite diferan konpòtman volan yo ka adisyone pou pwodui yon sèl vektè chemen pran tout faktè an kont. Yon ajan ki sèvi ak konpòtman Arive, Separasyon, ak Evite Obstak pou rete lwen mi yo ak lòt ajan. Apwòch sa a travay byen nan kote ouvè san detay nesesè.

Nan kondisyon ki pi difisil, adisyon diferan konpòtman travay pi mal - pou egzanp, yon ajan ka bloke nan yon miray akòz yon konfli ant Arive ak Evite Obstak. Se poutèt sa, ou bezwen konsidere opsyon ki pi konplèks pase tou senpleman ajoute tout valè yo. Fason an se sa a: olye pou yo ajoute rezilta yo nan chak konpòtman, ou ka konsidere mouvman nan diferan direksyon epi chwazi opsyon ki pi bon.

Sepandan, nan yon anviwonman konplèks ki gen depas ak chwa sou ki wout pou nou ale, nou pral bezwen yon bagay ki pi avanse.

Jwenn yon fason

Konpòtman volan yo bon pou mouvman senp nan yon zòn ouvè (teren foutbòl oswa tèren) kote ale soti nan A rive nan B se yon chemen dwat ak sèlman detou minè alantou obstak. Pou wout konplèks, nou bezwen pathfinding, ki se yon fason pou eksplore mond lan ak deside sou yon wout atravè li.

Pi senp la se aplike yon gri nan chak kare akote ajan an epi evalye kilès nan yo gen dwa deplase. Si youn nan yo se yon destinasyon, Lè sa a, swiv wout la soti nan chak kare nan youn anvan an jiskaske ou rive nan kòmansman an. Sa a se wout la. Sinon, repete pwosesis la ak lòt kare ki tou pre jiskaske ou jwenn destinasyon ou oswa ou kouri soti nan kare (sa vle di pa gen okenn wout posib). Sa a se fòmèlman ke yo rekonèt kòm Breadth-First Search oswa BFS (algorithm rechèch lajè-premye). Nan chak etap li gade nan tout direksyon (kidonk lajè, "lajè"). Espas rechèch la se tankou yon vag ki deplase jiskaske li rive nan kote ou vle a - espas rechèch la elaji nan chak etap jiskaske pwen final la enkli, apre sa li ka trase tounen nan kòmansman an.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Kòm yon rezilta, ou pral resevwa yon lis kare sou ki wout la vle konpile. Sa a se chemen an (kidonk, pathfinding) - yon lis kote ajan an pral vizite pandan y ap swiv destinasyon an.

Etandone ke nou konnen pozisyon nan chak kare nan mond lan, nou ka itilize konpòtman volan yo deplase sou chemen an - soti nan ne 1 nan ne 2, Lè sa a, soti nan ne 2 a ne 3, ak sou sa. Opsyon ki pi senp la se nan direksyon sant kare kap vini an, men yon opsyon menm pi bon se sispann nan mitan kwen ant kare aktyèl la ak pwochen an. Poutèt sa, ajan an pral kapab koupe kwen nan vire byen file.

Algorithm BFS la tou gen dezavantaj - li eksplore anpil kare nan "move" direksyon an tankou nan "bon" direksyon an. Sa a se kote yon algorithm pi konplèks ki rele A* (Yon etwal) antre nan jwèt. Li travay menm jan an, men olye pou yo egzamine kare vwazen avèg (Lè sa a, vwazen nan vwazen, Lè sa a, vwazen nan vwazen nan vwazen, ak sou sa), li kolekte nœuds yo nan yon lis ak sòt yo pou ke pwochen ne egzamine a se toujou la. youn ki mennen nan wout ki pi kout la. Nœuds yo klase dapre yon eristik ki pran an kont de bagay—"pri a nan yon wout ipotetik nan kare a vle a (ki gen ladan nenpòt depans vwayaj) ak yon estimasyon nan ki distans kare sa a soti nan destinasyon an (prejije rechèch la nan bon direksyon).

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Egzanp sa a montre ke ajan an eksplore yon kare alafwa, chak fwa chwazi youn nan adjasan ki pi pwomèt la. Chemen ki kapab lakòz se menm jan ak BFS, men yo te konsidere mwens kare nan pwosesis la - ki gen yon gwo enpak sou pèfòmans jwèt la.

Mouvman san yon griy

Men, pifò jwèt yo pa mete deyò sou yon kadriyaj, epi li souvan enposib fè sa san yo pa sakrifye réalisme. Konpwomi yo bezwen. Ki gwosè kare yo ta dwe? Twò gwo epi yo p ap kapab kòrèkteman reprezante ti koridò oswa vire, twò piti epi pral gen twòp kare pou chèche, ki finalman pral pran anpil tan.

Premye bagay yo konprann se ke yon may ba nou yon graf nan nœuds konekte. Algoritm A* ak BFS yo aktyèlman travay sou graf epi yo pa pran swen may nou an ditou. Nou ta ka mete nœuds nenpòt kote nan mond lan jwèt: osi lontan ke gen yon koneksyon ant nenpòt de nœuds konekte, osi byen ke ant pwen yo kòmanse ak fen ak omwen youn nan nœuds yo, algorithm la ap travay menm jan ak anvan. Yo rele sa souvan yon sistèm waypoint, paske chak ne reprezante yon pozisyon enpòtan nan mond lan ki ka fè pati nenpòt kantite chemen ipotetik.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan
Egzanp 1: yon ne nan chak kare. Rechèch la kòmanse nan ne kote ajan an sitiye epi li fini nan ne kare a vle.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan
Egzanp 2: Yon seri nœuds ki pi piti (waypoints). Rechèch la kòmanse nan kare ajan an, ale nan kantite nœuds ki nesesè yo, epi li kontinye nan destinasyon an.

Sa a se yon sistèm konplètman fleksib ak pwisan. Men, gen kèk swen ki nesesè nan deside ki kote ak ki jan yo mete yon waypoint, otreman ajan yo ka tou senpleman pa wè pwen ki pi pre a epi yo pa yo pral kapab kòmanse chemen an. Li ta pi fasil si nou ta ka otomatikman mete waypoints ki baze sou jeyometri mond lan.

Sa a se kote may navigasyon an oswa navmesh (may navigasyon) parèt. Sa a se anjeneral yon may 2D nan triyang ki kouvri sou jeyometri a nan mond lan - kèlkeswa kote ajan an gen dwa mache. Chak triyang ki nan may la vin yon nœud nan graf la, epi li gen jiska twa triyang adjasan ki vin nœud adjasan nan graf la.

Foto sa a se yon egzanp nan motè a Inite - li analize jeyometri a nan mond lan ak kreye yon navmesh (nan Ekran an nan ble limyè). Chak poligòn nan yon navmesh se yon zòn kote yon ajan ka kanpe oswa deplase soti nan yon poligòn nan yon lòt poligòn. Nan egzanp sa a, poligòn yo pi piti pase planche yo sou kote yo ye - sa a se fè yo nan lòd yo pran an kont gwosè a nan ajan an, ki pral pwolonje pi lwen pase pozisyon nominal li yo.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Nou ka chèche yon wout atravè may sa a, ankò lè l sèvi avèk algorithm A *. Sa a pral ban nou yon wout prèske pafè nan mond lan, ki pran an kont tout jeyometri a epi li pa mande pou nœuds nesesè ak kreyasyon waypoints.

Pathfinding se yon sijè ki twò laj pou yon seksyon nan yon atik pa ase. Si ou vle etidye li an plis detay, Lè sa a, sa a pral ede Sit entènèt Amit Patel.

Planifikasyon

Nou te aprann ak pathfinding ke pafwa li pa ase jis chwazi yon direksyon ak deplase - nou dwe chwazi yon wout epi fè kèk vire pou rive nan destinasyon nou vle. Nou ka jeneralize lide sa a: reyalize yon objektif se pa sèlman pwochen etap la, men se yon sekans antye kote pafwa ou bezwen gade devan plizyè etap yo chèche konnen ki sa premye a ta dwe. Yo rele sa planifikasyon. Pathfinding ka konsidere kòm youn nan plizyè ekstansyon nan planifikasyon. An tèm de sik Sans/Panse/Aji, sa a se kote pati Panse a planifye plizyè pati Lwa pou lavni.

Ann gade egzanp jwèt tablo Magic: The Gathering. Nou ale premye ak seri kat sa yo nan men nou:

  • Marekaj - Bay 1 mana nwa (kat tè).
  • Forest - bay 1 vèt mana (kat tè).
  • Sòsye Fujitif - Egzije 1 mana ble pou konvoke.
  • Elfish Mystic - Mande pou 1 mana vèt pou konvoke.

Nou inyore twa kat ki rete yo pou rann li pi fasil. Dapre règ yo, yon jwè gen dwa jwe 1 kat tè pou chak vire, li ka "tape" kat sa a pou retire mana nan li, epi answit jete òneman (ki gen ladan konvoke yon bèt) dapre kantite mana. Nan sitiyasyon sa a, jwè imen an konnen jwe Forest, tape 1 mana vèt, ak Lè sa a, rele Elvish Mystic. Men, ki jan jwèt AI a ka konprann sa a?

Planifikasyon fasil

Apwòch trivial la se eseye chak aksyon nan vire jiskaske pa gen okenn apwopriye ki rete. Lè w gade kat yo, AI a wè ki sa marekaj ka jwe. Epi li jwe li. Èske gen nenpòt lòt aksyon ki rete nan vire sa a? Li pa ka konvoke swa Elvish Mystic oswa Fugitive Wizard, paske yo mande mana vèt ak ble respektivman pou konvoke yo, pandan y ap marekaj sèlman bay mana nwa. Apre sa, li p'ap ka jwe Forest ankò, paske li te deja jwe marekaj. Kidonk, jwèt AI a te swiv règ yo, men li te mal. Ka amelyore.

Planifikasyon ka jwenn yon lis aksyon ki pote jwèt la nan eta a vle. Menm jan chak kare sou yon chemen te gen vwazen (nan pathfinding), chak aksyon nan yon plan tou gen vwazen oswa siksesè. Nou ka chèche aksyon sa yo ak aksyon ki vin apre yo jiskaske nou rive nan eta vle a.

Nan egzanp nou an, rezilta a vle se "revoke yon bèt si sa posib." Nan kòmansman an nan vire a, nou wè sèlman de aksyon posib yo pèmèt règ yo nan jwèt la:

1. Jwe marekaj (rezilta: marekaj nan jwèt la)
2. Jwe Forest (rezilta: Forest nan jwèt la)

Chak aksyon yo pran ka mennen nan plis aksyon ak fèmen lòt moun, ankò depann sou règ yo nan jwèt la. Imajine nou te jwe marekaj - sa a pral retire marekaj kòm pwochen etap la (nou te deja jwe li), epi sa a pral retire tou Forest (paske dapre règ yo ou ka jwe yon kat tè pou chak vire). Apre sa, AI a ajoute jwenn 1 mana nwa kòm pwochen etap la paske pa gen okenn lòt opsyon. Si li ale pi devan epi li chwazi Tap marekaj la, li pral resevwa 1 inite mana nwa epi li pa pral kapab fè anyen ak li.

1. Jwe marekaj (rezilta: marekaj nan jwèt la)
1.1 Marekaj "Tap" (rezilta: marekaj "tapped", +1 inite mana nwa)
Pa gen aksyon ki disponib - END
2. Jwe Forest (rezilta: Forest nan jwèt la)

Lis aksyon yo te kout, nou te rive nan yon bout mouri. Nou repete pwosesis la pou pwochen etap la. Nou jwe Forest, louvri aksyon an "jwenn 1 vèt mana", ki an vire pral louvri twazyèm aksyon an - rele Elvish Mystic.

1. Jwe marekaj (rezilta: marekaj nan jwèt la)
1.1 Marekaj "Tap" (rezilta: marekaj "tapped", +1 inite mana nwa)
Pa gen aksyon ki disponib - END
2. Jwe Forest (rezilta: Forest nan jwèt la)
2.1 "Tap" Forest (rezilta: Forest "tapped", +1 inite mana vèt)
2.1.1 Konvoke Elvish Mystic (rezilta: Elvish Mystic nan jwèt, -1 mana vèt)
Pa gen aksyon ki disponib - END

Finalman, nou eksplore tout aksyon posib epi nou jwenn yon plan ki rele yon bèt.

Sa a se yon egzanp trè senplifye. Li rekòmande pou chwazi pi bon plan posib, olye ke sèlman nenpòt plan ki satisfè kèk kritè. An jeneral, li posib pou evalye plan potansyèl yo baze sou rezilta oswa benefis jeneral aplikasyon yo. Ou ka make tèt ou 1 pwen pou jwe yon kat tè ak 3 pwen pou konvoke yon bèt. Jwe marekaj ta dwe yon plan 1 pwen. Ak jwe Forest → Tap Forest la → konvoke Elvish Mystic pral imedyatman bay 4 pwen.

Men ki jan planifikasyon travay nan Magic: The Gathering, men menm lojik la aplike nan lòt sitiyasyon. Pa egzanp, deplase yon pion pou fè plas pou evèk la deplase nan echèk. Oswa pran kouvèti dèyè yon miray san danje tire nan XCOM tankou sa a. An jeneral, ou jwenn lide a.

Planifikasyon amelyore

Pafwa gen twòp aksyon potansyèl yo konsidere tout opsyon posib. Retounen nan egzanp lan ak majik: rasanbleman an: se pou yo di ke nan jwèt la ak nan men ou gen plizyè peyi ak kat bèt - kantite konbinezon posib nan mouvman yo ka nan plizyè douzèn yo. Gen plizyè solisyon pou pwoblèm nan.

Premye metòd la se bak chenn. Olye pou yo eseye tout konbinezon yo, li se pi bon kòmanse ak rezilta final la epi eseye jwenn yon wout dirèk. Olye pou nou ale soti nan rasin pye bwa a nan yon fèy espesifik, nou deplase nan direksyon opoze a - soti nan fèy la nan rasin lan. Metòd sa a pi fasil ak pi vit.

Si lènmi an gen 1 sante, ou ka jwenn "fè 1 oswa plis domaj" plan an. Pou reyalize sa, yo dwe satisfè yon kantite kondisyon:

1. Domaj ka koze pa yon période - li dwe nan men.
2. Pou jete yon eple, ou bezwen mana.
3. Pou jwenn mana, ou bezwen jwe yon kat tè.
4. Pou jwe yon kat tè, ou bezwen gen li nan men ou.

Yon lòt fason se pi bon-premye rechèch. Olye pou nou eseye tout chemen yo, nou chwazi youn ki pi apwopriye. Pi souvan, metòd sa a bay plan an pi bon san depans rechèch nesesè. A* se yon fòm pi bon premye rechèch - lè li egzamine wout ki pi pwomèt depi nan konmansman an, li ka deja jwenn pi bon chemen an san yo pa bezwen tcheke lòt opsyon.

Yon opsyon rechèch enteresan ak de pli zan pli popilè se Monte Carlo Tree Search. Olye pou yo devine ki plan ki pi bon pase lòt lè w ap chwazi chak aksyon ki vin apre, algorithm la chwazi siksesè o aza nan chak etap jiskaske li rive nan fen (lè plan an te lakòz viktwa oswa defèt). Lè sa a, rezilta final la itilize pou ogmante oswa diminye pwa opsyon anvan yo. Lè yo repete pwosesis sa a plizyè fwa nan yon ranje, algorithm la bay yon bon estimasyon sou sa ki pi bon pwochen mouvman an se, menm si sitiyasyon an chanje (si lènmi an pran aksyon pou entèfere ak jwè a).

Pa gen okenn istwa sou planifikasyon nan jwèt yo ta dwe konplè san Planifikasyon Aksyon Oryante Objektif oswa GOAP (planifikasyon aksyon oryante objektif). Sa a se yon metòd lajman itilize ak diskite, men lòt pase kèk detay distenktif, li se esansyèlman metòd la chèn bak nou te pale sou pi bonè. Si objektif la se te "detwi jwè a" epi jwè a se dèyè kouvèti, plan an ta ka: detwi ak yon grenad → jwenn li → jete li.

Anjeneral gen plizyè objektif, yo chak ak priyorite pa yo. Si objektif pi gwo priyorite a pa ka ranpli (pa gen okenn konbinezon de aksyon ki kreye yon plan "touye jwè a" paske jwè a pa vizib), AI a pral retounen nan objektif pi ba priyorite.

Fòmasyon ak adaptasyon

Nou te deja di ke jwèt AI anjeneral pa itilize aprantisaj machin paske li pa apwopriye pou jere ajan an tan reyèl. Men, sa pa vle di ke ou pa ka prete yon bagay nan zòn sa a. Nou vle yon opozan nan yon tirè ke nou ka aprann yon bagay nan. Pou egzanp, jwenn enfòmasyon sou pi bon pozisyon yo sou kat la. Oswa yon opozan nan yon jwèt batay ki ta bloke mouvman Combo jwè a souvan itilize, motive l 'yo sèvi ak lòt moun. Se konsa, aprantisaj machin ka byen itil nan sitiyasyon sa yo.

Estatistik ak Pwobabilite

Anvan nou antre nan egzanp konplèks, ann wè ki jan lwen nou ka ale nan pran kèk mezi senp epi sèvi ak yo pou pran desizyon. Pou egzanp, estrateji an tan reyèl - ki jan nou detèmine si yon jwè ka lanse yon atak nan premye minit yo nan jwèt la ak ki defans yo prepare kont sa a? Nou ka etidye eksperyans pase yon jwè pou konprann ki reyaksyon alavni ta ka. Pou kòmanse, nou pa gen done anvan tout koreksyon sa yo, men nou ka kolekte li - chak fwa AI a jwe kont yon moun, li ka anrejistre tan an nan premye atak la. Apre kèk sesyon, nou pral jwenn yon mwayèn de tan li pral pran pou jwè a atake nan tan kap vini an.

Genyen tou yon pwoblèm ak valè mwayèn: si yon jwè kouri 20 fwa epi li jwe tou dousman 20 fwa, Lè sa a, valè yo mande yo pral yon kote nan mitan an, e sa pa pral ba nou anyen ki itil. Yon solisyon se limite done yo opinyon - dènye 20 moso yo ka pran an kont.

Yo itilize yon apwòch menm jan an lè w estime chans pou sèten aksyon lè w sipoze ke preferans sot pase jwè a pral menm jan an nan lavni. Si yon jwè atake nou senk fwa ak fireball, de fwa ak zèklè, ak yon fwa ak mele, li evidan ke li prefere fireball. Ann extrapoler epi wè pwobabilite pou sèvi ak diferan zam: boul dife = 62,5%, zèklè = 25% ak mele = 12,5%. AI jwèt nou an bezwen prepare pou pwoteje tèt li kont dife.

Yon lòt metòd enteresan se sèvi ak Naive Bayes Classifier pou etidye gwo kantite done opinyon ak klasifye sitiyasyon an pou AI a reyaji nan fason ou vle a. Bayesian klasifikasyon yo pi byen li te ye pou itilize yo nan filtè spam imel. Se la yo egzamine mo yo, konpare yo ak kote mo sa yo te parèt anvan (nan spam oswa ou pa), epi tire konklizyon sou imèl k ap vini yo. Nou ka fè menm bagay la menm ak mwens antre. Baze sou tout enfòmasyon itil ke AI a wè (tankou ki inite lènmi yo kreye, oswa ki òneman yo itilize, oswa ki teknoloji yo fè rechèch), ak rezilta final la (lagè oswa lapè, prese oswa defann, elatriye) - nou pral chwazi konpòtman AI vle.

Tout metòd fòmasyon sa yo ase, men li rekòmande pou itilize yo ki baze sou done tès yo. AI a pral aprann adapte yo ak diferan estrateji jwè ou yo te itilize. AI ki adapte ak jwè a apre yo fin lage ka vin twò previzib oswa twò difisil pou defèt.

Adaptasyon ki baze sou valè

Bay kontni an nan mond jwèt nou an ak règ yo, nou ka chanje seri a nan valè ki enfliyanse pran desizyon, olye ke tou senpleman itilize done yo antre. Nou fè sa:

  • Kite AI a kolekte done sou eta a nan mond lan ak evènman kle pandan jwèt la (tankou pi wo a).
  • Ann chanje kèk valè enpòtan ki baze sou done sa yo.
  • Nou aplike desizyon nou yo ki baze sou pwosesis oswa evalye valè sa yo.

Pou egzanp, yon ajan gen plizyè chanm yo chwazi nan yon kat jeyografik tirè premye moun. Chak chanm gen valè pwòp li yo, ki detèmine ki jan dezirab li se vizite. AI a chwazi owaza ki chanm pou ale nan selon valè a. Lè sa a, ajan an sonje nan ki chanm li te touye epi li diminye valè li (pwobabilite ke li pral retounen la). Menm jan an tou pou sitiyasyon an ranvèse - si ajan an detwi anpil opozan, Lè sa a, valè a nan sal la ogmante.

Modèl Markov

E si nou te itilize done yo kolekte pou fè prediksyon? Si nou sonje chak chanm nou wè jwè a pou yon sèten peryòd tan, nou pral predi nan ki chanm jwè a ta ka ale. Lè nou swiv ak anrejistre mouvman jwè a atravè chanm (valè), nou ka predi yo.

Ann pran twa chanm: wouj, vèt ak ble. Epi tou obsèvasyon yo ke nou anrejistre pandan y ap gade sesyon jwèt la:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Nimewo a nan obsèvasyon nan chak chanm prèske egal - nou toujou pa konnen ki kote yo fè yon bon plas pou yon anbiskad. Kolekte estatistik tou konplike pa respawning nan jwè yo, ki parèt respire nan tout kat la. Men, done yo sou pwochen chanm yo antre apre yo fin parèt sou kat jeyografik la deja itil.

Li ka wè ke chanm vèt la kostim jwè yo - pifò moun deplase soti nan chanm wouj la nan li, 50% nan yo rete la pi lwen. Chanm ble a, okontrè, pa popilè prèske pa gen moun ki ale nan li, epi si yo fè sa, yo pa rete lontan.

Men, done yo di nou yon bagay ki pi enpòtan - lè yon jwè nan yon chanm ble, pwochen chanm nou wè l 'nan pral wouj, pa vèt. Menm si chanm vèt la pi popilè pase chanm wouj la, sitiyasyon an chanje si jwè a nan chanm ble a. Eta kap vini an (sa vle di chanm jwè a pral ale nan) depann de eta anvan an (sa vle di chanm jwè a ye kounye a). Paske nou eksplore depandans, nou pral fè prediksyon pi egzak pase si nou senpleman konte obsèvasyon poukont yo.

Predi yon eta fiti ki baze sou done ki sòti nan yon eta sot pase yo rele yon modèl Markov, ak egzanp sa yo (ak chanm) yo rele chenn Markov. Piske modèl yo reprezante pwobabilite pou chanjman ant eta siksesif yo, yo parèt vizyèlman kòm FSM ak yon pwobabilite alantou chak tranzisyon. Anvan sa, nou te itilize FSM pou reprezante eta konpòtman ke yon ajan te nan, men konsèp sa a pwolonje nan nenpòt eta, kit li asosye ak ajan an oswa ou pa. Nan ka sa a, eta yo reprezante chanm ajan an okipe:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Sa a se yon fason senp pou reprezante pwobabilite relatif la nan chanjman eta a, bay AI a kèk kapasite pou predi pwochen eta a. Ou ka antisipe plizyè etap pi devan.

Si yon jwè nan chanm vèt la, gen 50% chans pou l rete la pwochen fwa yo obsève l. Men, ki chans yo ke li pral toujou la menm apre? Non sèlman gen yon chans ke jwè a rete nan chanm vèt la apre de obsèvasyon, men gen tou yon chans ke li te kite epi retounen. Men nouvo tablo a ki pran an kont nouvo done yo:

Ki jan yo kreye yon AI Gaming: yon gid pou débutan

Li montre ke chans pou yo wè jwè a nan chanm vèt la apre de obsèvasyon yo pral egal a 51% - 21% ke li pral soti nan chanm wouj la, 5% nan yo ke jwè a pral vizite chanm ble a ant yo, ak 25% ke jwè a pa pral kite chanm vèt la.

Tablo a se tou senpleman yon zouti vizyèl - pwosedi a sèlman mande pou miltipliye pwobabilite yo nan chak etap. Sa vle di ou ka gade byen lwen nan tan kap vini an ak yon opozisyon: nou sipoze ke chans pou antre nan yon chanm depann antyèman sou chanm aktyèl la. Yo rele sa a Markov Property - eta a nan lavni depann sèlman sou prezan an. Men, sa a se pa san pousan egzat. Jwè yo ka chanje desizyon depann sou lòt faktè: nivo sante oswa kantite minisyon. Paske nou pa anrejistre valè sa yo, previzyon nou yo pral mwens egzak.

N-gram

Ki sa ki sou egzanp yon jwèt batay ak predi mouvman Combo jwè a? Menm bagay la tou! Men, olye pou yo yon sèl eta oswa evènman, nou pral egzamine sekans yo tout antye ki fòme yon grèv konbo.

Youn nan fason yo fè sa se estoke chak opinyon (tankou Choute, kout pyen oswa blòk) nan yon tanpon epi ekri tanpon an antye kòm yon evènman. Se konsa, jwè a plizyè fwa peze Choute, Choute, Punch pou itilize atak SuperDeathFist la, sistèm AI a estoke tout antre yo nan yon tanpon epi sonje twa dènye yo itilize nan chak etap.

Ki jan yo kreye yon AI Gaming: yon gid pou débutan
(Ly ki an fonse se lè jwè a lanse atak SuperDeathFist la.)

AI a pral wè tout opsyon yo lè jwè a chwazi Choute, ki te swiv pa yon lòt Choute, ak Lè sa a, remake ke pwochen opinyon an se toujou Punch. Sa a pral pèmèt ajan an predi mouvman Combo SuperDeathFist a epi bloke li si sa posib.

Sekans evènman sa yo rele N-gram, kote N se kantite eleman ki estoke. Nan egzanp anvan an se te yon 3-gram (trigram), ki vle di: de premye antre yo te itilize pou predi twazyèm lan. An konsekans, nan yon gram 5, premye kat antre yo predi senkyèm lan ak sou sa.

Designer a bezwen chwazi gwosè N-gram ak anpil atansyon. Yon N ki pi piti mande pou mwens memwa, men tou sere mwens istwa. Pou egzanp, yon 2 gram (bigram) pral anrejistre Choute, Choute oswa Choute, Punch, men li pa pral kapab estoke Choute, Choute, Punch, kidonk AI a pa pral reponn a Combo SuperDeathFist la.

Nan lòt men an, pi gwo nimewo mande pou plis memwa ak AI a pral pi difisil pou antrene paske pral gen anpil plis opsyon posib. Si ou te gen twa antre posib nan Choute, kout pyen oswa blòk, epi nou te itilize yon gram 10, sa ta dwe apeprè 60 mil opsyon diferan.

Modèl bigram la se yon senp chèn Markov - chak pè eta sot pase a / eta aktyèl la se yon bigram, epi ou ka predi dezyèm eta a ki baze sou premye a. 3-gram yo ak pi gwo N-gram yo ka konsidere tou kòm chenn Markov, kote tout eleman (eksepte dènye a nan N-gram) ansanm fòme premye eta a ak dènye eleman nan dezyèm lan. Egzanp jwèt batay la montre chans pou tranzisyon soti nan eta Choute ak kout pye pou ale nan eta Choute ak kout pyen. Lè nou trete plizyè antre istwa opinyon kòm yon sèl inite, nou esansyèlman transfòme sekans opinyon an nan yon pati nan tout eta a. Sa a ban nou pwopriyete a Markov, ki pèmèt nou sèvi ak chenn Markov pou predi pwochen opinyon an epi devine ki mouvman konbo pral pwochen.

Konklizyon

Nou te pale sou zouti ak apwòch ki pi komen nan devlopman entèlijans atifisyèl. Nou te gade tou sitiyasyon kote yo bezwen sèvi ak kote yo itil espesyalman.

Sa a ta dwe ase yo konprann Basics yo nan jwèt AI. Men, nan kou, sa yo se pa tout metòd. Mwens popilè, men pa mwens efikas enkli:

  • algoritm optimize ki gen ladan grenpe mòn, desandan gradyan ak algoritm jenetik
  • algoritm rechèch / orè orè (minimax ak alpha-beta koupe)
  • metòd klasifikasyon (perceptrons, rezo neral ak machin vektè sipò)
  • sistèm pou trete pèsepsyon ajan yo ak memwa
  • apwòch achitekti pou AI (sistèm ibrid, achitekti sou-ansanm ak lòt fason pou kouvri sistèm AI)
  • zouti animasyon (planifikasyon ak kowòdinasyon mouvman)
  • faktè pèfòmans (nivo detay, nenpòt ki lè, ak algorithm timeslicing)

Resous sou entènèt sou sijè a:

1. GameDev.net gen seksyon ak atik ak leson patikilye sou AIAk форум.
2. AiGameDev.com gen anpil prezantasyon ak atik sou yon pakèt sijè ki gen rapò ak devlopman AI jwèt.
3. GDC vout la gen ladan sijè ki soti nan GDC AI Summit, anpil ladan yo ki disponib gratis.
4. Ou ka jwenn materyèl itil tou sou sit entènèt la AI jwèt Programmers Guild.
5. Tommy Thompson, chèchè AI ak devlopè jwèt, fè videyo sou YouTube AI ak jwèt ak yon eksplikasyon ak etid sou AI nan jwèt komèsyal yo.

Liv sou sijè a:

1. Seri liv Game AI Pro a se yon koleksyon atik kout ki eksplike kijan pou aplike karakteristik espesifik oswa kijan pou rezoud pwoblèm espesifik.

Jwèt AI Pro: Kolekte Sajès nan Pwofesyonèl AI jwèt
Jwèt AI Pro 2: Kolekte Sajès nan jwèt AI Pwofesyonèl
Jwèt AI Pro 3: Kolekte Sajès nan jwèt AI Pwofesyonèl

2. AI Game Programming Wisdom seri se predesesè seri Game AI Pro. Li gen metòd ki pi gran, men prèske tout yo enpòtan menm jodi a.

AI jwèt Programming Wisdom 1
AI jwèt Programming Wisdom 2
AI jwèt Programming Wisdom 3
AI jwèt Programming Wisdom 4

3. Entèlijans atifisyèl: yon apwòch modèn se youn nan tèks debaz yo pou tout moun ki vle konprann jaden an jeneral nan entèlijans atifisyèl. Sa a se pa yon liv sou devlopman jwèt - li anseye Basics yo nan AI.

Sous: www.habr.com

Achte hosting serye pou sit ki gen pwoteksyon DDoS, sèvè VPS VDS 🔥 Achte yon hébergement sit entènèt serye ak pwoteksyon DDoS, sèvè VPS VDS | ProHoster