Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ман якчанд маводи ҷолибро дар бораи зеҳни сунъӣ дар бозиҳо пайдо кардам. Бо шарҳи чизҳои асосӣ дар бораи AI бо истифода аз мисолҳои оддӣ ва дар дохили он асбобҳо ва усулҳои муфид барои таҳия ва тарҳрезии қулайи он мавҷуданд. Чӣ тавр, дар куҷо ва кай истифода бурдани онҳо низ вуҷуд дорад.

Аксари мисолҳо бо псевдокод навишта шудаанд, аз ин рӯ дониши пешрафтаи барномасозӣ талаб карда намешавад. Дар зери буриш 35 варақи матн бо тасвирҳо ва gifҳо мавҷуд аст, аз ин рӯ омода шавед.

UPD. Узр мехоҳам, аммо ман аллакай тарҷумаи шахсии ин мақоларо дар Ҳабре анҷом додаам PatientZero. Шумо метавонед версияи ӯро хонед дар ин ҷо, аммо барои баъзе сабабҳо мақола аз ман гузашт (ман ҷустуҷӯро истифода кардам, аммо чизе нодуруст рафт). Ва азбаски ман дар блоги бахшида ба таҳияи бозӣ менависам, ман қарор додам, ки версияи тарҷумаи худро барои муштариён гузорам (баъзе нуқтаҳо ба таври дигар формат карда шудаанд, баъзеҳо дидаю дониста бо маслиҳати таҳиягарон партофта шудаанд).

AI чист?

Бозии AI ба он нигаронида шудааст, ки объект вобаста ба шароите, ки дар он ҷойгир аст, бояд кадом амалҳоро иҷро кунад. Ин одатан ҳамчун идоракунии "агенти соҳибақл" номида мешавад, ки дар он агент хусусияти бозигар, мошин, бот ё баъзан чизи абстракттар аст: тамоми гурӯҳи субъектҳо ё ҳатто тамаддун. Дар ҳар маврид он чизест, ки бояд муҳити худро бубинад, дар асоси он қарор қабул кунад ва мувофиқи он амал кунад. Ин давраи Ҳис кардан/Фикр кардан/Амал кардан номида мешавад:

  • Ҳис: Агент маълумотро дар бораи чизҳое дар муҳити худ, ки метавонанд ба рафтори ӯ таъсир расонанд, пайдо мекунад ё мегирад (таҳдидҳои наздик, ашё барои ҷамъоварӣ, ҷойҳои ҷолиб барои омӯхтан).
  • Фикр кунед: Агент қарор қабул мекунад, ки чӣ гуна вокуниш нишон диҳад (баррасӣ мекунад, ки оё он барои ҷамъоварии ашё кофӣ бехатар аст ё оё ӯ бояд аввал мубориза барад/пинҳон кунад).
  • Амал: агент барои иҷрои қарори қаблӣ амалҳоро анҷом медиҳад (ба сӯи душман ё объект ҳаракат мекунад).
  • ...хозир вазъият аз рУи амалиёти персонажхо тагьир ёфтааст, бинобар ин давра бо маълумоти нав такрор мешавад.

AI майл дорад, ки ба қисми Sense-и ҳалқа тамаркуз кунад. Масалан, мошинҳои автономӣ роҳро акс мегиранд, онҳоро бо маълумотҳои радарӣ ва лидарӣ муттаҳид мекунанд ва онҳоро шарҳ медиҳанд. Ин одатан тавассути омӯзиши мошинсозӣ анҷом дода мешавад, ки маълумоти воридшударо коркард мекунад ва ба он маъно медиҳад ва иттилооти семантикиро ба мисли "мошини дигар дар масофаи 20 ярд дар пеш аст." Инҳо мушкилоти ба ном гурӯҳбандӣ мебошанд.

Бозиҳо барои истихроҷи иттилоот ба системаи мураккаб ниёз надоранд, зеро аксари маълумот аллакай як қисми ҷудонашавандаи он мебошанд. Барои муайян кардани он ки оё душман дар пеш аст ё не, барои иҷро кардани алгоритмҳои шинохти тасвир лозим нест - бозӣ аллакай медонад ва иттилоотро мустақиман ба раванди қабули қарорҳо медиҳад. Аз ин рӯ, қисми ҳисси давра одатан нисбат ба қисми «Фикр ва амал» хеле соддатар аст.

Маҳдудиятҳои Game AI

AI як қатор маҳдудиятҳо дорад, ки бояд риоя шаванд:

  • AI лозим нест, ки пешакӣ омӯзонида шавад, гӯё он як алгоритми омӯзиши мошин бошад. Ҳангоми таҳия навиштани шабакаи нейронӣ барои назорат кардани даҳҳо ҳазор бозигарон ва омӯхтани роҳи беҳтарини бозӣ бар зидди онҳо маъно надорад. Чаро? Чунки бозӣ нашр нашудааст ва бозигарон вуҷуд надоранд.
  • Бозӣ бояд шавқовар ва душвор бошад, бинобар ин агентҳо набояд бар зидди одамон беҳтарин равишро пайдо кунанд.
  • Агентҳо бояд воқеӣ бошанд, то бозигарон эҳсос кунанд, ки онҳо бар зидди одамони воқеӣ бозӣ мекунанд. Барномаи AlphaGo аз одамон бартарӣ дошт, аммо қадамҳои интихобшуда аз фаҳмиши анъанавии бозӣ хеле дур буданд. Агар бозӣ як рақиби инсониро тақлид кунад, ин эҳсос набояд вуҷуд дошта бошад. Алгоритмро тағир додан лозим аст, то он қарорҳои қобили қабулро қабул кунад, на қарорҳои идеалӣ.
  • AI бояд дар вақти воқеӣ кор кунад. Ин маънои онро дорад, ки алгоритм наметавонад истифодаи CPU-ро барои муддати тӯлонӣ барои қабули қарор монополист кунад. Ҳатто 10 миллисония хеле дароз аст, зеро аксари бозиҳо барои анҷом додани тамоми коркард ва гузаштан ба чаҳорчӯбаи графикаи навбатӣ танҳо аз 16 то 33 миллисония лозиманд.
  • Идеалӣ, ҳадди аққал як қисми система бояд ба маълумот асос ёбад, то ки рамзгузорон тағирот ворид накунанд ва ислоҳот зудтар ба амал оянд.

Биёед равишҳои AI-ро бубинем, ки тамоми давраи ҳиссиёт/фикр/амалро фаро мегиранд.

Қабули қарорҳои асосӣ

Биёед бо бозии соддатарин - Понг оғоз кунем. Мақсад: белакро ҳаракат кунед, то тӯб аз он парида шавад, на аз назди он парвоз. Ин ба теннис монанд аст, ки агар шумо тӯбро назанед, мағлуб мешавед. Дар ин ҷо AI вазифаи нисбатан осон дорад - тасмим гирифтан ба кадом самт барои ҳаракат додани платформа.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Изҳороти шартӣ

Барои AI дар Понг, ҳалли возеҳтарин ҳамеша кӯшиш кардани платформаро дар зери тӯб ҷойгир кардан аст.

Алгоритми оддӣ барои ин, ки бо псевдокод навишта шудааст:

ҳар чаҳорчӯба/навсозӣ ҳангоми иҷро шудани бозӣ:
агар тӯб дар тарафи чапи бел ҷойгир бошад:
белро ба чап ҳаракат кунед
дар акси ҳол, агар тӯб дар тарафи рости бел бошад:
белро ба рост ҳаракат кунед

Агар платформа бо суръати тӯб ҳаракат кунад, пас ин алгоритми беҳтарин барои AI дар Понг мебошад. Агар барои агент ин қадар маълумот ва амалҳои имконпазир мавҷуд набошад, ҳеҷ чизро душвор кардан лозим нест.

Ин равиш чунон содда аст, ки тамоми давраи Ҳис кардан/Фикр кардан/Амал кардан базӯр намоён аст. Аммо он ҷост:

  • Қисми Sense дар ду изҳорот иборат аст. Бозӣ медонад, ки тӯб дар куҷост ва платформа дар куҷост, аз ин рӯ AI барои ин маълумот ба он назар мекунад.
  • Қисми Фикр низ ба ду изҳороти if дохил карда шудааст. Онҳо ду ҳалли худро дарбар мегиранд, ки дар ин ҳолат ҳамдигарро истисно мекунанд. Дар натиҷа, яке аз се амал интихоб карда мешавад - платформаро ба чап ҳаракат кунед, ба рост ҳаракат кунед ё агар он аллакай дуруст ҷойгир карда шуда бошад, ҳеҷ кор накунед.
  • Қисми Санад дар изҳороти Move Paddle Left ва Move Paddle Right пайдо шудааст. Вобаста аз тарҳи бозӣ, онҳо метавонанд платформаро фавран ё бо суръати муайян ҳаракат кунанд.

Чунин равишҳоро реактивӣ меноманд - маҷмӯи оддии қоидаҳо вуҷуд доранд (дар ин ҳолат агар изҳорот дар код), ки ба ҳолати кунунии ҷаҳон вокуниш нишон медиҳанд ва амал мекунанд.

Дарахти қарор

Мисоли Понг воқеан ба консепсияи расмии AI, ки дарахти қарор номида мешавад, баробар аст. Алгоритм аз он мегузарад, то ба "барг" мерасад - қарор дар бораи он, ки кадом амал бояд андешида шавад.

Биёед диаграммаи блоки дарахти қарорро барои алгоритми платформаи худ созем:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ҳар як қисми дарахт гиреҳ номида мешавад - AI назарияи графикиро барои тавсифи чунин сохторҳо истифода мебарад. Ду намуди гиреҳҳо мавҷуданд:

  • Гиреҳҳои қарорҳо: интихоби байни ду алтернатива дар асоси санҷиши баъзе шартҳо, ки дар он ҳар як алтернатива ҳамчун гиреҳи алоҳида муаррифӣ мешавад.
  • Гиреҳҳои ниҳоӣ: Амали иҷрошаванда, ки қарори ниҳоиро ифода мекунад.

Алгоритм аз гиреҳи якум («реша»-и дарахт) оғоз меёбад. Он ё дар бораи рафтан ба кадом гиреҳи кӯдак қарор қабул мекунад ё амали дар гиреҳ нигоҳ дошташударо иҷро мекунад ва мебарояд.

Аз он чӣ фоида дорад, ки дарахти қарорҳо ҳамон кореро иҷро кунад, ки изҳороти if дар боби қаблӣ дорад? Дар ин ҷо системаи умумӣ мавҷуд аст, ки ҳар як қарор танҳо як шарт ва ду натиҷаи имконпазир дорад. Ин ба таҳиякунанда имкон медиҳад, ки AI аз маълумоте, ки қарорҳоро дар дарахт ифода мекунанд, бидуни рамзгузории сахти он эҷод кунад. Биёед онро дар шакли ҷадвал пешниҳод кунем:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Дар тарафи код шумо системаи хондани сатрҳоро хоҳед гирифт. Барои ҳар яки онҳо гиреҳ эҷод кунед, мантиқи қарорро дар асоси сутуни дуюм ва гиреҳҳои кӯдакро дар асоси сутунҳои сеюм ва чорум пайваст кунед. Шумо ба ҳар ҳол лозим аст, ки шартҳо ва амалҳоро барномарезӣ кунед, аммо ҳоло сохтори бозӣ мураккабтар хоҳад шуд. Дар ин ҷо шумо қарорҳо ва амалҳои иловагӣ илова мекунед ва сипас тавассути таҳрири файли матнии таърифи дарахт тамоми AI-ро танзим мекунед. Баъдан, шумо файлро ба тарроҳи бозӣ интиқол медиҳед, ки метавонад рафторро бидуни дубора тартиб додани бозӣ ё тағир додани код тағир диҳад.

Дарахтони қарорҳо хеле муфиданд, вақте ки онҳо аз маҷмӯи зиёди мисолҳо ба таври худкор сохта мешаванд (масалан, бо истифода аз алгоритми ID3). Ин онҳоро як воситаи муассир ва самаранок барои тасниф кардани вазъиятҳо дар асоси маълумоти гирифташуда месозад. Бо вуҷуди ин, мо аз як системаи оддӣ барои агентҳо барои интихоби амал берун меравем.

Сенарияҳо

Мо системаи дарахти қарорҳоро таҳлил кардем, ки шароитҳо ва амалҳои қаблан сохташударо истифода мебурд. Шахсе, ки AI-ро тарроҳӣ мекунад, метавонад дарахтро тавре, ки мехоҳад, ташкил кунад, аммо ӯ ба ҳар ҳол бояд ба коддере, ки ҳамаро барномарезӣ кардааст, такя кунад. Чӣ мешавад, агар мо ба тарроҳон асбобҳоеро додем, ки шароит ё амали худро эҷод кунад?

Барои он ки ба барномасоз лозим набошад, ки барои шартҳои Is Ball Left Of Paddle ва Is Ball Right Of Paddle код нависад, вай метавонад системаеро созад, ки дар он конструктор барои тафтиши ин арзишҳо шароит нависад. Пас маълумот дарахти қарор чунин хоҳад буд:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ин аслан ба ҷадвали аввал монанд аст, аммо ҳалли дар дохили худ рамзи худро доранд, каме ба қисми шартии изҳороти if монанд аст. Дар паҳлӯи рамз, ин дар сутуни дуюм барои гиреҳҳои қарор хонда мешавад, аммо ба ҷои ҷустуҷӯи шарти мушаххас барои иҷро (Is Ball Left Of Paddle), он ифодаи шартиро арзёбӣ мекунад ва мувофиқан дуруст ё бардурӯғ бармегардонад. Ин бо истифода аз забони скрипти Lua ё Angelscript анҷом дода мешавад. Бо истифода аз онҳо, таҳиякунанда метавонад дар бозии худ объектҳоро (туб ва бел) бигирад ва тағирёбандаҳое созад, ки дар скрипт дастрас хоҳанд буд (ball.position). Инчунин, забони скрипт нисбат ба C++ соддатар аст. Он марҳилаи пурраи тартибдиҳиро талаб намекунад, аз ин рӯ он барои зуд танзим кардани мантиқи бозӣ беҳтарин аст ва ба "ғайрикодерҳо" имкон медиҳад, ки худашон функсияҳои заруриро эҷод кунанд.

Дар мисоли боло, забони скрипт танҳо барои арзёбии ифодаи шартӣ истифода мешавад, аммо он метавонад барои амалҳо низ истифода шавад. Масалан, маълумоти Move Paddle Right метавонад изҳороти скрипт гардад (ball.position.x += 10). Барои он ки амал низ дар скрипт муайян карда шавад, бе зарурати барномаи Move Paddle Right.

Шумо метавонед боз ҳам бештар равед ва тамоми дарахти қарорро бо забони скрипт нависед. Ин код дар шакли изҳороти шартии сахт кодшуда хоҳад буд, аммо онҳо дар файлҳои скрипти беруна ҷойгир хоҳанд шуд, яъне онҳоро бидуни аз нав тартиб додани тамоми барнома тағир додан мумкин аст. Шумо метавонед аксар вақт файли скриптро ҳангоми бозӣ таҳрир кунед, то посухҳои гуногуни AI-ро зуд санҷед.

Вокуниши ҳодиса

Намунаҳои дар боло овардашуда барои Понг комиланд. Онҳо пайваста сикли Ҳис кардан/Фикр кардан/Амал мекунанд ва дар асоси ҳолати охирини ҷаҳон амал мекунанд. Аммо дар бозиҳои мураккабтар шумо бояд ба рӯйдодҳои инфиродӣ вокуниш нишон диҳед ва на ҳама чизро якбора арзёбӣ кунед. Понг дар ин ҳолат аллакай намунаи бад аст. Биёед дигареро интихоб кунем.

Тасаввур кунед, ки тирандозе, ки душманон то он даме, ки бозигарро ошкор накунанд, бе ҳаракат мемонанд ва баъд аз он вобаста ба “тахассус”-и худ амал мекунанд: касе ба “шитоб” медавад, касе аз дур ҳамла мекунад. Он ҳоло ҳам як системаи реактивии асосӣ аст - "агар бозигаре пайдо шавад, коре кунед" - аммо он метавонад ба таври мантиқӣ ба рӯйдодҳои Player Seen ва Reaction тақсим карда шавад (ҷавобро интихоб кунед ва онро иҷро кунед).

Ин моро ба давраи ҳиссиёт/фикр/амал бармегардонад. Мо метавонем як қисми Sense-ро рамзгузорӣ кунем, ки ҳар як чаҳорчӯбаро тафтиш мекунад, ки оё AI плеерро мебинад. Дар акси ҳол, ҳеҷ чиз рӯй намедиҳад, аммо агар он бубинад, воқеаи Player Seen сохта мешавад. Рамз дорои бахши алоҳидае хоҳад буд, ки дар он гуфта мешавад, ки "ҳангоме ки ҳодисаи Player Seen рух медиҳад, иҷро кунед" дар куҷо посухе, ки ба шумо лозим аст, ки ба қисмҳои "Фикр ва амал" муроҷиат кунед. Ҳамин тариқ, шумо вокунишҳоро ба ҳодисаи Player Seen муқаррар мекунед: барои аломати "шитоб" - ChargeAndAttack ва барои снайпер - HideAndSnipe. Ин муносибатҳоро метавон дар файли додаҳо барои таҳрири зуд бидуни такрори дубора эҷод кард. Забони скриптро дар ин ҷо низ метавон истифода бурд.

Қабули қарорҳои душвор

Гарчанде ки системаҳои реаксияи оддӣ хеле пурқувватанд, бисёр ҳолатҳое ҳастанд, ки онҳо кофӣ нестанд. Баъзан ба шумо лозим меояд, ки дар асоси он коре, ки агент айни замон карда истодааст, қарорҳои гуногун қабул кунед, аммо инро ҳамчун шарт тасаввур кардан душвор аст. Баъзан шароитҳои аз ҳад зиёд вуҷуд доранд, ки онҳоро дар дарахти қарор ё скрипт ба таври муассир муаррифӣ кунанд. Баъзан шумо бояд пешакӣ арзёбӣ кунед, ки вазъ чӣ гуна тағир меёбад, пеш аз қабул кардани қадами оянда. Барои халли ин проблемахо роххои боз хам мукаммалтар лозиманд.

Мошини ҳолати ниҳоӣ

Мошини ҳолати ниҳоӣ ё FSM (мошини ҳолати ниҳоии) як роҳи гуфтани он аст, ки агенти мо дар айни замон дар яке аз якчанд ҳолати имконпазир қарор дорад ва он метавонад аз як ҳолат ба ҳолати дигар гузарад. Шумораи муайяни чунин давлатҳо вуҷуд доранд - аз ин рӯ, ном дорад. Намунаи беҳтарин аз ҳаёт чароғаки светофор аст. Дар ҷойҳои гуногун пайдарпайии чароғҳои гуногун мавҷуданд, аммо принсип як аст - ҳар як ҳолат чизеро ифода мекунад (ист, роҳ ва ғайра). Светофор дар вақти дилхоҳ танҳо дар як ҳолат қарор дорад ва дар асоси қоидаҳои оддӣ аз як ба дигараш мегузарад.

Ин як ҳикояи шабеҳ бо NPCs дар бозиҳо аст. Масалан, биёед як посбонро бо ҳолатҳои зерин гирем:

  • Патрулӣ.
  • Ҳамла кардан.
  • Гурехтан.

Ва ин шартҳо барои тағир додани ҳолати он:

  • Агар посбон душманро бубинад, вай хучум мекунад.
  • Агар посбон ҳамла кунад, вале дигар душманро набинад, вай ба посбон бармегардад.
  • Агар посбон хучум кунад, вале сахт ярадор шавад, гурехта меравад.

Шумо инчунин метавонед изҳороти if-ро бо тағирёбандаи ҳолати парасторӣ ва чекҳои гуногун нависед: оё дар наздикӣ душман ҳаст, сатҳи саломатии NPC чӣ гуна аст ва ғайра. Биёед боз чанд ҳолати дигарро илова кунем:

  • Бекорй — байни патрульхо.
  • Ҷустуҷӯ - вақте ки душмани мушоҳидашуда нопадид шуд.
  • Ҷустуҷӯи кӯмак - вақте ки душман пайдо мешавад, аммо барои мубориза бо танҳоӣ хеле қавӣ аст.

Интихоби ҳар яки онҳо маҳдуд аст - масалан, посбон дар ҷустуҷӯи душмани пинҳонӣ намеравад, агар саломатии ӯ паст бошад.

Дар ниҳоят, рӯйхати бузурги "агар" вуҷуд дорад , Ки " метавонад хеле душвор гардад, аз ин рӯ мо бояд усулеро ба расмият орем, ки ба мо имкон медиҳад, ки давлатҳо ва гузариши байни давлатҳоро дар хотир нигоҳ дорем. Барои ин мо хамаи штатхоро ба хисоб гирифта, дар зери хар як штат хамаи гузаришхоро ба дигар давлатхо бо баробари шароитхои барои онхо зарурй ба руихат менависем.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ин ҷадвали гузариши давлатӣ - роҳи ҳамаҷонибаи муаррифии FSM аст. Биёед диаграммаро кашем ва шарҳи пурраи тағирёбии рафтори NPC-ро гирем.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Диаграмма моҳияти қабули қарорро барои ин агент дар асоси вазъияти кунунӣ инъикос мекунад. Ғайр аз он, ҳар як тирча гузаришро байни давлатҳоро нишон медиҳад, агар шарт дар паҳлӯи он дуруст бошад.

Ҳар як навсозӣ мо ҳолати кунунии агентро тафтиш мекунем, рӯйхати гузаришҳоро аз назар мегузаронем ва агар шартҳои гузариш иҷро карда шаванд, он ҳолати навро қабул мекунад. Масалан, ҳар як чаҳорчӯба тафтиш мекунад, ки мӯҳлати таймери 10 сония гузаштааст ва агар ин тавр бошад, посбон аз ҳолати бекорӣ ба Patroling мегузарад. Ба ҳамин тариқ, ҳолати ҳамлакунанда саломатии агентро тафтиш мекунад - агар он паст бошад, он ба ҳолати фирорӣ мегузарад.

Ин коркарди гузариш байни давлатҳост, аммо дар бораи рафтори марбут ба худи давлатҳо чӣ гуфтан мумкин аст? Дар робита ба татбиқи рафтори воқеӣ барои як давлати мушаххас, маъмулан ду намуди "қалмоқ" мавҷуданд, ки мо амалҳоро ба FSM таъин мекунем:

  • Амалҳое, ки мо давра ба давра барои ҳолати кунунӣ иҷро мекунем.
  • Амалҳое, ки мо ҳангоми аз як ҳолат ба ҳолати дигар гузаштан мекунем.

Намунаҳо барои навъи якум. Давлати Патрулӣ агентро дар масири посбонӣ ҳар як чаҳорчӯба интиқол медиҳад. Давлати ҳамлакунанда кӯшиш мекунад, ки ҳар як чаҳорчӯба ҳамларо оғоз кунад ё ба ҳолате гузарад, ки ин имконпазир аст.

Барои навъи дуюм, гузаришро баррасӣ кунед "агар душман намоён бошад ва душман аз ҳад қавӣ бошад, пас ба ҳолати дарёфти кӯмак гузаред. Агент бояд интихоб кунад, ки ба куҷо барои кӯмак муроҷиат кунад ва ин маълумотро нигоҳ дорад, то ҳолати Ҷустуҷӯи Ёрӣ донад, ки ба куҷо равад. Пас аз дарёфти кӯмак, агент ба ҳолати ҳамла бармегардад. Дар ин лаҳза, ӯ мехоҳад, ки ба иттифоқчӣ дар бораи таҳдид нақл кунад, бинобар ин метавонад амали NotifyFriendOfThreat рух диҳад.

Бори дигар, мо метавонем ба ин система тавассути объективии давраи Sense/Think/Act назар кунем. Ҳис дар маълумоте, ки мантиқи гузариш истифода мешавад, таҷассум ёфтааст. Фикр кунед - гузаришҳо дар ҳар як давлат мавҷуданд. Ва акт бо амалҳое сурат мегирад, ки давра ба давра дар дохили давлат ё ҳангоми гузариш байни давлатҳо анҷом дода мешавад.

Баъзан шароити гузариш ба таври доимӣ метавонад гарон бошад. Масалан, агар ҳар як агент ҳисобҳои мураккабро ҳар чаҳорчӯба анҷом диҳад, то муайян кунад, ки оё вай душманонро дида метавонад ва фаҳмад, ки оё он метавонад аз ҳолати посбонӣ ба ҳамла гузарад, ин барои CPU вақти зиёдро мегирад.

Тағироти муҳими вазъи ҷаҳонро метавон ҳамчун рӯйдодҳое баррасӣ кард, ки ҳангоми рух додани онҳо коркард мешаванд. Ба ҷои тафтиши FSM ҳолати гузариш "Оё агенти ман плеерро бубинад?" ҳар чаҳорчӯба, системаи алоҳидаро метавон танзим кард, ки камтар зуд-зуд тафтиш кунад (масалан, 5 маротиба дар як сония). Ва натиҷа ин аст, ки ҳангоми гузаштани чек Player Seen дода шавад.

Ин ба FSM интиқол дода мешавад, ки ҳоло бояд ба ҳолати қабулшудаи Player Seen равад ва мувофиқи он посух диҳад. Рафтори натиҷа якхела аст, ба истиснои таъхири қариб ноаён пеш аз ҷавоб. Аммо иҷрои он дар натиҷаи ба қисмати алоҳидаи барнома ҷудо кардани қисми Ҳис беҳтар шудааст.

Мошини ҳолати ниҳоии иерархӣ

Бо вуҷуди ин, кор бо FSM-ҳои калон на ҳамеша қулай аст. Агар мо хоҳем, ки ҳолати ҳамларо барои ҷудо кардани MeleeAttacking ва RangedAttacking васеъ кунем, мо бояд гузаришҳоро аз ҳама дигар давлатҳое, ки ба ҳолати ҳамла оварда мерасонанд (ҳозира ва оянда) иваз кунем.

Шумо шояд пай бурдед, ки дар мисоли мо гузариши такрорӣ зиёд аст. Аксари гузаришҳо дар ҳолати Бекорӣ бо гузаришҳо дар ҳолати Патрулкунӣ шабеҳанд. Хуб мешуд, ки такрор накунем, алалхусус агар давлатҳои шабеҳро бештар зам кунем. Дар зери тамғаи умумии "ғайриҷангӣ" гурӯҳбандӣ кардани Idling ва Patrolling маъно дорад, ки дар он ҷо танҳо як маҷмӯи умумии гузариш ба давлатҳои ҷангӣ мавҷуд аст. Агар мо ин тамғаро ҳамчун давлат фикр кунем, пас Бекорӣ ва Патрулӣ зердавлатҳо мешаванд. Намунаи истифодаи ҷадвали гузариши алоҳида барои зердавлати нави ғайриҷангӣ:

Давлатҳои асосӣ:
Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ҳолати берун аз ҷанг:
Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ва дар шакли диаграмма:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ин ҳамон як система аст, аммо бо як ҳолати нави ҷангӣ, ки Идлинг ва Патруллингро дар бар мегирад. Бо ҳар як ҳолати дорои FSM бо зердавлатҳо (ва ин зердавлатҳо, дар навбати худ, дорои FSM-ҳои худро доранд - ва ғайра то он даме, ки ба шумо лозим аст), мо як мошини ҳолати ниҳоии иерархӣ ё HFSM мегирем (мошини ҳолати ниҳоии иерархӣ). Бо гурӯҳбандии ҳолати ғайриҷангӣ, мо як қатор гузаришҳои зиёдатиро буридаем. Мо метавонем барои ҳар як давлатҳои нав, ки гузариши умумӣ доранд, ҳамин тавр кунем. Масалан, агар мо дар оянда давлати Ҳамлакунандаро ба иёлатҳои Melee Attacking ва Missile Attacking васеъ кунем, онҳо зердавлатҳо хоҳанд буд, ки аз рӯи масофа ба душман ва мавҷудияти лавозимоти ҷангӣ байни ҳамдигар мегузаранд. Дар натиҷа, рафтори мураккаб ва зеррафторҳо метавонанд бо ҳадди ақали гузаришҳои такрорӣ муаррифӣ карда шаванд.

Дарахти рафтор

Бо HFSM, комбинатсияи мураккаби рафторҳо ба таври оддӣ сохта мешаванд. Бо вуҷуди ин, як душвории каме вуҷуд дорад, ки қабули қарор дар шакли қоидаҳои гузариш бо вазъи кунунӣ зич алоқаманд аст. Ва дар бисёр бозиҳо ин маҳз он чизест, ки лозим аст. Ва истифодаи эҳтиёткоронаи иерархияи давлатӣ метавонад шумораи такрорҳои гузаришро кам кунад. Аммо баъзан ба шумо қоидаҳое лозиманд, ки новобаста аз он ки шумо дар кадом иёлот ҳастед, кор мекунанд ё қариб дар ҳама иёлот татбиқ мешаванд. Масалан, агар саломатии агент то 25% паст шавад, шумо мехоҳед, ки ӯ новобаста аз он ки ӯ дар ҷанг буд, бекор буд ё гап мезанад - шумо бояд ин шартро ба ҳар як давлат илова кунед. Ва агар тарроҳи шумо дертар мехоҳад ҳадди ниҳоии саломатиро аз 25% то 10% тағир диҳад, пас ин бояд дубора анҷом дода шавад.

Идеалӣ, ин вазъият системаеро талаб мекунад, ки дар он қарорҳо дар бораи "дар кадом давлат будан" берун аз худи давлатҳо бошанд, то тағирот танҳо дар як ҷо ворид карда шавад ва ба шароити гузариш дахл накунад. Дар ин ҷо дарахтони рафтор пайдо мешаванд.

Якчанд роҳҳои татбиқи онҳо вуҷуд доранд, аммо моҳият тақрибан барои ҳама якхела аст ва ба дарахти қарорҳо монанд аст: алгоритм аз гиреҳи "реша" оғоз мешавад ва дарахт гиреҳҳоро дар бар мегирад, ки ё қарорҳо ё амалҳоро ифода мекунанд. Бо вуҷуди ин, якчанд фарқиятҳои асосӣ вуҷуд доранд:

  • Гиреҳҳо ҳоло яке аз се арзишҳоро бармегардонанд: Муваффақ шуд ​​(агар кор анҷом дода шавад), Ноком (агар он оғоз нашавад) ё Иҷрошаванда (агар он ҳоло ҳам кор кунад ва натиҷаи ниҳоӣ набошад).
  • Дигар гиреҳҳои қарор барои интихоб байни ду алтернатива вуҷуд надоранд. Ба ҷои ин, онҳо гиреҳҳои ороишгар мебошанд, ки як гиреҳи кӯдак доранд. Агар онҳо муваффақ шаванд, онҳо гиреҳи ягонаи кӯдаки худро иҷро мекунанд.
  • Гиреҳҳое, ки амалҳоро иҷро мекунанд, арзиши иҷрошавандаро барои муаррифии амалҳои иҷрошаванда бармегардонанд.

Ин маҷмӯи хурди гиреҳҳоро барои эҷоди шумораи зиёди рафторҳои мураккаб муттаҳид кардан мумкин аст. Биёед посбони HFSM-ро аз мисоли қаблӣ ҳамчун дарахти рафтор тасаввур кунем:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Бо ин сохтор набояд ҳеҷ гуна гузариши ошкоро аз давлатҳои бекорӣ/патрулӣ ба ҳамла ё дигар давлатҳо бошад. Агар душман намоён бошад ва саломатии қаҳрамон паст бошад, иҷрокунӣ дар гиреҳи Фирор қатъ мешавад, новобаста аз он, ки он пештар кадом гиреҳ иҷро мекард - Посбонӣ, Бекорӣ, Ҳамла кардан ё ягон чизи дигар.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Дарахтҳои рафтор мураккабанд - роҳҳои зиёде барои эҷоди онҳо мавҷуданд ва пайдо кардани омезиши дурусти ороишгарон ва гиреҳҳои мураккаб метавонад душвор бошад. Инчунин саволҳо мавҷуданд, ки дарахтро чанд вақт тафтиш кардан лозим аст - оё мо мехоҳем аз ҳар як қисми он гузарам ё танҳо вақте ки яке аз шартҳо тағир ёфт? Мо ҳолати марбут ба гиреҳҳоро чӣ гуна нигоҳ медорем - мо аз куҷо медонем, ки кай мо 10 сония бекор будем ё чӣ гуна мо медонем, ки кадом гиреҳҳо бори охир иҷро шудаанд, то мо пайдарпайро дуруст коркард кунем?

Ин аст, ки чаро татбиқи зиёде вуҷуд дорад. Масалан, баъзе системаҳо гиреҳҳои ороишгариро бо ороишгарони дохилӣ иваз карданд. Вақте ки шароити ороишгар тағир меёбад, онҳо дарахтро дубора арзёбӣ мекунанд, ба пайвастан ба гиреҳҳо кӯмак мекунанд ва навсозиҳои даврӣ пешниҳод мекунанд.

Системаи ба коммуналӣ асосёфта

Баъзе бозиҳо механикаи гуногун доранд. Ин матлуб аст, ки онҳо ҳама бартариҳои қоидаҳои оддӣ ва умумии гузаришро мегиранд, аммо на ҳатман дар шакли дарахти пурраи рафтор. Ба ҷои доштани маҷмӯи равшани интихобҳо ё дарахти амалҳои имконпазир, тафтиш кардани ҳама амалҳо ва интихоби мувофиқтарин дар айни замон осонтар аст.

Системаи коммуналӣ дар ин кор кӯмак хоҳад кард. Ин системаест, ки дар он агент амалҳои гуногун дорад ва интихоб мекунад, ки кадомашро дар асоси фоиданокии нисбии ҳар як иҷро кунад. Дар он ҷое, ки фоиданокӣ ченаки худсарона аст, ки барои агент иҷро кардани ин амал то чӣ андоза муҳим ё матлуб аст.

Фоидаи ҳисобшудаи амал дар асоси ҳолати кунунӣ ва муҳити зист, агент метавонад дар вақти дилхоҳ ҳолати мувофиқтаринро тафтиш ва интихоб кунад. Ин ба FSM монанд аст, ба истиснои ҳолатҳое, ки гузаришҳо аз рӯи сметаи ҳар як ҳолати эҳтимолӣ, аз ҷумла ҳолати ҷорӣ муайян карда мешаванд. Лутфан қайд кунед, ки мо амали муфидтаринро барои идома интихоб мекунем (ё монем, агар мо онро аллакай анҷом дода бошем). Барои гуногунии бештар, ин метавонад интихоби мутавозин, вале тасодуфӣ аз рӯйхати хурд бошад.

Система диапазони ихтиёрии арзишҳои муфидро таъин мекунад - масалан, аз 0 (комилан номатлуб) то 100 (комилан дилхоҳ). Ҳар як амал дорои як қатор параметрҳоест, ки ба ҳисоби ин арзиш таъсир мерасонанд. Бозгашт ба мисоли муҳофизи мо:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Гузаришҳо байни амалҳо номуайянанд - ҳар як давлат метавонад ҳар як давлати дигарро пайгирӣ кунад. Афзалиятҳои амал дар арзишҳои баргардонидашуда пайдо мешаванд. Агар душман намоён бошад ва он душман қавӣ бошад ва саломатии қаҳрамон паст бошад, он гоҳ ҳам Фирор ва ҳам FindingHelp қиматҳои баланди ғайрисифрро бармегардонанд. Дар ин ҳолат, FindingHelp ҳамеша баландтар хоҳад буд. Ба ҳамин монанд, фаъолиятҳои ғайриҷангӣ ҳеҷ гоҳ аз 50 зиёд барнамегарданд, аз ин рӯ онҳо ҳамеша аз амалиёти ҷангӣ пасттар хоҳанд буд. Ҳангоми эҷоди амалҳо ва ҳисоб кардани фоидаи онҳо, шумо бояд инро ба назар гиред.

Дар мисоли мо, амалҳо ё арзиши доимии собит ё яке аз ду арзиши собитро бармегардонанд. Системаи воқеии бештар ҳисобро аз доираи доимии арзишҳо бармегардонад. Масалан, амали Fleeing, агар вазъи саломатии агент паст бошад, арзишҳои баландтари утилитаҳоро бармегардонад ва амали Ҳамла дар сурати аз ҳад қавӣ будани душман арзишҳои камтари фоидаро бармегардонад. Аз ин рӯ, амали Фирор дар ҳама гуна вазъияте, ки агент эҳсос мекунад, ки барои мағлуб кардани душман саломатии кофӣ надорад, нисбат ба Ҳамла бартарӣ дорад. Ин имкон медиҳад, ки амалҳо дар асоси ҳама гуна меъёрҳо авлавият дода шаванд, ки ин равишро нисбат ба дарахти рафтор ё FSM чандиртар ва тағйирёбанда мегардонад.

Ҳар як амал барои ҳисоб кардани барнома шароити зиёде дорад. Онҳо метавонанд бо забони скрипт ё ҳамчун як қатор формулаҳои математикӣ навишта шаванд. Симс, ки реҷаи ҳаррӯзаи қаҳрамонро тақлид мекунад, як қабати иловагии ҳисобро илова мекунад - агент як қатор "ангезаҳо" -ро мегирад, ки ба рейтингҳои хидматрасонӣ таъсир мерасонанд. Агар аломат гурусна бошад, онҳо бо мурури замон боз ҳам гуруснатар мешаванд ва арзиши фоиданоки амали EatFood то он даме, ки аломат онро иҷро кунад, афзоиш ёфта, сатҳи гуруснагиро коҳиш медиҳад ва арзиши EatFoodро ба сифр бармегардонад.

Идеяи интихоби амалҳо дар асоси системаи рейтингӣ хеле содда аст, аз ин рӯ системаи Utility-ро метавон ҳамчун як қисми равандҳои қабули қарорҳои AI истифода бурд, на ҳамчун ивазкунандаи пурраи онҳо. Дарахти қарор метавонад рейтинги муфиди ду гиреҳи кӯдакро талаб кунад ва гиреҳи баландтарро интихоб кунад. Ба ҳамин монанд, дарахти рафтор метавонад гиреҳи таркибии Utility дошта бошад, то фоиданокии амалҳоро арзёбӣ кунад, то кадом кӯдакро иҷро кунад.

Ҳаракат ва навигатсия

Дар мисолҳои қаблӣ, мо платформае доштем, ки мо ба чап ё рост ҳаракат мекардем ва посбоне, ки посбонӣ мекард ё ҳамла мекард. Аммо чӣ гуна мо ҳаракати агентро дар тӯли муддате иҷро мекунем? Мо суръатро чӣ гуна танзим мекунем, монеаҳоро чӣ гуна пешгирӣ мекунем ва чӣ гуна мо масирро ба нақша мегирем, вақте ки расидан ба макони таъинот назар ба ҳаракат дар хати рост мушкилтар аст? Биёед инро дида бароем.

Идоракунӣ

Дар марҳилаи аввал, мо фарз мекунем, ки ҳар як агент дорои суръати суръат аст, ки он чӣ гуна суръат ва ба кадом самт ҳаракат мекунад. Онро бо метр дар як сония, километр дар як соат, пиксел дар як сония ва ғайра чен кардан мумкин аст. Бо ёдоварӣ кардани ҳалқаи Ҳис/Фикр/Амал, мо метавонем тасаввур кунем, ки қисми Фикр суръатро интихоб мекунад ва қисми Санад ин суръатро ба агент татбиқ мекунад. Одатан бозиҳо як системаи физика доранд, ки ин вазифаро барои шумо иҷро мекунад, арзиши суръати ҳар як объектро меомӯзад ва онро танзим мекунад. Аз ин рӯ, шумо метавонед AI-ро бо як вазифа гузоред - муайян кунед, ки агент чӣ суръат бояд дошта бошад. Агар шумо медонед, ки агент бояд дар куҷо бошад, пас шумо бояд онро бо суръати муқарраршуда ба самти дуруст ҳаракат кунед. Муодилаи хеле ночиз:

дилхоҳ_сафар = мавқеъи_таъин - агент_мавқеъ

Ҷаҳони 2D-ро тасаввур кунед. Агент дар нуқта (-2,-2), макони таъинот дар ҷое дар шимолу шарқ дар нуқтаи (30, 20) ҷойгир аст ва роҳи зарурӣ барои расидан ба агент (32, 22) аст. Фарз мекунем, ки ин мавқеъҳо бо метр чен карда мешаванд - агар суръати агентро 5 метр дар як сония гирем, пас мо вектори ҷобаҷогузории худро васеъ карда, суръати тақрибан ба даст меорем (4.12, 2.83). Бо ин параметрҳо, агент ба ҷои таъиншуда тақрибан дар 8 сония мерасад.

Шумо метавонед арзишҳоро дар вақти дилхоҳ аз нав ҳисоб кунед. Агар агент нисфи роҳ ба ҳадаф мерасид, ҳаракат нисфи дарозӣ мебуд, аммо азбаски суръати максималии агент 5 м/с аст (мо дар боло тасмим гирифтем), суръат ҳамон хоҳад буд. Ин инчунин барои ҳаракат додани ҳадафҳо кор мекунад ва ба агент имкон медиҳад, ки ҳангоми ҳаракат онҳо тағироти хурд ворид кунад.

Аммо мо мехоҳем, ки варианти бештар - масалан, суръатро оҳиста-оҳиста зиёд кунед, то аломатеро, ки аз истодан ба давидан ҳаракат мекунад, тақлид кунед. Айнан ҳамин корро дар охири пеш аз таваққуф кардан мумкин аст. Ин хусусиятҳо ҳамчун рафтори роҳбарикунанда маълуманд, ки ҳар яки онҳо номҳои мушаххас доранд: Ҷустуҷӯ, фирор, расидан ва ғайра. Идеяи он аст, ки қувваҳои шитоб ба суръати агент дар асоси муқоисаи мавқеи агент ва суръати ҷорӣ бо макони таъинот дар то ки усулхои гуногуни ба максад гузаштанро истифода баранд.

Ҳар як рафтор ҳадафи каме дигар дорад. Ҷустуҷӯ ва расидан роҳҳои интиқол додани агент ба ҷои таъиншуда мебошанд. Пешгирӣ аз монеаҳо ва ҷудошавӣ ҳаракати агентро барои пешгирӣ кардани монеаҳо дар роҳ ба ҳадаф танзим мекунанд. Ҳамоҳангсозӣ ва ҳамбастагӣ агентҳоро якҷоя ҳаракат мекунанд. Ҳама гуна шумораи рафторҳои гуногуни роҳбарикунандаро метавон ҷамъбаст кард, то як вектори роҳро бо назардошти ҳамаи омилҳо ба вуҷуд оварад. Агенте, ки рафтори омадан, ҷудошавӣ ва канорагирӣ аз монеаҳоро истифода мебарад, то аз деворҳо ва дигар агентҳо дурӣ ҷӯяд. Ин равиш дар ҷойҳои кушод бидуни тафсилоти нолозим хуб кор мекунад.

Дар шароити душвортар, илова кардани рафторҳои гуногун бадтар кор мекунад - масалан, агент метавонад аз сабаби ихтилофи байни омадан ва канорагирӣ аз монеаҳо дар девор часпида шавад. Аз ин рӯ, шумо бояд вариантҳоеро баррасӣ кунед, ки назар ба илова кардани ҳамаи арзишҳо мураккабтаранд. Роҳ ин аст: ба ҷои ҷамъбасти натиҷаҳои ҳар як рафтор, шумо метавонед ҳаракатро дар самтҳои гуногун баррасӣ кунед ва беҳтарин вариантро интихоб кунед.

Бо вуҷуди ин, дар муҳити мураккаб бо ақсоҳои сарбаста ва интихоби кадом роҳ ба мо чизи пешрафтатаре лозим аст.

Дарёфти роҳ

Рафтори идоракунӣ барои ҳаракати оддӣ дар майдони кушод (майдони футбол ё арена), ки дар он ҷо аз А то В роҳи рост бо гардишҳои ночиз дар атрофи монеаҳо аст, хеле хуб аст. Барои хатсайрҳои мураккаб ба мо роҳнамо лозим аст, ки ин роҳи омӯхтани ҷаҳон ва қарор дар бораи масир тавассути он аст.

Соддатаринаш ин аст, ки ба ҳар як мураббаъ дар паҳлӯи агент истифода бурдани шабака ва арзёбӣ кардани кадоме аз онҳо иҷозати ҳаракат кардан аст. Агар яке аз онҳо макони таъинот бошад, пас аз ҳар як хиёбон то майдони пешина то ба ибтидо расидан масирро пайгирӣ кунед. Ин роҳ аст. Дар акси ҳол, ин равандро бо дигар хиёбонҳои ҳамсоя такрор кунед, то он даме, ки макони таъинотатонро пайдо кунед ё хиёбонҳо тамом нашавед (яъне масири имконпазир вуҷуд надорад). Ин чизест, ки расман ҳамчун Ҷустуҷӯи фарох-аввал ё BFS (алгоритми ҷустуҷӯи фарох-аввал) маълум аст. Дар ҳар қадам ӯ ба ҳар тараф менигарад (аз ин рӯ, фарох, «васеъ»). Фазои ҷустуҷӯ ба мавҷе монанд аст, ки то расидан ба макони дилхоҳ ҳаракат мекунад - фазои ҷустуҷӯ дар ҳар як қадам то он даме, ки нуқтаи ниҳоӣ дохил карда мешавад, васеъ мешавад ва пас аз он метавон онро то ибтидо пайгирӣ кард.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Дар натиҷа, шумо рӯйхати квадратҳоро хоҳед гирифт, ки дар онҳо масири дилхоҳ тартиб дода шудааст. Ин роҳ аст (аз ин рӯ, роҳнамоӣ) - рӯйхати ҷойҳое, ки агент ҳангоми пайравӣ аз макони таъинот боздид мекунад.

Бо назардошти он, ки мо мавқеи ҳар як мураббаъ дар ҷаҳонро медонем, мо метавонем рафтори роҳбарикунандаро барои ҳаракат дар роҳ истифода барем - аз гиреҳи 1 ба гиреҳи 2, баъд аз гиреҳи 2 ба гиреҳи 3 ва ғайра. Варианти соддатарин ин аст, ки ба маркази майдони навбатӣ ҳаракат кунед, аммо варианти беҳтар ин аст, ки дар мобайни канори байни квадрати ҷорӣ ва навбатӣ таваққуф кунед. Аз ин сабаб, агент метавонад кунҷҳоро дар гардишҳои тез бурад.

Алгоритми BFS низ нуқсонҳо дорад - он шумораи зиёди квадратҳоро дар самти "нодуруст" меомӯзад, зеро дар самти "дуруст". Дар ин ҷо алгоритми мураккабтаре бо номи A* (ситора) ба кор медарояд. Он ҳамин тавр кор мекунад, аммо ба ҷои он ки квадратҳои ҳамсояро кур-курона тафтиш кунад (баъдан ҳамсояҳои ҳамсояҳо, баъд ҳамсояҳои ҳамсояҳо ва ғайра), он гиреҳҳоро дар рӯйхат ҷамъоварӣ мекунад ва онҳоро тавре ҷудо мекунад, ки гиреҳи навбатии тафтишшаванда ҳамеша ки ба рохи кутохтарин мебарад. Гиреҳҳо дар асоси эвристика мураттаб карда мешаванд, ки ду чизро ба назар мегирад - "арзиш"-и масири фарзиявӣ ба майдони дилхоҳ (аз ҷумла ҳар гуна хароҷоти сафар) ва тахминии дурии ин мураббаъ аз макони таъинот (бо назардошти ҷустуҷӯ дар самти дуруст).

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ин мисол нишон медиҳад, ки агент дар як вақт як мураббаъро меомӯзад ва ҳар дафъа майдони ҳамсояро интихоб мекунад, ки аз ҳама умедбахш аст. Роҳи натиҷа якхела бо BFS аст, аммо дар ин раванд шумораи камтари майдонҳо ба назар гирифта шуданд - ин ба иҷрои бозӣ таъсири калон мерасонад.

Ҳаракат бидуни шабака

Аммо аксари бозиҳо дар як шабака ҷойгир карда нашудаанд ва ин корро бидуни қурбонии реализм иҷро кардан ғайриимкон аст. Муросо кардан лозим аст. Андозаи квадратҳо бояд чӣ гуна бошад? Хеле калон ва онҳо наметавонанд долонҳо ё гардишҳои хурдро дуруст муаррифӣ кунанд, хеле хурд ва барои ҷустуҷӯи майдонҳо аз ҳад зиёд хоҳанд буд, ки дар ниҳоят вақти зиёдро мегирад.

Аввалин чизе, ки бояд фаҳмид, ин аст, ки тор ба мо графики гиреҳҳои пайвастшударо медиҳад. Алгоритмҳои A* ва BFS воқеан дар графикҳо кор мекунанд ва ба торҳои мо умуман аҳамият намедиҳанд. Мо метавонем гиреҳҳоро дар ҳама ҷо дар ҷаҳони бозӣ ҷойгир кунем: то он даме, ки байни ҳар ду гиреҳи пайвастшуда, инчунин байни нуқтаҳои ибтидоӣ ва ниҳоӣ ва ҳадди аққал яке аз гиреҳҳо вуҷуд дорад, алгоритм мисли пештара кор хоҳад кард. Инро аксар вақт системаи нуқтаи роҳ меноманд, зеро ҳар як гиреҳ мавқеи муҳимро дар ҷаҳон ифода мекунад, ки метавонад як қисми ҳар як шумораи роҳҳои гипотетикӣ бошад.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон
Мисоли 1: гиреҳ дар ҳар як мураббаъ. Ҷустуҷӯ аз гиреҳе, ки агент ҷойгир аст, оғоз мешавад ва дар гиреҳи квадрати дилхоҳ ба итмом мерасад.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон
Мисоли 2: Маҷмӯи хурдтари гиреҳҳо (нуқтаҳои роҳ). Ҷустуҷӯ аз майдони агент оғоз шуда, аз шумораи зарурии гиреҳҳо мегузарад ва сипас ба ҷои таъиншуда идома медиҳад.

Ин як системаи комилан фасеҳ ва пурқувват аст. Аммо барои муайян кардани куҷо ва чӣ гуна ҷойгир кардани нуқтаи роҳ каме эҳтиёткорӣ лозим аст, вагарна агентҳо метавонанд нуқтаи наздиктаринро набинанд ва роҳро оғоз карда наметавонанд. Агар мо метавонистем ба таври худкор нуқтаҳои роҳро дар асоси геометрияи ҷаҳон ҷойгир кунем, осонтар мебуд.

Дар ин ҷо торчаи навигатсионӣ ё навмеш (меши навигатсионӣ) пайдо мешавад. Ин одатан як торҳои 2D аз секунҷаҳо мебошад, ки дар геометрияи ҷаҳон ҷойгир карда шудааст - дар ҳама ҷое, ки ба агент иҷозат дода шудааст, роҳ равад. Ҳар як секунҷаи тор ба гиреҳ дар график табдил меёбад ва то се секунҷаи ҳамсоя доранд, ки гиреҳҳои ҳамшафати график мешаванд.

Ин расм як намунаи муҳаррики Unity аст - он геометрияро дар ҷаҳон таҳлил карда, навмешро офаридааст (дар скриншот бо кабуди равшан). Ҳар як бисёркунҷа дар навмеш минтақаест, ки дар он агент метавонад истода ё аз як полигон ба бисёркунҷаи дигар гузарад. Дар ин мисол, полигонҳо аз фаршҳое, ки дар онҳо ҷойгиранд, хурдтаранд - ин барои ба назар гирифтани андозаи агент, ки аз мавқеи номиналии он берун хоҳад буд, анҷом дода мешавад.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Мо метавонем хатсайрро тавассути ин тор боз бо истифода аз алгоритми A* ҷустуҷӯ кунем. Ин ба мо роҳи қариб комил дар ҷаҳон медиҳад, ки тамоми геометрияро ба инобат мегирад ва гиреҳҳои нолозим ва эҷоди нуқтаҳои роҳро талаб намекунад.

Муайян кардани роҳ мавзӯи хеле васеъ аст, ки барои он як бахши мақола кофӣ нест. Агар шумо хоҳед, ки онро муфассалтар омӯзед, пас ин кӯмак мекунад Вебсайти Амит Пател.

Банақшагирӣ

Мо бо роҳи ҷустуҷӯ фаҳмидем, ки баъзан танҳо интихоб кардани самт ва ҳаракат кофӣ нест - мо бояд масир интихоб кунем ва чанд гардиш кунем, то ба макони дилхоҳамон бирасем. Мо метавонем ин ақидаро ҷамъбаст кунем: ноил шудан ба ҳадаф на танҳо қадами навбатӣ, балки як пайдарпаии пурраест, ки дар он баъзан шумо бояд якчанд қадамро пеш гиред, то бидонед, ки аввалин чӣ гуна бояд бошад. Ин банақшагирӣ номида мешавад. Пайравро метавон ҳамчун яке аз васеъшавии якчанд банақшагирӣ баррасӣ кард. Дар робита ба давраи Sense/Think/Act мо, дар ин ҷо қисми фикрронӣ қисмҳои сершумори Санадро барои оянда ба нақша гирифтааст.

Биёед ба мисоли бозии тахтаи Magic: The Gathering назар кунем. Мо аввал бо маҷмӯи кортҳои зерин дар дастамон меравем:

  • Ботлоқ - 1 манаи сиёҳ медиҳад (корти замин).
  • Ҷангал - 1 манаи сабз (корти замин) медиҳад.
  • Ёвари фирорӣ - Барои даъват кардан 1 манаи кабудро талаб мекунад.
  • Elvish Mystic - Барои даъват кардан 1 манаи сабзро талаб мекунад.

Мо се корти боқимондаро сарфи назар мекунем, то он осонтар шавад. Тибқи қоидаҳо, ба бозигар иҷозат дода мешавад, ки дар як гардиш 1 корти заминӣ бозӣ кунад, вай метавонад ин кортро барои гирифтани мана аз он “клик кунад” ва сипас мувофиқи маблағи мана ҷоду (аз ҷумла даъвати махлуқ) кунад. Дар ин вазъият, бозигари инсон медонад, ки ҷангал бозӣ кунад, 1 манаи сабзро ламс кунад ва сипас Mystic Elvish -ро даъват кунад. Аммо чӣ гуна бозии AI инро фаҳмида метавонад?

Банақшагирии осон

Муносибати ночиз ин аст, ки ҳар як амалро бо навбат санҷед, то даме ки ягон амали мувофиқ боқӣ намонад. Бо дидани кортҳо, AI мебинад, ки Swamp чӣ бозӣ карда метавонад. Ва ӯ бозӣ мекунад. Оё дар ин навбат ягон амали дигар боқӣ мондааст? Он наметавонад ҷодугари элвишӣ ё ҷодугари фирориро даъват кунад, зеро онҳо барои даъват кардани онҳо мутаносибан манаи сабз ва кабуд талаб мекунанд, дар ҳоле ки Ботлоқ танҳо манаи сиёҳро таъмин мекунад. Ва ӯ дигар наметавонад ҷангалро бозӣ кунад, зеро ӯ аллакай ботлоқро бозӣ кардааст. Ҳамин тариқ, бозии AI қоидаҳоро риоя кард, аммо онро суст анҷом дод. такмил додан мумкин аст.

Банақшагирӣ метавонад рӯйхати амалҳоеро пайдо кунад, ки бозиро ба ҳолати дилхоҳ меорад. Ҳамон тавре ки ҳар як майдон дар пайраҳа ҳамсояҳо дошт (дар роҳёбӣ), ҳар як амал дар нақша ҳамсояҳо ё ворисон дорад. Мо метавонем ин амалҳо ва амалҳои минбаъдаро то ба ҳолати дилхоҳ расиданамон ҷустуҷӯ кунем.

Дар мисоли мо, натиҷаи дилхоҳ "агар имконпазир бошад, махлуқро даъват кунед". Дар оғози гардиш мо танҳо ду амали имконпазирро мебинем, ки қоидаҳои бозӣ иҷозат додаанд:

1. Ботлоқро бозӣ кунед (натиҷа: Ботлоқ дар бозӣ)
2. Ҷангалро бозӣ кунед (натиҷа: ҷангал дар бозӣ)

Ҳар як амали андешидашуда метавонад ба амалҳои минбаъда оварда расонад ва дигаронро пӯшонад, боз вобаста ба қоидаҳои бозӣ. Тасаввур кунед, ки мо ботлоқро бозӣ кардем - ин ботлоқиро ҳамчун қадами навбатӣ нест мекунад (мо онро аллакай бозӣ кардем) ва ин инчунин ҷангалро нест мекунад (зеро тибқи қоидаҳо шумо метавонед дар як гардиш як корти замин бозӣ кунед). Пас аз ин, AI ба даст овардани 1 манаи сиёҳро ҳамчун қадами навбатӣ илова мекунад, зеро имконоти дигар вуҷуд надорад. Агар ӯ пеш равад ва Tap the Swamp -ро интихоб кунад, вай 1 воҳиди манаи сиёҳро мегирад ва бо он ҳеҷ кор карда наметавонад.

1. Ботлоқро бозӣ кунед (натиҷа: Ботлоқ дар бозӣ)
1.1 Ботлоқи "Тап" (натиҷа: Ботлоқи "талб зад", +1 воҳиди манаи сиёҳ)
Ягон амал дастрас нест - END
2. Ҷангалро бозӣ кунед (натиҷа: ҷангал дар бозӣ)

Рӯйхати амалҳо кӯтоҳ буд, мо ба сарбаста расидем. Мо равандро барои қадами оянда такрор мекунем. Мо ҷангал бозӣ мекунем, амали "1 манаи сабз гиред" -ро кушоед, ки дар навбати худ амали сеюмро мекушояд - даъвати Elvish Mystic.

1. Ботлоқро бозӣ кунед (натиҷа: Ботлоқ дар бозӣ)
1.1 Ботлоқи "Тап" (натиҷа: Ботлоқи "талб зад", +1 воҳиди манаи сиёҳ)
Ягон амал дастрас нест - END
2. Ҷангалро бозӣ кунед (натиҷа: ҷангал дар бозӣ)
2.1 Ҷангал "Тап" (натиҷа: Ҷангал "кӯфта шуд", +1 воҳиди манаи сабз)
2.1.1 Даъвати Mystic Elvish (натиҷа: Elvish Mystic дар бозӣ, -1 манаи сабз)
Ягон амал дастрас нест - END

Ниҳоят, мо ҳама амалҳои имконпазирро таҳқиқ кардем ва нақшае пайдо кардем, ки махлуқро даъват мекунад.

Ин як мисоли хеле соддашуда аст. Тавсия дода мешавад, ки беҳтарин нақшаи имконпазирро интихоб кунед, на танҳо ягон нақшае, ки ба баъзе меъёрҳо мувофиқат мекунад. Умуман, баҳодиҳии нақшаҳои эҳтимолиро дар асоси натиҷа ё манфиати умумии татбиқи онҳо имконпазир аст. Шумо метавонед барои бозӣ кардани корти замин 1 хол ва барои даъват кардани махлуқ 3 хол ба даст оред. Бозии Swamp як нақшаи 1 нуқта хоҳад буд. Ва бозӣ кардани ҷангал → Ҷангалро ламс кунед → даъвати Elvish Mystic фавран 4 хол медиҳад.

Банақшагирӣ дар Magic: The Gathering ҳамин тавр кор мекунад, аммо ҳамин мантиқ дар ҳолатҳои дигар низ татбиқ мешавад. Масалан, ҳаракат додани гарав барои ҷой додан ба усқуф дар шоҳмот. Ё дар паси девор пӯшед, то дар XCOM бехатар тир бигиред. Умуман, шумо фикр мекунед.

Банақшагирии беҳтаршуда

Баъзан амалҳои эҳтимолии аз ҳад зиёд барои баррасии ҳар як варианти имконпазир вуҷуд доранд. Бозгашт ба мисол бо Magic: The Gathering: биёед бигӯем, ки дар бозӣ ва дар дасти шумо якчанд кортҳои заминӣ ва махлуқ мавҷуданд - шумораи комбинатсияҳои имконпазири ҳаракат метавонад даҳҳо бошад. Якчанд роҳҳои ҳалли мушкилот вуҷуд доранд.

Усули аввал занҷирбандӣ ба ақиб аст. Ба ҷои кӯшиши ҳама комбинатсия, беҳтар аст, ки бо натиҷаи ниҳоӣ оғоз кунед ва кӯшиш кунед, ки роҳи мустақимро пайдо кунед. Мо ба чои он ки аз решаи дарахт ба барги мушаххас равем, мо ба самти муқобил — аз барг ба реша ҳаракат мекунем. Ин усул осонтар ва тезтар аст.

Агар душман 1 саломатӣ дошта бошад, шумо метавонед нақшаи "зарари 1 ё бештар" -ро пайдо кунед. Барои ноил шудан ба ин, бояд як қатор шартҳо риоя карда шаванд:

1. Зарар метавонад аз як ҷоду боиси - он бояд дар даст бошад.
2. Барои ҷоду кардан ба шумо мана лозим аст.
3. Барои гирифтани mana, шумо бояд корти заминро бозӣ кунед.
4. Барои бозӣ кардани корти замин, шумо бояд онро дар дасти шумо дошта бошед.

Роҳи дигар - ҷустуҷӯи беҳтарин. Ба ҷои кӯшиши ҳама роҳҳо, мо роҳи мувофиқро интихоб мекунем. Аксар вақт, ин усул нақшаи оптималиро бидуни хароҷоти ҷустуҷӯии нолозим медиҳад. A* шакли ҷустуҷӯи беҳтарини аввал аст - бо тафтиш кардани маршрутҳои ояндадор аз аввал, он метавонад роҳи беҳтаринро бидуни тафтиши имконоти дигар пайдо кунад.

Як варианти ҷолиб ва маъмултарини ҷустуҷӯи беҳтарин дар ҷустуҷӯи дарахти Монте-Карло мебошад. Ба ҷои тахмин кардан, ки кадом нақшаҳо аз дигарон беҳтаранд, ҳангоми интихоби ҳар як амали минбаъда, алгоритм ворисони тасодуфиро дар ҳар як қадам то ба охир расидани он интихоб мекунад (вақте ки нақша ба ғалаба ё мағлубият оварда расонд). Натиҷаи ниҳоӣ барои зиёд ё кам кардани вазни имконоти қаблӣ истифода мешавад. Бо такрор кардани ин раванд якчанд маротиба пай дар пай, алгоритм баҳои хуб медиҳад, ки беҳтарин ҳаракати оянда чӣ гуна аст, ҳатто агар вазъият тағир ёбад (агар душман барои халалдор шудан ба плеер чорае андешад).

Ҳеҷ як ҳикоя дар бораи банақшагирӣ дар бозиҳо бидуни банақшагирии амали ба ҳадаф нигаронидашуда ё GOAP (нақшагирии амали ба ҳадаф нигаронидашуда) пурра нахоҳад буд. Ин як усули ба таври васеъ истифодашаванда ва баррасӣшуда аст, аммо ба ғайр аз чанд ҷузъиёти фарқкунанда, он аслан усули занҷирбандӣ ба ақиб аст, ки мо қаблан дар бораи он сӯҳбат кардем. Агар ҳадаф "нобуд кардани бозигар" бошад ва плеер дар паси сарпӯш қарор дошта бошад, нақша метавонад чунин бошад: бо норинҷак нобуд кунед → онро гиред → партоед.

Одатан якчанд ҳадафҳо мавҷуданд, ки ҳар кадоми онҳо афзалияти худро доранд. Агар ҳадафи аввалиндараҷаро иҷро кардан ғайриимкон бошад (ҳеҷ маҷмӯи амалҳо нақшаи "куштани бозигарро" эҷод намекунад, зеро плеер намоён нест), AI ба ҳадафҳои афзалиятноки поёнтар бармегардад.

Омӯзиш ва мутобиқшавӣ

Мо аллакай гуфта будем, ки бозии AI одатан омӯзиши мошинро истифода намебарад, зеро он барои идоракунии агентҳо дар вақти воқеӣ мувофиқ нест. Аммо ин маънои онро надорад, ки шумо аз ин минтақа чизе қарз гирифта наметавонед. Мо рақиберо дар тирандоз мехоҳем, ки аз он чизе омӯхта метавонем. Масалан, дар бораи беҳтарин мавқеъ дар харита маълумот гиред. Ё рақиб дар бозии ҷангӣ, ки ҳаракатҳои комбои зуд-зуд истифодашавандаи плеерро бозмедорад ва ӯро барои истифодаи дигарон бармеангезад. Ҳамин тавр, омӯзиши мошин метавонад дар чунин ҳолатҳо хеле муфид бошад.

Омор ва эҳтимолиятҳо

Пеш аз он ки мо ба мисолҳои мураккаб ворид шавем, биёед бубинем, ки тавассути андешидани чанд андозагирии оддӣ ва истифодаи онҳо барои қабули қарорҳо то чӣ андоза мо метавонем дуртар биравем. Масалан, стратегияи воқеии вақт - мо чӣ гуна муайян мекунем, ки оё бозингар метавонад дар чанд дақиқаи аввали бозӣ ҳамла кунад ва ба муқобили ин кадом дифоъ омода шавад? Мо метавонем таҷрибаи пешинаи бозигарро омӯзем, то бифаҳмем, ки аксуламалҳои оянда чӣ гуна буда метавонанд. Аввалан, мо чунин маълумоти хом надорем, аммо мо метавонем онро ҷамъоварӣ кунем - ҳар дафъае, ки AI бар зидди инсон бозӣ мекунад, он метавонад вақти ҳамлаи аввалро сабт кунад. Пас аз чанд ҷаласа, мо ба ҳисоби миёна вақтеро мегирем, ки плеер дар оянда ҳамла кунад.

Мушкилоти арзишҳои миёна низ вуҷуд дорад: агар бозигар 20 маротиба шитоб кунад ва 20 маротиба оҳиста бозӣ кунад, пас арзишҳои зарурӣ дар мобайн хоҳанд буд ва ин ба мо ҳеҷ чизи муфид намедиҳад. Як ҳалли ин маҳдуд кардани маълумоти воридотӣ мебошад - 20 донаи охирро метавон ба инобат гирифт.

Равиши шабеҳ ҳангоми баҳодиҳии эҳтимолияти амалҳои муайян бо назардошти он, ки афзалиятҳои қаблии бозигар дар оянда якхела хоҳанд буд, истифода мешавад. Агар як бозигар ба мо панҷ маротиба бо тӯби оташ, ду маротиба бо барқ ​​ва як маротиба бо тирандозӣ ҳамла кунад, маълум аст, ки ӯ тӯби оташро афзалтар медонад. Биёед экстраполятсия кунем ва эҳтимолияти истифодаи силоҳҳои гуногунро бубинем: оташ = 62,5%, барқ ​​= 25% ва ҷанг = 12,5%. Бозии мо AI бояд омода шавад, ки худро аз оташ муҳофизат кунад.

Усули дигари ҷолиб ин аст, ки Классификатори Naive Bayes барои омӯхтани миқдори зиёди маълумоти воридотӣ ва тасниф кардани вазъият, то ки AI ба таври дилхоҳ вокуниш нишон диҳад. Таснифи Байесӣ барои истифодаи онҳо дар филтрҳои спам почтаи электронӣ маъруф аст. Дар он ҷо онҳо калимаҳоро тафтиш мекунанд, онҳоро бо он ҷое, ки ин калимаҳо қаблан пайдо шудаанд (дар спам ё не) муқоиса мекунанд ва дар бораи мактубҳои воридотӣ хулоса мебароранд. Мо метавонем ҳамон корро ҳатто бо воридоти камтар анҷом диҳем. Дар асоси ҳама маълумоти муфиде, ки AI мебинад (масалан, кадом воҳидҳои душман офарида шудаанд, ё кадом ҷодуҳоро истифода мебаранд ё кадом технологияҳоро таҳқиқ кардаанд) ва натиҷаи ниҳоӣ (ҷанг ё сулҳ, шитоб ё дифоъ ва ғайра) - мо рафтори дилхоҳи AI-ро интихоб мекунем.

Ҳамаи ин усулҳои таълим кофӣ мебошанд, аммо тавсия дода мешавад, ки онҳо дар асоси маълумоти санҷиш истифода шаванд. AI мутобиқ шуданро ба стратегияҳои мухталифе, ки бозигаронатон истифода кардаанд, ёд мегирад. AI, ки пас аз озод шудан ба плеер мутобиқ мешавад, метавонад хеле пешгӯинашаванда ё мағлуб шудан хеле душвор гардад.

Мутобиқшавӣ дар асоси арзиш

Бо назардошти мундариҷаи ҷаҳони бозии мо ва қоидаҳои мо, мо метавонем маҷмӯи арзишҳоеро, ки ба қабули қарор таъсир мерасонанд, иваз кунем, на танҳо истифодаи маълумоти воридотӣ. Мо ин корро мекунем:

  • Бигзор AI маълумотро дар бораи вазъияти ҷаҳон ва рӯйдодҳои калидӣ дар давоми бозӣ ҷамъ кунад (ба тавре ки дар боло).
  • Биёед дар асоси ин маълумот якчанд арзишҳои муҳимро тағир диҳем.
  • Мо қарорҳои худро дар асоси коркард ё арзёбии ин арзишҳо амалӣ мекунем.

Масалан, агент якчанд ҳуҷра дорад, ки дар харитаи тирандозии шахси аввал интихоб карда шавад. Ҳар як ҳуҷра арзиши худро дорад, ки то чӣ андоза матлуб будани ташрифро муайян мекунад. AI ба таври тасодуфӣ интихоб мекунад, ки дар асоси арзиш ба кадом ҳуҷра рафтан лозим аст. Пас агент ба ёд меорад, ки дар кадом ҳуҷра кушта шудааст ва арзиши онро коҳиш медиҳад (эҳтимолияти ба он ҷо баргаштан). Ба ҳамин монанд барои вазъияти баръакс - агар агент рақибони зиёдеро нест кунад, арзиши ҳуҷра меафзояд.

модели Марков

Чӣ мешавад, агар мо маълумоти ҷамъшударо барои пешгӯӣ истифода барем? Агар мо ҳар як ҳуҷраеро дар хотир дорем, ки дар муддати муайян як бозигарро мебинем, мо пешгӯӣ мекунем, ки бозигар метавонад ба кадом ҳуҷра равад. Бо пайгирӣ ва сабт кардани ҳаракатҳои плеер дар саросари ҳуҷраҳо (арзишҳо), мо метавонем онҳоро пешгӯӣ кунем.

Биёед се ҳуҷраро гирем: сурх, сабз ва кабуд. Ва инчунин мушоҳидаҳое, ки мо ҳангоми тамошои сессияи бозӣ сабт кардем:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Шумораи мушоҳидаҳо дар ҳар як ҳуҷра тақрибан баробар аст - мо то ҳол намедонем, ки дар куҷо барои камин ҷои хубе созем. Ҷамъоварии омор инчунин бо дубора таваллуд кардани бозигарон, ки дар тамоми харита баробар пайдо мешаванд, душвор аст. Аммо маълумот дар бораи ҳуҷраи навбатӣ, ки онҳо пас аз пайдо шудан дар харита ворид мешаванд, аллакай муфид аст.

Дидан мумкин аст, ки утоқи сабз ба бозигарон мувофиқ аст - аксари одамон аз ҳуҷраи сурх ба он мегузаранд, 50% онҳо дар он ҷо мемонанд. Ҳуҷраи кабуд, баръакс, маъмул нест; қариб ҳеҷ кас ба он намеравад ва агар онҳо оянд, онҳо дер намемонанд.

Аммо маълумот ба мо чизи муҳимтарро мегӯяд - вақте ки бозигар дар як ҳуҷраи кабуд аст, ҳуҷраи навбатӣ, ки мо ӯро мебинем, сурх хоҳад буд, на сабз. Гарчанде ки ҳуҷраи сабз назар ба ҳуҷраи сурх маъмултар аст, вазъият тағир меёбад, агар плеер дар ҳуҷраи кабуд бошад. Ҳолати навбатӣ (яъне ҳуҷрае, ки плеер ба он меравад) аз ҳолати қаблӣ (яъне ҳуҷрае, ки плеер айни замон дар он аст) вобаста аст. Азбаски мо вобастагиҳоро меомӯзем, мо пешгӯиҳои дақиқтар хоҳем дод, назар ба он ки мо мушоҳидаҳоро мустақилона ҳисоб кунем.

Пешгӯии ҳолати оянда дар асоси маълумот аз ҳолати гузашта модели Марков номида мешавад ва чунин мисолҳо (бо ҳуҷраҳо) занҷирҳои Марков номида мешаванд. Азбаски намунаҳо эҳтимолияти тағиротро байни ҳолатҳои пайдарпай ифода мекунанд, онҳо ба таври визуалӣ ҳамчун FSMs бо эҳтимолият дар атрофи ҳар як гузариш нишон дода мешаванд. Пештар, мо FSM-ро барои муаррифии ҳолати рафторе, ки агент дар он буд, истифода мебурдем, аммо ин консепсия ба ҳама гуна ҳолат дахл дорад, хоҳ он бо агент алоқаманд бошад ё не. Дар ин ҳолат, давлатҳо ҳуҷраеро, ки агент ишғол мекунад, намояндагӣ мекунанд:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ин як роҳи оддии муаррифии эҳтимолияти нисбии тағирёбии ҳолат аст, ки ба AI қобилияти пешгӯии ҳолати оянда медиҳад. Шумо метавонед якчанд қадамҳои пешро пешгӯӣ кунед.

Агар бозигар дар утоқи сабз бошад, эҳтимоли 50% вуҷуд дорад, ки дафъаи оянда вай дар он ҷо мемонад. Аммо чӣ гуна шонсҳо вуҷуд доранд, ки ӯ то ҳол дар он ҷо боқӣ мемонад? На танҳо имкон дорад, ки бозигар пас аз ду мушоҳида дар утоқи сабз бимонад, балки имкон дорад, ки вай тарк карда баргардад. Ин аст ҷадвали нав бо назардошти маълумоти нав:

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон

Ин нишон медиҳад, ки имкони дидани бозигар дар утоқи сабз пас аз ду мушоҳида ба 51% - 21% баробар хоҳад буд, ки ӯ аз утоқи сурх хоҳад буд, 5% аз онҳо, ки бозигар ба ҳуҷраи кабуди байни онҳо ташриф меорад ва 25%, ки плеер ҳуҷраи сабзро тарк намекунад.

Ҷадвал танҳо як воситаи визуалӣ аст - тартиб танҳо зарб кардани эҳтимолиятро дар ҳар як қадам талаб мекунад. Ин маънои онро дорад, ки шумо метавонед бо як огоҳӣ ба ояндаи дур назар андозед: мо тахмин мезанем, ки имкони ворид шудан ба ҳуҷра комилан аз ҳуҷраи ҳозира вобаста аст. Ин моликияти Марков номида мешавад - ҳолати оянда танҳо аз ҳозира вобаста аст. Аммо ин XNUMX% дақиқ нест. Бозингарон метавонанд вобаста ба омилҳои дигар қарорҳоро тағир диҳанд: сатҳи саломатӣ ё миқдори лавозимоти ҷангӣ. Азбаски мо ин арзишҳоро сабт намекунем, пешгӯиҳои мо камтар дақиқ хоҳанд буд.

N-грамм

Дар бораи мисоли бозии ҷангӣ ва пешгӯии ҳаракатҳои комби плеер чӣ гуфтан мумкин аст? Ҳамин гуна! Аммо ба ҷои як ҳолат ё ҳодиса, мо тамоми пайдарпайҳоеро, ки зарбаи комбиро ташкил медиҳанд, баррасӣ хоҳем кард.

Яке аз роҳҳои иҷрои ин нигоҳ доштани ҳар як воридот (ба монанди Kick, Punch ё Block) дар буфер ва навиштани тамоми буфер ҳамчун ҳодиса мебошад. Ҳамин тавр, плеер такроран Kick, Kick, Punch-ро пахш мекунад, то ҳамлаи SuperDeathFist-ро истифода барад, системаи AI тамоми вурудҳоро дар буфер нигоҳ медорад ва се охирини дар ҳар як қадам истифодашударо дар хотир нигоҳ медорад.

Чӣ тавр сохтани AI бозӣ: дастур барои шурӯъкунандагон
(Хатҳои ғафс вақте мебошанд, ки плеер ҳамлаи SuperDeathFist-ро оғоз мекунад.)

Вақте ки плеер Kick-ро интихоб мекунад, AI ҳама имконотро мебинад ва пас аз он кик-и дигарро интихоб мекунад ва пас аҳамият медиҳад, ки вуруди навбатӣ ҳамеша Punch аст. Ин ба агент имкон медиҳад, ки ҳаракати комби SuperDeathFist-ро пешгӯӣ кунад ва агар имконпазир бошад, онро манъ кунад.

Ин пайдарпаии рӯйдодҳоро N-граммаҳо меноманд, ки дар он N шумораи элементҳои захирашуда мебошад. Дар мисоли қаблӣ он 3 грамм (триграмма) буд, ки маънои: ду вуруди аввал барои пешгӯии сеюм истифода мешавад. Мувофиқи он, дар 5 грамм, чор вурудоти аввал панҷум ва ғайраро пешгӯӣ мекунанд.

Дизайнер бояд андозаи N-граммҳоро бодиққат интихоб кунад. N хурдтар хотираи камтарро талаб мекунад, аммо таърихи камтарро нигоҳ медорад. Масалан, 2-грамм (биграмм) Kick, Kick ё Kick, Punch-ро сабт мекунад, аммо наметавонад Kick, Kick, Punch-ро захира кунад, аз ин рӯ AI ба комбои SuperDeathFist ҷавоб намедиҳад.

Аз тарафи дигар, рақамҳои калонтар хотираи бештарро талаб мекунанд ва омӯзиши AI душвортар хоҳад буд, зеро имконоти бештари имконпазир мавҷуданд. Агар шумо се вуруди эҳтимолии Kick, Punch ё Block дошта бошед ва мо 10 граммро истифода мебарем, ин тақрибан 60 ҳазор вариантҳои гуногун хоҳад буд.

Модели биграм як занҷири оддии Марков аст - ҳар як ҷуфти ҳолати гузашта/ҷории як биграм аст ва шумо метавонед ҳолати дуюмро дар асоси аввал пешгӯӣ кунед. N-граммҳои 3-грамм ва калонтарро метавон ҳамчун занҷирҳои Марков баррасӣ кард, ки дар он ҳама элементҳо (ба истиснои элементи охирини N-грамм) якҷоя ҳолати якум ва элементи охиринро ташкил медиҳанд. Намунаи бозии ҷангӣ имкони гузариш аз ҳолати Кик ва Кик ба ҳолати Кик ва Пунчро нишон медиҳад. Бо баррасии вурудоти таърихи вуруди сершумор ҳамчун як воҳиди ягона, мо аслан пайдарпайии вурудро ба як қисми тамоми давлат табдил медиҳем. Ин ба мо моликияти Марков медиҳад, ки ба мо имкон медиҳад, ки занҷирҳои Марковро барои пешгӯии вуруди навбатӣ истифода барем ва фаҳмем, ки ҳаракати комбо дар оянда чӣ мешавад.

хулоса

Мо дар бораи воситаҳо ва равишҳои маъмултарин дар рушди зеҳни сунъӣ сӯҳбат кардем. Мо инчунин вазъиятҳоеро дида баромадем, ки онҳо бояд дар куҷо истифода шаванд ва дар куҷо онҳо махсусан муфиданд.

Ин бояд барои фаҳмидани асосҳои бозии AI кофӣ бошад. Аммо, албатта, ин ҳама усулҳо нестанд. Камтар маъмул, вале на камтар самаранок инҳоянд:

  • алгоритмҳои оптимизатсия, аз ҷумла кӯҳнавардӣ, пастшавии градиент ва алгоритмҳои генетикӣ
  • алгоритмҳои ҷустуҷӯ/нақшаи мухолиф (буридани минимакс ва алфа-бета)
  • усулҳои тасниф (даркиҳо, шабакаҳои нейрон ва мошинҳои вектории дастгирӣ)
  • системаҳои коркарди дарк ва хотираи агентҳо
  • равишҳои меъморӣ ба AI (системаҳои гибридӣ, меъмории зермаҷмӯӣ ва роҳҳои дигари фарогирии системаҳои AI)
  • воситаҳои аниматсия (банақшагирӣ ва ҳамоҳангсозии ҳаракат)
  • омилҳои иҷроиш (сатҳи тафсилот, ҳар вақт ва алгоритмҳои вақт)

Сарчашмаҳои онлайн дар мавзӯъ:

1. GameDev.net дорад бахш бо мақолаҳо ва дастурҳои дарсӣ оид ба AI, инчунин форум.
2. AiGameDev.com дорои презентатсияҳо ва мақолаҳои зиёде дар доираи васеи мавзӯъҳои марбут ба рушди бозии AI мебошад.
3. Vault GDC мавзӯъҳои Саммити GDC AI-ро дар бар мегирад, ки бисёре аз онҳо ройгон дастрасанд.
4. Маводҳои муфидро инчунин дар вебсайт пайдо кардан мумкин аст Гильдияи барномасозони бозии AI.
5. Томми Томпсон, пажӯҳишгари AI ва таҳиягари бозӣ, дар YouTube видео эҷод мекунад AI ва бозиҳо бо тавзеҳот ва омӯзиши AI дар бозиҳои тиҷоратӣ.

Китобҳо дар мавзӯъ:

1. Силсилаи китобҳои Game AI Pro маҷмӯаи мақолаҳои кӯтоҳест, ки тарзи татбиқи хусусиятҳои мушаххас ё чӣ гуна ҳалли мушкилоти мушаххасро шарҳ медиҳанд.

Game AI Pro: Ҷамъоварии ҳикмати мутахассисони Game AI
Game AI Pro 2: Ҳикмати ҷамъоваришудаи мутахассисони AI Game
Game AI Pro 3: Ҳикмати ҷамъоваришудаи мутахассисони AI Game

2. Силсилаи AI Game Programming Wisdom пешгузаштаи силсилаи Game AI Pro мебошад. Он усулҳои кӯҳнаро дар бар мегирад, аммо қариб ҳама имрӯз ҳам мувофиқанд.

Ҳикмати барномасозии бозии AI 1
Ҳикмати барномасозии бозии AI 2
Ҳикмати барномасозии бозии AI 3
Ҳикмати барномасозии бозии AI 4

3. Интеллекти сунъӣ: Равиши муосир яке аз матнҳои асосӣ барои ҳар касе, ки мехоҳад соҳаи умумии зеҳни сунъиро дарк кунад. Ин китоб дар бораи рушди бозӣ нест - он асосҳои AI-ро таълим медиҳад.

Манбаъ: will.com

Илова Эзоҳ