{"id":52118,"date":"2019-11-01T00:00:00","date_gmt":"2019-10-31T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih"},"modified":"2020-02-18T13:59:47","modified_gmt":"2020-02-18T10:59:47","slug":"kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih","title":{"rendered":"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/9e57175b233a104e0df98383b374eded.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKam hasur nj\u00eb material interesant mbi inteligjenc\u00ebn artificiale n\u00eb loj\u00ebra. Me nj\u00eb shpjegim t\u00eb gj\u00ebrave bazike rreth AI n\u00eb shembuj t\u00eb thjesht\u00eb, dhe gjithashtu brenda tij ka shum\u00eb mjete dhe metoda t\u00eb dobishme p\u00ebr zhvillimin dhe projektimin e tij t\u00eb leht\u00eb. Si, ku dhe kur t'i p\u00ebrdor\u00ebsh ato \u2014 gjithashtu p\u00ebrmendet.<\/p>\n<p>Shumica e shembujve jan\u00eb shkruar n\u00eb pseudokod, k\u00ebshtu q\u00eb njohuri t\u00eb thella n\u00eb programim nuk do t\u00eb ken\u00eb nevoj\u00eb. N\u00eb k\u00ebt\u00eb udh\u00ebzues ka 35 faqe teksti me figura dhe gif-e, prandaj p\u00ebrgatituni.<\/p>\n<p>UPD. M\u00eb vjen keq, por kam b\u00ebr\u00eb tashm\u00eb p\u00ebrkthimin e k\u00ebtij artikulli n\u00eb Habra <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/users\/PatientZero\/\">PatientZero<\/a><\/noindex>. Mund ta lexoni versionin e tij <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/420219\/\">k\u00ebtu<\/a><\/noindex>, por p\u00ebr ndonj\u00eb arsyesh arti nuk arriti t\u00eb shoh\u00eb artikullin (kam p\u00ebrdorur k\u00ebrkimin, por di\u00e7ka nuk shkoi mir\u00eb). Dhe duke qen\u00eb se shkruaj n\u00eb nj\u00eb blog q\u00eb i kushtohet zhvillimit t\u00eb loj\u00ebrave, vendosa t\u00eb l\u00eb variantin tim t\u00eb p\u00ebrkthimit p\u00ebr ndjek\u00ebsit (disa momente i kam paraqitur ndryshe, disa \u2014 q\u00ebllimisht t\u00eb l\u00ebna jasht\u00eb sipas k\u00ebshillave t\u00eb zhvilluesve).<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>\u00c7far\u00eb \u00ebsht\u00eb AI?<\/h2>\n<p>\nIA e loj\u00ebs p\u00ebrqendrohet n\u00eb veprimet q\u00eb duhet t\u00eb kryej\u00eb nj\u00eb objekt, n\u00eb p\u00ebrputhje me kushtet n\u00eb t\u00eb cilat ndodhet. Kjo zakonisht quhet menaxhimi i \"agjent\u00ebve inteligjent\u00eb\", ku agjenti \u00ebsht\u00eb nj\u00eb karakter loje, nj\u00eb mjet transporti, nj\u00eb bot, dhe ndonj\u00ebher\u00eb edhe di\u00e7ka m\u00eb abstrakte: nj\u00eb grup i t\u00ebr\u00eb entitetesh ose madje nj\u00eb civilizim. N\u00eb \u00e7do rast, kjo \u00ebsht\u00eb nj\u00eb entitet q\u00eb duhet t\u00eb perceptoj\u00eb mjedisin e tij, t\u00eb marr\u00eb vendime n\u00eb p\u00ebrputhje me t\u00eb dhe t\u00eb veproj\u00eb sipas tyre. Kjo quhet cikli Sense\/Think\/Act (Percepto\/Mendo\/Vepro):<\/p>\n<ul>\n<li>Percepto: agjenti gjen ose merr informacione p\u00ebr gj\u00ebrat n\u00eb mjedisin e tij q\u00eb mund t\u00eb ndikojn\u00eb n\u00eb sjelljen e tij (k\u00ebrc\u00ebnime n\u00eb af\u00ebrsi, objekte p\u00ebr t'u mbledhur, vende interesante p\u00ebr t'u eksploruar).<\/li>\n<li>Mendo: agjenti vendos se si t\u00eb reagoj\u00eb (konsideron n\u00ebse \u00ebsht\u00eb mjaft i sigurt p\u00ebr t\u00eb mbledhur objekte ose n\u00ebse fillimisht duhet t\u00eb luftoj\u00eb\/fshihet).<\/li>\n<li>Vepro: agjenti kryen veprimet p\u00ebr t\u00eb realizuar vendimin e m\u00ebparsh\u00ebm (fillon l\u00ebvizjen drejt armikut ose objektit).<\/li>\n<li>\u2026tani situata ka ndryshuar p\u00ebr shkak t\u00eb veprimeve t\u00eb karaktereve, k\u00ebshtu q\u00eb cikli p\u00ebrs\u00ebritet me t\u00eb dh\u00ebna t\u00eb reja.<\/li>\n<\/ul>\n<p>\nAI zakonisht p\u00ebrqendrohet n\u00eb pjes\u00ebn Sense t\u00eb ciklit. P\u00ebr shembull, automjetet autonome b\u00ebjn\u00eb fotografi t\u00eb rrug\u00ebs, i kombinojn\u00eb ato me t\u00eb dh\u00ebnat e radarit dhe lidarit, dhe interpretojn\u00eb. Kjo zakonisht realizohet nga m\u00ebsimi n\u00eb makin\u00eb, i cili p\u00ebrpunon t\u00eb dh\u00ebnat hyr\u00ebse dhe u jep atyre kuptim, duke nxjerr\u00eb informacion semantik si 'ka nj\u00eb automjet tjet\u00ebr 20 metra p\u00ebrpara jush'. K\u00ebto quhen probleme klasifikimi.<\/p>\n<p>Loj\u00ebrat nuk kan\u00eb nevoj\u00eb p\u00ebr nj\u00eb sistem kompleks p\u00ebr t\u00eb nxjerr\u00eb informacion, pasi shumica e t\u00eb dh\u00ebnave tashm\u00eb jan\u00eb nj\u00eb pjes\u00eb e pandashme e saj. Nuk ka nevoj\u00eb p\u00ebr t\u00eb ekzekutuar algoritme t\u00eb njohjes s\u00eb imazheve p\u00ebr t\u00eb p\u00ebrcaktuar n\u00ebse ka nj\u00eb armik p\u00ebrpara \u2014 loja tashm\u00eb e di dhe e transmeton informacionin direkt n\u00eb procesin e vendimmarrjes. Prandaj, pjesa e ciklit Sense shpesh \u00ebsht\u00eb shum\u00eb m\u00eb e thjesht\u00eb se Think dhe Act.<\/p>\n<h2>Kufizimet e AI n\u00eb loj\u00ebra<\/h2>\n<p>\nAI ka nj\u00eb seri kufizimesh q\u00eb duhet t\u00eb respektohen:<\/p>\n<ul>\n<li>AI nuk ka nevoj\u00eb t\u00eb trajnohet paraprakisht, si\u00e7 \u00ebsht\u00eb nj\u00eb algorit\u00ebm m\u00ebsimi n\u00eb makin\u00eb. Nuk ka asnj\u00eb kuptim t\u00eb shkruani nj\u00eb rrjet neuror gjat\u00eb zhvillimit p\u00ebr t\u00eb v\u00ebzhguar dhjet\u00ebra mij\u00ebra lojtar\u00eb dhe p\u00ebr t\u00eb studiuar m\u00ebnyr\u00ebn m\u00eb t\u00eb mir\u00eb p\u00ebr t\u00eb luajtur p\u00ebrball\u00eb tyre. Pse? Sepse loja nuk \u00ebsht\u00eb l\u00ebshuar dhe lojtar\u00ebt nuk ekzistojn\u00eb.<\/li>\n<li>Loj\u00eb duhet t\u00eb arg\u00ebtoj\u00eb dhe t\u00eb sfidoj\u00eb, k\u00ebshtu q\u00eb agjent\u00ebt nuk duhet t\u00eb gjejn\u00eb qasjen m\u00eb t\u00eb mir\u00eb kund\u00ebr njer\u00ebzve.<\/li>\n<li>Agjent\u00ebt duhet t\u00eb duken realistik\u00eb, n\u00eb m\u00ebnyr\u00eb q\u00eb lojtar\u00ebt t\u00eb ndihen si po luajn\u00eb kund\u00ebr njer\u00ebzve t\u00eb v\u00ebrtet\u00eb. Programi AlphaGo e tejkaloi njeriun, por hapat e zgjedhur ishin shum\u00eb larg kuptimit tradicional t\u00eb loj\u00ebs. N\u00ebse loja imiton nj\u00eb kund\u00ebrshtar njeri, ky ndjenj\u00eb nuk duhet t\u00eb ekzistoj\u00eb. Algoritmi duhet t\u00eb ndryshohet n\u00eb m\u00ebnyr\u00eb q\u00eb ai t\u00eb marr\u00eb vendime t\u00eb besueshme, jo t\u00eb p\u00ebrsosura.<\/li>\n<li>AI duhet t\u00eb funksionoj\u00eb n\u00eb koh\u00eb reale. K\u00ebto do t\u00eb thot\u00eb se algorizmat nuk mund ta monopolizojn\u00eb p\u00ebrdorimin e procesorit p\u00ebr nj\u00eb periudh\u00eb t\u00eb gjat\u00eb p\u00ebr t\u00eb marr\u00eb vendime. Edhe 10 milisekonda p\u00ebr k\u00ebt\u00eb \u00ebsht\u00eb shum\u00eb gjat\u00eb, sepse shumic\u00ebs s\u00eb loj\u00ebrave u nevojiten nga 16 deri n\u00eb 33 milisekonda p\u00ebr t\u00eb p\u00ebrfunduar gjith\u00eb p\u00ebrpunimin dhe p\u00ebr t'u kaluar n\u00eb kadrin tjet\u00ebr t\u00eb grafik\u00ebs.<\/li>\n<li>Ideale \u00ebsht\u00eb q\u00eb t\u00eb pakt\u00ebn nj\u00eb pjes\u00eb e sistemit t\u00eb menaxhohet nga t\u00eb dh\u00ebnat, n\u00eb m\u00ebnyr\u00eb q\u00eb 'jo-koder\u00ebt' t\u00eb mund t\u00eb b\u00ebjn\u00eb ndryshime dhe q\u00eb rregullimet t\u00eb ndodhin m\u00eb shpejt.<\/li>\n<\/ul>\n<p>\nLe t\u00eb shqyrtojm\u00eb qasjet e AI q\u00eb p\u00ebrfshijn\u00eb t\u00eb gjith\u00eb ciklin Sense\/Think\/Act.<\/p>\n<h3>Marrja e vendimeve themelore<\/h3>\n<p>\nT\u00eb fillojm\u00eb me nj\u00eb loj\u00eb t\u00eb thjesht\u00eb \u2014 Pong. Q\u00ebllimi: t\u00eb l\u00ebviz\u00ebsh platform\u00ebn (paddle) n\u00eb m\u00ebnyr\u00eb q\u00eb topi t\u00eb riciklohet prej saj dhe t\u00eb mos kaloj\u00eb p\u00ebrtej. \u00cbsht\u00eb si tenis, n\u00eb t\u00eb cilin humb kur nuk e godet topin. K\u00ebtu AI ka nj\u00eb detyr\u00eb relativisht t\u00eb leht\u00eb \u2014 t\u00eb vendos\u00eb se n\u00eb cilin drejtim t\u00eb l\u00ebviz\u00eb platform\u00ebn.<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/e1935d657b9f090bf60c365c21e8f92b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Operator\u00ebt conditional<\/h3>\n<p>\nP\u00ebr AI n\u00eb Pong ka nj\u00eb zgjidhje shum\u00eb t\u00eb dukshme \u2014 t\u00eb p\u00ebrpiqet gjithmon\u00eb ta vendos\u00eb platform\u00ebn n\u00ebn topin.<\/p>\n<p>Nj\u00eb algorit\u00ebm i thjesht\u00eb p\u00ebr k\u00ebt\u00eb, i shkruar n\u00eb pseudokod:<\/p>\n<p><i>\u00e7do korniz\u00eb\/aktualizim nd\u00ebrsa loja \u00ebsht\u00eb duke u zhvilluar:<br \/>\nn\u00ebse topi \u00ebsht\u00eb n\u00eb t\u00eb majt\u00eb t\u00eb paddle-it:<br \/>\n l\u00ebviz paddle-in n\u00eb t\u00eb majt\u00eb<br \/>\nndryshe n\u00ebse topi \u00ebsht\u00eb n\u00eb t\u00eb djatht\u00eb t\u00eb paddle-it:<br \/>\n l\u00ebviz paddle-in n\u00eb t\u00eb djatht\u00eb<\/i><\/p>\n<p>N\u00ebse platforma l\u00ebviz me shpejt\u00ebsin\u00eb e topit, at\u00ebher\u00eb ky \u00ebsht\u00eb algoritmi ideal p\u00ebr AI n\u00eb Pong. Nuk \u00ebsht\u00eb nevoja t\u00eb komplikohet, n\u00ebse t\u00eb dh\u00ebnat dhe veprimet e mundshme p\u00ebr agjentin nuk jan\u00eb aq shum\u00eb.<\/p>\n<p>Ky qasje \u00ebsht\u00eb kaq e thjesht\u00eb, saq\u00eb e gjith\u00eb cikli Sense\/Think\/Act \u00ebsht\u00eb thuajse i paduksh\u00ebm. Por ai ekziston:<\/p>\n<ul>\n<li>Pjesa Sense \u00ebsht\u00eb n\u00eb dy operator\u00ebt if. Loja e di ku \u00ebsht\u00eb topi dhe ku \u00ebsht\u00eb platforma, k\u00ebshtu q\u00eb AI i referohet asaj p\u00ebr k\u00ebt\u00eb informacion. <\/li>\n<li>Pjesa Think gjithashtu \u00ebsht\u00eb p\u00ebrfshir\u00eb n\u00eb dy operator\u00eb if. Ata p\u00ebrfaq\u00ebsojn\u00eb dy zgjidhje, t\u00eb cilat n\u00eb k\u00ebt\u00eb rast jan\u00eb p\u00ebrjashtuese nj\u00ebra-tjetr\u00ebs. Si rezultat, zgjidhet nj\u00eb nga tre veprimet \u2014 t\u00eb zhvendos\u00ebsh platform\u00ebn majtas, t\u00eb zhvendos\u00ebsh djathtas, ose t\u00eb mos b\u00ebsh asgj\u00eb n\u00ebse ajo \u00ebsht\u00eb tashm\u00eb e pozicionuar si\u00e7 duhet.<\/li>\n<li>Pjesa Act ndodhet n\u00eb operator\u00ebt Move Paddle Left dhe Move Paddle Right. N\u00eb var\u00ebsi t\u00eb dizajnit t\u00eb loj\u00ebs, ata mund t\u00eb zhvendosin platform\u00ebn menj\u00ebher\u00eb ose me nj\u00eb shpejt\u00ebsi t\u00eb caktuar. <\/li>\n<\/ul>\n<p>\nQasje t\u00eb tilla quhen reaguese \u2014 ka nj\u00eb set t\u00eb thjesht\u00eb rregullash (n\u00eb k\u00ebt\u00eb rast operator\u00ebt if n\u00eb kod), t\u00eb cilat reagojn\u00eb ndaj gjendjes aktuale t\u00eb bot\u00ebs dhe veprojn\u00eb.<\/p>\n<h3>Pema e vendimeve<\/h3>\n<p>\nShembulli me loj\u00ebn Pong n\u00eb fakt \u00ebsht\u00eb i barabart\u00eb me konceptin formal t\u00eb AI, t\u00eb quajtur pema e vendimeve. Algoritmi kalon p\u00ebrmes saj p\u00ebr t\u00eb arritur n\u00eb 'gjethe' \u2014 nj\u00eb vendim se cila veprim duhen marr\u00eb.<\/p>\n<p>Le t\u00eb b\u00ebjm\u00eb nj\u00eb diagram t\u00eb pem\u00ebs s\u00eb vendimeve p\u00ebr algoritmin e platform\u00ebs son\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/d3b7290ba93144967cd849416cd5eef3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c7do pjes\u00eb e pem\u00ebs quhet node (nyj\u00eb) \u2014 AI p\u00ebrdor teorin\u00eb e graf\u00ebve p\u00ebr t\u00eb p\u00ebrshkruar struktura t\u00eb tilla. Ka dy lloje nyjash:<\/p>\n<ul>\n<li>Nodet e vendimmarrjes: zgjedhja midis dy alternativave bazuar n\u00eb verifikimin e nj\u00eb kushti t\u00eb caktuar, ku secila alternativ\u00eb paraqitet si nj\u00eb nod i ve\u00e7ant\u00eb.<\/li>\n<li>Nodet p\u00ebrfundimtare: veprimi p\u00ebr t\u00eb realizuar, q\u00eb paraqet vendimin p\u00ebrfundimtar.<\/li>\n<\/ul>\n<p>\nAlgoritmi fillon nga nodi i par\u00eb (\"rr\u00ebnja\" e pem\u00ebs). Ai ose merr nj\u00eb vendim se n\u00eb cilin nod t\u00eb bir\u00ebsuar t\u00eb kaloj\u00eb, ose ekzekuton veprimin q\u00eb ndodhet n\u00eb nod dhe p\u00ebrfundon.<\/p>\n<p>Cila \u00ebsht\u00eb p\u00ebrpar\u00ebsia, n\u00ebse pema e vendimmarrjes, b\u00ebn t\u00eb nj\u00ebjt\u00ebn pun\u00eb si operator\u00ebt if n\u00eb seksionin e m\u00ebparsh\u00ebm? K\u00ebtu ka nj\u00eb sistem t\u00eb p\u00ebrbashk\u00ebt, ku \u00e7do vendim ka vet\u00ebm nj\u00eb kusht dhe dy rezultate t\u00eb mundshme. Kjo i mund\u00ebson zhvilluesit t\u00eb krijoj\u00eb AI nga t\u00eb dh\u00ebnat q\u00eb p\u00ebrfaq\u00ebsojn\u00eb vendimet n\u00eb pem\u00eb, duke shmangur kodimin e tij t\u00eb fort\u00eb. T\u00eb imagjinojm\u00eb n\u00eb form\u00eb tabelari:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/6875293a60ff9d0efa26fb5e1aa4b21c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNga ana e kodit, ju do t\u00eb merrni nj\u00eb sistem p\u00ebr leximin e rreshtave. Krijoni nj\u00eb nyj\u00eb p\u00ebr secilin prej tyre, lidhni logjik\u00ebn e vendimmarrjes bazuar n\u00eb kolon\u00ebn e dyt\u00eb dhe nyjat f\u00ebmij\u00eb bazuar n\u00eb kolonat tre dhe kat\u00ebr. Ju ende duhet t\u00eb programoni kushtet dhe veprimet, por tani struktura e loj\u00ebs do t\u00eb jet\u00eb m\u00eb komplekse. N\u00eb t\u00eb, ju shtoni vendime dhe veprime t\u00eb tjera, pastaj konfiguroni t\u00eb gjith\u00eb AI-n\u00eb duke redaktuar thjesht skedarin tekstor me definimin e pem\u00ebs. M\u00eb pas, transferoni skedarin te dizajneri i loj\u00ebs, i cili do t\u00eb jet\u00eb n\u00eb gjendje t\u00eb ndryshoj\u00eb sjelljen pa rikompilimin e loj\u00ebs dhe ndryshimin e kodit.<\/p>\n<p>Pem\u00ebt e vendimmarrjes jan\u00eb shum\u00eb t\u00eb dobishme kur nd\u00ebrttohen automatikisht n\u00eb baz\u00eb t\u00eb nj\u00eb grupi t\u00eb madh shembujsh (p.sh., duke p\u00ebrdorur algoritmin ID3). Kjo i b\u00ebn ato nj\u00eb mjet efikas dhe me performanc\u00eb t\u00eb lart\u00eb p\u00ebr klasifikimin e situatave bazuar n\u00eb t\u00eb dh\u00ebnat e marra. Megjithat\u00eb, ne dalim p\u00ebrtej nj\u00eb sistemi t\u00eb thjesht\u00eb p\u00ebr zgjedhjen e veprimeve nga agjent\u00ebt.<\/p>\n<h3>Scenar\u00ebt<\/h3>\n<p>\nNe kemi shqyrtuar sistemin e pem\u00ebs s\u00eb vendimeve, i cili p\u00ebrdorte kushte dhe veprime t\u00eb krijuara m\u00eb par\u00eb. Njeriu q\u00eb projektin inteligjenc\u00ebn artificiale mund ta organizoj\u00eb pem\u00ebn si t\u00eb doj\u00eb, por ai ende duhet t\u00eb mb\u00ebshtetet te programuesi q\u00eb e ka programuar at\u00eb. \u00c7far\u00eb n\u00ebse do mund t'i ofronim dizajnerit mjete p\u00ebr t\u00eb krijuar kushtet apo veprimet e tij t\u00eb veta?<\/p>\n<p>P\u00ebr t\u00eb shmangur q\u00eb programuesi t\u00eb shkruaj\u00eb kod p\u00ebr kushtet Is Ball Left Of Paddle dhe Is Ball Right Of Paddle, ai mund t\u00eb krijoj\u00eb nj\u00eb sistem n\u00eb t\u00eb cilin dizajneri do t\u00eb regjistroj\u00eb kushtet p\u00ebr t\u00eb verifikuar k\u00ebto vlera. At\u00ebher\u00eb t\u00eb dh\u00ebnat e pem\u00ebs s\u00eb vendimeve do t\u00eb duken k\u00ebshtu:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/8e77f7c3410d097e8b7d8e1209355cc6.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb thelb, kjo \u00ebsht\u00eb e nj\u00ebjt\u00eb si n\u00eb tabel\u00ebn e par\u00eb, por zgjidhjet brenda vetes kan\u00eb kodin e tyre, i cili ngjason pak me pjes\u00ebn kushtore t\u00eb operatorit if. N\u00eb an\u00ebn e kodit, kjo do t\u00eb lexohej n\u00eb kolon\u00ebn e dyt\u00eb p\u00ebr nyjet e vendimit, por p\u00ebrve\u00e7se t\u00eb k\u00ebrkoj\u00eb nj\u00eb kusht t\u00eb caktuar p\u00ebr t\u00eb ekzekutuar (A \u00ebsht\u00eb topi majtas nga paddle), ajo vler\u00ebson shprehjen kushtore dhe kthen true ose false p\u00ebrkat\u00ebsisht. Kjo b\u00ebhet me gjuh\u00ebt e skriptimit Lua ose Angelscript. Me to, zhvilluesi mund t\u00eb marr\u00eb objektet n\u00eb loj\u00ebn e tij (topi dhe paddle) dhe t\u00eb krijoj\u00eb variabla q\u00eb do t\u00eb jen\u00eb t\u00eb disponueshme n\u00eb skenar (topi. pozita). P\u00ebr m\u00eb tep\u00ebr, gjuha e skriptimit \u00ebsht\u00eb m\u00eb e thjesht\u00eb se C++. Ajo nuk k\u00ebrkon nj\u00eb faz\u00eb t\u00eb plot\u00eb kompilimi, prandaj \u00ebsht\u00eb ideale p\u00ebr korigjimin e shpejt\u00eb t\u00eb logjik\u00ebs loj\u00eb dhe lejon \u201cnon-koduesit\u201d t\u00eb krijojn\u00eb funksionet e nevojshme vet\u00eb.<\/p>\n<p>N\u00eb shembullin e dh\u00ebn\u00eb, gjuha e skriptimit p\u00ebrdoret vet\u00ebm p\u00ebr t\u00eb vler\u00ebsuar shprehjen kushtore, por mund t\u00eb p\u00ebrdoret gjithashtu p\u00ebr veprime. P\u00ebr shembull, t\u00eb dh\u00ebnat Move Paddle Right mund t\u00eb b\u00ebhen nj\u00eb operator skenari (topi. pozita.x += 10). K\u00ebshtu, q\u00eb veprimi gjithashtu t\u00eb p\u00ebrcaktohej n\u00eb skript, pa nevoj\u00ebn p\u00ebr programimin e Move Paddle Right.<\/p>\n<p>Mund\u00eb t\u00eb shkojm\u00eb edhe m\u00eb larg dhe t\u00eb shkruajm\u00eb plot\u00ebsisht nj\u00eb pem\u00eb vendimesh n\u00eb nj\u00eb gjuh\u00eb skenar\u00ebsh. Kjo do t\u00eb jet\u00eb kod n\u00eb form\u00ebn e operator\u00ebve t\u00eb kushtit t\u00eb programuar ngusht (hardcoded), por ata do t\u00eb jen\u00eb n\u00eb skedar\u00eb t\u00eb jasht\u00ebm skenari, dometh\u00ebn\u00eb mund t\u00eb ndryshohen pa kompilimin e t\u00eb gjith\u00eb programit. Shpesh mund t\u00eb ndryshoni skedarin e skenarit pik\u00ebrisht gjat\u00eb loj\u00ebs p\u00ebr t\u00eb testuar shpejt reagimet e ndryshme t\u00eb AI-s\u00eb.<\/p>\n<h3>Reagimi ndaj ngjarjeve<\/h3>\n<p>\nShembujt m\u00eb sip\u00ebr p\u00ebrshtaten perfekt me Pong. Ata vazhdimisht drejtojn\u00eb nj\u00eb cik\u00ebl Sense\/Think\/Act dhe veprojn\u00eb n\u00eb baz\u00eb t\u00eb gjendjes m\u00eb t\u00eb fundit t\u00eb bot\u00ebs. Por n\u00eb loj\u00ebra m\u00eb komplekse, \u00ebsht\u00eb e nevojshme t\u00eb reagohet ndaj ngjarjeve t\u00eb ve\u00e7anta, dhe jo t\u00eb vler\u00ebsohet gjith\u00e7ka nj\u00ebkoh\u00ebsisht. Pong n\u00eb k\u00ebt\u00eb rast nuk \u00ebsht\u00eb m\u00eb nj\u00eb shembull i mir\u00eb. Le t\u00eb zgjedhim nj\u00eb tjet\u00ebr. <\/p>\n<p>Imagjinoni nj\u00eb loj\u00eb q\u00ebllimi, ku armiqt\u00eb q\u00ebndrojn\u00eb t\u00eb pal\u00ebvizur derisa t\u00eb zbulojn\u00eb lojtarin, pas s\u00eb cil\u00ebs veprojn\u00eb n\u00eb var\u00ebsi t\u00eb \"specializimit\" t\u00eb tyre: dikush do t\u00eb nxitoj\u00eb t\u00eb sulmoj\u00eb, dikush tjet\u00ebr do t\u00eb sulmoj\u00eb nga larg. Kjo \u00ebsht\u00eb ende nj\u00eb sistem reagues themelor \u2014 \"n\u00ebse lojtari \u00ebsht\u00eb v\u00ebrejtur, at\u00ebher\u00eb b\u00ebj di\u00e7ka\" \u2014 por mund t\u00eb ndahet n\u00eb m\u00ebnyr\u00eb logjike n\u00eb ngjarje q\u00eb jan\u00eb V\u00ebreni Lojtarin (Player Seen) dhe reagimin (zgjidhni nj\u00eb p\u00ebrgjigje dhe realizoni at\u00eb).<\/p>\n<p>Kjo na kthen te cikli Sense\/Think\/Act. Ne mund t\u00eb kodifikojm\u00eb pjes\u00ebn Sense, e cila \u00e7do \u00e7ast do t\u00eb kontrolleoje \u2014 a e sheh AI lojtarin. N\u00ebse jo \u2014 nuk ndodhin asgj\u00eb, por n\u00ebse e sheh, krijohet nj\u00eb ngjarje Player Seen. Kodi do t\u00eb ket\u00eb nj\u00eb seksion t\u00eb ve\u00e7ant\u00eb q\u00eb thot\u00eb: \"kur ndodh ngjarja Player Seen, b\u00ebj \", ku - \u00ebsht\u00eb p\u00ebrgjigja q\u00eb ju nevojitet p\u00ebr t\u00eb arritur n\u00eb pjes\u00ebt Think dhe Act. K\u00ebshtu, do t\u00eb konfiguroni reagimet ndaj ngjarjes Player Seen: p\u00ebr nj\u00eb karakter \"t\u00eb ngjitur\" \u2014 ChargeAndAttack, dhe p\u00ebr nj\u00eb sniper \u2014 HideAndSnipe. K\u00ebto lidhje mund t\u00eb krijohen n\u00eb nj\u00eb skedar t\u00eb dh\u00ebnash p\u00ebr redaktim t\u00eb shpejt\u00eb pa e nevojitur riparimin e kodit. Po ashtu, k\u00ebtu mund t\u00eb p\u00ebrdoret nj\u00eb gjuh\u00eb skenar\u00ebsh.<\/p>\n<h2>Marrja e vendimeve t\u00eb komplikuara<\/h2>\n<p>\nSistemat e thjeshta t\u00eb reagimeve jan\u00eb shum\u00eb efektive, por ndodhin shum\u00eb situata ku ato nuk mjaftojn\u00eb. N sometimes duhet t\u00eb marrim vendime t\u00eb ndryshme n\u00eb baz\u00eb t\u00eb asaj q\u00eb agjenti po b\u00ebn n\u00eb momentin aktual, por \u00ebsht\u00eb e v\u00ebshtir\u00eb t\u00eb paraqitet si nj\u00eb kusht. N sometimes ka shum\u00eb kushte p\u00ebr t\u00eb paraqitur efektivisht n\u00eb nj\u00eb pem\u00eb vendimesh ose skenar\u00eb. N sometimes duhet t\u00eb vler\u00ebsojm\u00eb paraprakisht se si do t\u00eb ndryshoj\u00eb situata, p\u00ebrpara se t\u00eb marrim nj\u00eb vendim p\u00ebr hapat e m\u00ebpassh\u00ebm. P\u00ebr t\u00eb zgjidhur k\u00ebto probleme, jan\u00eb t\u00eb nevojshme qasje m\u00eb t\u00eb komplikuara.<\/p>\n<h3>Makin\u00eb gjendjeje e p\u00ebrfunduar<\/h3>\n<p>\nMakin\u00eb gjendjeje e p\u00ebrfunduar ose FSM (automati i p\u00ebrfunduar) \u00ebsht\u00eb nj\u00eb m\u00ebnyr\u00eb p\u00ebr t\u00eb th\u00ebn\u00eb se agjenti yn\u00eb aktualisht ndodhet n\u00eb nj\u00eb nga disa gjendje t\u00eb mundshme dhe se ai mund t\u00eb kaloj\u00eb nga nj\u00eb gjendje n\u00eb tjetr\u00ebn. Ka nj\u00eb num\u00ebr t\u00eb caktuar t\u00eb k\u00ebtyre gjendjeve, prandaj quhet k\u00ebshtu. Nj\u00eb shembull m\u00eb i mir\u00eb nga jeta \u00ebsht\u00eb semafori. N\u00eb vende t\u00eb ndryshme ka renditje t\u00eb ndryshme dritash, por principi mbetet i nj\u00ebjt\u00eb - \u00e7do gjendje paraqet di\u00e7ka (ndalu, shko, etj.). Semafori \u00ebsht\u00eb vet\u00ebm n\u00eb nj\u00eb gjendje n\u00eb \u00e7do moment, dhe kalon nga nj\u00ebra n\u00eb tjetr\u00ebn bazuar n\u00eb rregulla t\u00eb thjeshta.<\/p>\n<p>Me NPC-t n\u00eb loj\u00ebra ndodhet nj\u00eb histori e ngjashme. P\u00ebr shembull, t\u00eb marrim rojen me k\u00ebto gjendje:<\/p>\n<ul>\n<li>Patrullues (Patrolling).<\/li>\n<li>Sulmues (Attacking).<\/li>\n<li>Ik\u00ebs (Fleeing).<\/li>\n<\/ul>\n<p>\nDhe me k\u00ebto kushte p\u00ebr t\u00eb ndryshuar gjendjen e tij:<\/p>\n<ul>\n<li>N\u00ebse roja sheh armikun, ai sulmon.<\/li>\n<li>N\u00ebse roja sulmon, por nuk sheh m\u00eb armikun e tij, ai kthehet n\u00eb patrullim.<\/li>\n<li>N\u00ebse roja sulmon, por \u00ebsht\u00eb r\u00ebnd\u00eb i plagosur, ai ik\u00ebn.<\/li>\n<\/ul>\n<p>\nGjithashtu, \u00ebsht\u00eb e mundur t\u00eb shkruani if-operator\u00ebt me variabl\u00ebn-gjendje t\u00eb roj\u00ebs dhe kontrollet e ndryshme: a ka ndonj\u00eb armik n\u00eb af\u00ebrsi, \u00e7far\u00eb niveli sh\u00ebndeti ka NPC-ja etj. Shtojm\u00eb disa gjendje t\u00eb tjera:<\/p>\n<ul>\n<li>P\u00ebrgjegj\u00ebs (Idling) \u2014 nd\u00ebrmjet patrullave.<\/li>\n<li>K\u00ebrkim (Searching) \u2014 kur armiku i par\u00eb i duksh\u00ebm \u00ebsht\u00eb fshehur.<\/li>\n<li>K\u00ebrkesa p\u00ebr ndihm\u00eb (Finding Help) \u2014 kur armiku \u00ebsht\u00eb v\u00ebrejtur, por \u00ebsht\u00eb shum\u00eb i fort\u00eb p\u00ebr t'u p\u00ebrballur vet\u00ebm.<\/li>\n<\/ul>\n<p>\nZgjedhja p\u00ebr secilin prej tyre \u00ebsht\u00eb e kufizuar \u2014 p\u00ebr shembull, roja nuk do t\u00eb shkoj\u00eb t\u00eb k\u00ebrkoj\u00eb armikun e fshehur, n\u00ebse ka sh\u00ebndet t\u00eb ul\u00ebt.<\/p>\n<p>N&euml; fund t&euml; fundit, nj&euml; list&euml; e madhe &quot;n&euml;se &lt;x \u0438 y, \u043d\u043e \u043d\u0435 z&gt;, at&euml;her&euml; &lt;p&gt;&quot; mund t&euml; b&euml;het shum&euml; e r&euml;nd&euml;, prandaj &euml;sht&euml; e nevojshme t&euml; formizohet nj&euml; metod&euml; q&euml; do t&euml; na lejoj&euml; t&euml; mbajm&euml; mend shtetet dhe kalimet midis shteteve. P&euml;r ta b&euml;r&euml; k&euml;t&euml;, do t&euml; marrim parasysh t&euml; gjitha shtetet dhe n&euml;n secilin shtet do t&euml; shkruajm&euml; n&euml; list&euml; t&euml; gjitha kalimet n&euml; shtete t&euml; tjera, s&euml; bashku me kushtet e nevojshme p&euml;r to.<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/ba4c401aa20de3d22d2478cba5a4b1ec.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKjo \u00ebsht\u00eb tabela e kalimeve t\u00eb gjendjeve \u2014 nj\u00eb m\u00ebnyr\u00eb kompleks p\u00ebr t\u00eb paraqitur FSM. Le t\u00eb vizatojm\u00eb nj\u00eb diagram dhe t\u00eb kemi nj\u00eb pasqyr\u00eb t\u00eb plot\u00eb se si ndryshon sjellja e NPC.<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/b4182359983cf573872dacc575af13dc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDiagrami pasqyron thelbin e vendimmarrjes p\u00ebr k\u00ebt\u00eb agent n\u00eb baz\u00eb t\u00eb situat\u00ebs aktuale. \u00c7do arrow tregon kalimin nd\u00ebrmjet gjendjeve, n\u00ebse kushti af\u00ebr saj \u00ebsht\u00eb i v\u00ebrtet\u00eb.<\/p>\n<p>Me \u00e7do p\u00ebrdit\u00ebsim ne kontrollojm\u00eb gjendjen aktuale t\u00eb agentit, shqyrtojm\u00eb list\u00ebn e kalimeve, dhe n\u00ebse kushtet p\u00ebr kalim jan\u00eb plot\u00ebsuar, ai merr nj\u00eb gjendje t\u00eb re. P\u00ebr shembull, \u00e7do korniz\u00eb kontrollet n\u00ebse 10-sekond\u00ebshi timer ka skaduar dhe n\u00ebse po, at\u00ebher\u00eb nga gjendja Idling, agjenti kalon n\u00eb Patrolling. N\u00eb t\u00eb nj\u00ebjt\u00ebn m\u00ebnyr\u00eb, gjendja Attacking kontrollon sh\u00ebndetin e agentit \u2014 n\u00ebse \u00ebsht\u00eb e ul\u00ebt, ai kalon n\u00eb gjendjen Fleeing.<\/p>\n<p>Kjo \u00ebsht\u00eb p\u00ebrpunimi i kalimeve nd\u00ebrmjet gjendjeve, por si lidhur me sjelljen q\u00eb lidhet me vet\u00eb gjendjet? Sa i p\u00ebrket zbatimit t\u00eb sjelljes faktike p\u00ebr nj\u00eb gjendje specifike, zakonisht ekzistojn\u00eb dy lloje \"hook\"-esh, ku ne i caktojm\u00eb veprimet n\u00eb FSM:<\/p>\n<ul>\n<li>Veprimet q\u00eb ne i realizojm\u00eb periodikisht p\u00ebr gjendjen aktuale.<\/li>\n<li>Veprimet q\u00eb ne nd\u00ebrmarrim kur kalojm\u00eb nga nj\u00eb gjendje n\u00eb nj\u00eb tjet\u00ebr.<\/li>\n<\/ul>\n<p>\nShembuj p\u00ebr llojin e par\u00eb. Shtimi Patrolling \u00e7do kad\u00ebr do t\u00eb l\u00ebviz\u00eb agjentin n\u00ebp\u00ebr rrug\u00ebn e patrullimit. Shtimi Attacking \u00e7do kad\u00ebr do t\u00eb p\u00ebrpiqet t\u00eb filloj\u00eb nj\u00eb sulm ose t\u00eb kaloj\u00eb n\u00eb nj\u00eb gjendje kur kjo \u00ebsht\u00eb e mundur.<\/p>\n<p>P\u00ebr llojin e dyt\u00eb, le t\u00eb shqyrtojm\u00eb kalimin \"n\u00ebse armiku \u00ebsht\u00eb i duksh\u00ebm dhe armiku \u00ebsht\u00eb shum\u00eb i fort\u00eb, at\u00ebher\u00eb kaloni n\u00eb gjendjen Finding Help. Agjenti duhet t\u00eb zgjedh\u00eb se ku t\u00eb shkoj\u00eb p\u00ebr ndihm\u00eb dhe t\u00eb ruaj\u00eb k\u00ebt\u00eb informacion, n\u00eb m\u00ebnyr\u00eb q\u00eb gjendja Finding Help t\u00eb di ku t\u00eb drejtohet. Pasi t\u00eb jet\u00eb gjetur ndihma, agjenti kthehet n\u00eb gjendjen Attacking. N\u00eb k\u00ebt\u00eb moment, ai do t\u00eb d\u00ebshiroj\u00eb t\u00eb tregoj\u00eb aleatit p\u00ebr k\u00ebrc\u00ebnimin, prandaj mund t\u00eb ndodh\u00eb veprimi NotifyFriendOfThreat.<\/p>\n<p>Dhe p\u00ebrs\u00ebri, ne mund ta shikojm\u00eb k\u00ebt\u00eb sistem p\u00ebrmes ciklit Sense\/Think\/Act. Sense shprehet n\u00eb t\u00eb dh\u00ebnat e p\u00ebrdorura nga logjika e kalimit. Think \u2013 kalimet q\u00eb jan\u00eb t\u00eb disponueshme n\u00eb \u00e7do gjendje. Nd\u00ebrsa Act realizohet nga veprimet q\u00eb kryhen n\u00eb m\u00ebnyr\u00eb periodike brenda gjendjes ose n\u00eb kalimet mes gjendjeve.<\/p>\n<p>Ndonj\u00ebher\u00eb, pyetjet e vazhdueshme t\u00eb kushteve t\u00eb kalimit mund t\u00eb jen\u00eb t\u00eb kushtueshme. P\u00ebr shembull, n\u00ebse \u00e7do agjent do t\u00eb kryej\u00eb llogaritje komplekse \u00e7do \u00e7ast p\u00ebr t\u00eb p\u00ebrcaktuar n\u00ebse sheh armiq dhe p\u00ebr t\u00eb kuptuar n\u00ebse mund t\u00eb kaloj\u00eb nga gjendja Patrolling n\u00eb Attacking \u2014 do t\u00eb k\u00ebrkoj\u00eb shum\u00eb koh\u00eb procesori. <\/p>\n<p>Ndryshimet e r\u00ebnd\u00ebsishme n\u00eb gjendjen e bot\u00ebs mund t\u00eb konsiderohen si ngjarje q\u00eb do t\u00eb trajtohen nd\u00ebrsa shfaqen. N\u00eb vend q\u00eb FSM t\u00eb kontrolloj\u00eb \u00e7do \u00e7ast kushtin e kalimit 'mund ta shoh agjenti lojtarin?', mund t\u00eb konfigurohet nj\u00eb sistem i ve\u00e7ant\u00eb p\u00ebr t\u00eb b\u00ebr\u00eb kontrolle m\u00eb pak shpesh (p.sh., 5 her\u00eb n\u00eb sekond\u00eb). Rezultati do t\u00eb jet\u00eb 'Player Seen' kur kontrolli kalon. <\/p>\n<p>Kjo kalon n\u00eb FSM, e cila tani duhet t\u00eb kaloj\u00eb n\u00eb kushtin 'Player Seen event received' dhe t\u00eb reagoj\u00eb p\u00ebrkat\u00ebsisht. S\u00eb fundmi, sjellja \u00ebsht\u00eb e nj\u00ebjt\u00eb p\u00ebrve\u00e7 nj\u00eb vonese pothuajse t\u00eb pandjeshme para p\u00ebrgjigjes. Megjithat\u00eb, performanca \u00ebsht\u00eb p\u00ebrmir\u00ebsuar p\u00ebr shkak t\u00eb ndarjes s\u00eb pjes\u00ebs s\u00eb Dijen n\u00eb nj\u00eb pjes\u00eb t\u00eb ve\u00e7ant\u00eb t\u00eb programit.<\/p>\n<h3>Hierarchical finite state machine<\/h3>\n<p>\nMegjithat\u00eb, punimi me FSM t\u00eb m\u00ebdha nuk \u00ebsht\u00eb gjithmon\u00eb i leht\u00eb. N\u00ebse d\u00ebshirojm\u00eb t\u00eb zgjasim gjendjen e sulmit duke e z\u00ebvend\u00ebsuar at\u00eb me MeleeAttacking (sulmi n\u00eb af\u00ebrsi) dhe RangedAttacking (sulmi n\u00eb distanc\u00eb), do t\u00eb duhet t\u00eb ndryshojm\u00eb kalimet nga t\u00eb gjitha gjendjet e tjera q\u00eb \u00e7ojn\u00eb n\u00eb gjendjen Attacking (sulmi aktual dhe t\u00eb ardhsh\u00ebm).<\/p>\n<p>Sigurisht q\u00eb keni v\u00ebn\u00eb re se n\u00eb shembullin ton\u00eb ka shum\u00eb kalime t\u00eb p\u00ebrs\u00ebritura. Shumica e kalimeve n\u00eb gjendjen Idling jan\u00eb identike me kalimet n\u00eb gjendjen Patrolling. Do t\u00eb ishte mir\u00eb t\u00eb mos p\u00ebrs\u00ebrisnim, ve\u00e7an\u00ebrisht n\u00ebse shtojm\u00eb m\u00eb shum\u00eb gjendje t\u00eb ngjashme. Ka kuptim t\u00eb grupojm\u00eb Idling dhe Patrolling n\u00ebn nj\u00eb etiket\u00eb t\u00eb p\u00ebrbashk\u00ebt \"jo-komb\u00ebtare\", ku ka vet\u00ebm nj\u00eb grup t\u00eb p\u00ebrbashk\u00ebt kalimesh n\u00eb gjendje luftarake. N\u00ebse e imagjinoni k\u00ebt\u00eb etiket\u00eb si nj\u00eb gjendje, at\u00ebher\u00eb Idling dhe Patrolling do t\u00eb b\u00ebhen n\u00ebn-gjendje. Nj\u00eb shembull i p\u00ebrdorimit t\u00eb nj\u00eb tabele kalimesh t\u00eb ve\u00e7ant\u00eb p\u00ebr nj\u00eb n\u00ebn-gjendje t\u00eb re jo-komb\u00ebtare:<\/p>\n<p><i>Gjendjet kryesore:<\/i><br \/>\n<img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/d86dd918acbe81b9bf22c2fb34aecee3.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n<i>Gjendja jasht\u00eb luftimeve:<\/i><br \/>\n<img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/9d5bc2053010a32c5f68d7f0192c04ed.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDhe n\u00eb form\u00ebn e diagramit:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/0ccf95ecafa9ce2a6ea5b5b9833ddc4f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKjo \u00ebsht\u00eb e nj\u00ebjta sistem, por me nj\u00eb gjendje t\u00eb re jo-luftarake q\u00eb p\u00ebrfshin Idling dhe Patrolling. \u00c7do gjendje p\u00ebrmban nj\u00eb FSM me n\u00ebn-gjendje (dhe k\u00ebto n\u00ebn-gjendje, nga ana e tyre, p\u00ebrmbajn\u00eb FSM t\u00eb veta \u2014 dhe k\u00ebshtu me radh\u00eb, sipas nevoj\u00ebs), duke na ofruar nj\u00eb Hierarchical Finite State Machine ose HFSM (makina p\u00ebrfundimtare hierarkike). Duke grupuar gjendjen jo-luftarake, ne eliminojm\u00eb nj\u00eb mori kalimesh t\u00eb tep\u00ebrta. E nj\u00ebjta gj\u00eb mund t\u00eb b\u00ebhet p\u00ebr \u00e7do gjendje t\u00eb re me kalime t\u00eb p\u00ebrbashk\u00ebta. P\u00ebr shembull, n\u00ebse n\u00eb t\u00eb ardhmen ne zgjeron gjendjen Attacking n\u00eb gjendjet MeleeAttacking dhe MissileAttacking, ato do t\u00eb jen\u00eb n\u00ebn-gjendje q\u00eb kalojn\u00eb mes nj\u00ebra-tjetr\u00ebs n\u00eb baz\u00eb t\u00eb distanc\u00ebs ndaj armikut dhe disponueshm\u00ebris\u00eb s\u00eb municionit. N\u00eb p\u00ebrfundim, modelet komplekse t\u00eb sjelljes dhe n\u00ebn-modelet e sjelljes mund t\u00eb p\u00ebrfaq\u00ebsohen me nj\u00eb minimum t\u00eb kalimeve t\u00eb dyfishuara.<\/p>\n<h3>Pema e sjelljeve<\/h3>\n<p>\nMe HFSM krijohen kombinime komplekse t\u00eb sjelljes n\u00eb nj\u00eb m\u00ebnyr\u00eb t\u00eb thjesht\u00eb. Megjithat\u00eb, ka nj\u00eb v\u00ebshtir\u00ebsi t\u00eb vog\u00ebl, q\u00eb marrja e vendimeve n\u00eb form\u00ebn e rregullave t\u00eb kalimit \u00ebsht\u00eb ngusht\u00ebsisht e lidhur me gjendjen aktuale. Dhe n\u00eb shum\u00eb loj\u00ebra, kjo \u00ebsht\u00eb pik\u00ebrisht ajo q\u00eb nevojitet. Nj\u00eb p\u00ebrdorim i kujdessh\u00ebm i hierarkis\u00eb s\u00eb gjendjeve mund t\u00eb reduktoj\u00eb numrin e p\u00ebrs\u00ebritjeve gjat\u00eb kalimit. Por ndonj\u00ebher\u00eb k\u00ebrkohen rregulla q\u00eb punojn\u00eb pavar\u00ebsisht se n\u00eb cil\u00ebn gjendje jeni ose q\u00eb aplikohen pothuajse n\u00eb \u00e7do gjendje. P\u00ebr shembull, n\u00ebse sh\u00ebndeti i agjentit bie n\u00eb 25%, do t\u00eb d\u00ebshironi q\u00eb ai t\u00eb ik\u00eb pavar\u00ebsisht n\u00ebse ka qen\u00eb n\u00eb luft\u00eb, \u00ebsht\u00eb duke e kaluar koh\u00ebn ose po bisedon \u2014 do t'ju duhet ta shtoni k\u00ebt\u00eb kusht n\u00eb \u00e7do gjendje. Dhe n\u00ebse dizajneri juaj m\u00eb von\u00eb do t\u00eb d\u00ebshiroj\u00eb t\u00eb ndryshoj\u00eb pragun e sh\u00ebndetit t\u00eb ul\u00ebt nga 25% n\u00eb 10%, at\u00ebher\u00eb do t\u00eb duhen trajtuar p\u00ebrs\u00ebri k\u00ebto \u00e7\u00ebshtje.<\/p>\n<p>N\u00eb p\u00ebrkryer, p\u00ebr k\u00ebt\u00eb situat\u00eb, nevojitet nj\u00eb sistem ku vendimet \u00abn\u00eb cil\u00ebn gjendje t\u00eb jeni\u00bb jan\u00eb jasht\u00eb vet\u00eb gjendjeve, q\u00eb t\u00eb b\u00ebni ndryshime vet\u00ebm n\u00eb nj\u00eb vend dhe t\u00eb mos preken kushtet e kalimit. K\u00ebtu paraqiten pem\u00ebt e sjelljes.<\/p>\n<p>Ka existen disa m\u00ebnyra p\u00ebr t'i realizuar ato, por thelbi p\u00ebr t\u00eb gjitha \u00ebsht\u00eb m\u00eb shum\u00eb i nj\u00ebjt\u00eb dhe ngjason me nj\u00eb pem\u00eb vendimmarrjeje: algoritmi fillon nga nodi \"rr\u00ebnj\u00ebsor\", dhe n\u00eb pem\u00eb ka node q\u00eb p\u00ebrfaq\u00ebsojn\u00eb ose vendime, ose veprime. Megjithat\u00eb, ka disa dallime ky\u00e7e:<\/p>\n<ul>\n<li>Tani nodet kthejn\u00eb nj\u00eb nga tre vlera: Suksesi (n\u00ebse puna \u00ebsht\u00eb kryer), D\u00ebshtimi (n\u00ebse nuk mund t\u00eb fillohet) ose Duke u ekzekutuar (n\u00ebse \u00ebsht\u00eb ende n\u00eb proces dhe nuk ka rezultat p\u00ebrfundimtar).<\/li>\n<li>Nuk ka m\u00eb node vendimesh p\u00ebr t\u00eb zgjedhur midis dy alternativash. N\u00eb vend t\u00eb tyre jan\u00eb node Decorator, t\u00eb cilat kan\u00eb nj\u00eb nod t\u00eb vet\u00ebm f\u00ebmij\u00eb. N\u00ebse ata jan\u00eb t\u00eb Succes, atjer\u00eb kryejn\u00eb nodin e tyre t\u00eb vet\u00ebm f\u00ebmij\u00eb.<\/li>\n<li>Node q\u00eb kryejn\u00eb veprime kthejn\u00eb vler\u00ebn Duke u ekzekutuar p\u00ebr t\u00eb p\u00ebrfaq\u00ebsuar veprimet q\u00eb po kryhen.<\/li>\n<\/ul>\n<p>\nKy grup i vog\u00ebl nodesh mund t\u00eb mblidhet p\u00ebr t\u00eb krijuar nj\u00eb num\u00ebr t\u00eb madh modelesh t\u00eb komplikuara t\u00eb sjelljes. Le t\u00eb paraqesim HFSM-n\u00eb e rojes nga shembulli i m\u00ebparsh\u00ebm si nj\u00eb pem\u00eb sjelljeje:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/5eaa5c725e4ada8285f16f95bb206d53.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMe k\u00ebt\u00eb struktur\u00eb, nuk duhet t\u00eb ket\u00eb kalime t\u00eb qarta nga gjendjet Idling\/Patrolling n\u00eb gjendjen Attacking ose n\u00eb ndonj\u00eb tjet\u00ebr. N\u00ebse armiku \u00ebsht\u00eb n\u00eb pamje dhe sh\u00ebndeti i personazhit \u00ebsht\u00eb i ul\u00ebt, ekzekutimi do t\u00eb ndaloj\u00eb n\u00eb nyj\u00ebn Fleeing, pavar\u00ebsisht nga cila nyje ai kishte ekzekutuar m\u00eb par\u00eb \u2014 Patrolling, Idling, Attacking ose ndonj\u00eb tjet\u00ebr.<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/e1c1dcc2055174aa7cfa846364b1709a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPem\u00ebt e sjelljeve jan\u00eb t\u00eb komplikuara \u2014 ka shum\u00eb m\u00ebnyra p\u00ebr t'i nd\u00ebrtuar ato, dhe gjetja e kombinimit t\u00eb duhur t\u00eb dekorator\u00ebve dhe nyjave p\u00ebrb\u00ebr\u00ebse mund t\u00eb jet\u00eb problematike. Ka gjithashtu pyetje se sa shpesh duhet t\u00eb kontrollojm\u00eb pem\u00ebn \u2014 duam ta kalojm\u00eb at\u00eb n\u00eb \u00e7do pjes\u00eb apo vet\u00ebm kur nj\u00eb nga kushtet ndryshon? Si t\u00eb ruajm\u00eb gjendjen q\u00eb i p\u00ebrket nyjeve \u2014 si t\u00eb dijm\u00eb kur kemi qen\u00eb n\u00eb gjendjen Idling p\u00ebr 10 sekonda ose si t\u00eb dijm\u00eb cilat nyje jan\u00eb ekzekutuar her\u00ebn e kaluar, p\u00ebr t\u00eb p\u00ebrpunuar sakt\u00eb sekuenc\u00ebn?<\/p>\n<p>Pik\u00ebrisht p\u00ebr k\u00ebt\u00eb arsye ekzistojn\u00eb shum\u00eb realizime. P\u00ebr shembull, n\u00eb disa sisteme, nyjat dekorator jan\u00eb z\u00ebvend\u00ebsuar nga dekorator\u00eb t\u00eb integruar. Ata rishikojn\u00eb pem\u00ebn kur ndryshojn\u00eb kushtet e dekorator\u00ebve, ndihmojn\u00eb p\u00ebr t'u lidhur me nyjat dhe sigurojn\u00eb p\u00ebrdit\u00ebsime periodike.<\/p>\n<h3>Sistemi i bazuar n\u00eb utilitete<\/h3>\n<p>\nDisa lojra kan\u00eb nj\u00eb shum\u00ebllojshm\u00ebri mekanikash. \u00cbsht\u00eb e d\u00ebshirueshme q\u00eb ato t\u00eb p\u00ebrfitojn\u00eb nga rregullat e thjeshta dhe t\u00eb p\u00ebrgjithshme t\u00eb kalimit, por nuk \u00ebsht\u00eb domosdoshm\u00ebrisht n\u00eb formatin e nj\u00eb peme t\u00eb plot\u00eb t\u00eb sjelljeve. N\u00eb vend q\u00eb t\u00eb kemi nj\u00eb grup t\u00eb qart\u00eb zgjedhjesh ose nj\u00eb pem\u00eb veprimesh t\u00eb mundshme, \u00ebsht\u00eb m\u00eb e leht\u00eb t\u00eb studiojm\u00eb t\u00eb gjitha veprimet dhe t\u00eb zgjedhim at\u00eb m\u00eb t\u00eb p\u00ebrshtatshmin n\u00eb momentin e duhur.<\/p>\n<p>Sistemi i bazuar n\u00eb p\u00ebrfitim (utility-based system) \u00ebsht\u00eb pik\u00ebrisht ajo q\u00eb ndihmon n\u00eb k\u00ebt\u00eb pasth\u00ebnie. Ky \u00ebsht\u00eb nj\u00eb sistem ku agjenti ka shum\u00eb veprime, dhe ai vet\u00eb zgjedh cilin t\u00eb kryej\u00eb, duke u bazuar n\u00eb p\u00ebrfitimin relativ t\u00eb secilit. Ku p\u00ebrfitimi \u00ebsht\u00eb nj\u00eb mas\u00eb arbitrare e r\u00ebnd\u00ebsis\u00eb apo d\u00ebshirueshm\u00ebris\u00eb s\u00eb kryerjes s\u00eb k\u00ebtij veprimi p\u00ebr agjentin. <\/p>\n<p>Duke t\u00eb p\u00ebrdorimit t\u00eb veprimit t\u00eb llogaritur n\u00eb baz\u00eb t\u00eb gjendjes aktuale dhe mjedisit, agjenti mund t\u00eb kontrolloj\u00eb dhe t\u00eb zgjedh\u00eb n\u00eb \u00e7do moment gjendjen m\u00eb t\u00eb p\u00ebrshtatshme tjet\u00ebr. Kjo ngjan me FSM, p\u00ebrve\u00e7 faktit se kalimet p\u00ebrcaktohen nga vler\u00ebsimi p\u00ebr \u00e7do gjendje t\u00eb mundshme, duke p\u00ebrfshir\u00eb edhe at\u00eb aktuale. Vini re se ne zgjedhim veprimin m\u00eb t\u00eb dobish\u00ebm p\u00ebr t\u00eb kaluar (ose q\u00ebndrojm\u00eb, n\u00ebse tashm\u00eb e kemi realizuar). P\u00ebr m\u00eb shum\u00eb larmi, kjo mund t\u00eb jet\u00eb nj\u00eb zgjedhje e peshuar, por rast\u00ebsore nga nj\u00eb list\u00eb e vog\u00ebl.<\/p>\n<p>Sistemi cakton nj\u00eb gam\u00eb t\u00eb rast\u00ebsishme t\u00eb vlerave t\u00eb dobishm\u00ebris\u00eb - p\u00ebr shembull, nga 0 (e pad\u00ebshirueshme) deri n\u00eb 100 (plot\u00ebsisht e d\u00ebshirueshme). \u00c7do veprim ka nj\u00eb s\u00ebr\u00eb parametrash q\u00eb ndikojn\u00eb n\u00eb llogaritjen e k\u00ebsaj vler\u00eb. Duke u kthyer n\u00eb shembullin ton\u00eb me rojen:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/085fb2c197bde93d78455d18e63c9c25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nKalimet e kalimit midis veprimeve jan\u00eb t\u00eb paqart\u00eb \u2014 \u00e7do gjendje mund t\u00eb pasoj\u00eb \u00e7far\u00ebdo tjet\u00ebr. Prioritetet e veprimeve jan\u00eb n\u00eb vlerat e kthyera t\u00eb dobishm\u00ebris\u00eb. N\u00ebse armiku \u00ebsht\u00eb i duksh\u00ebm dhe ky armik \u00ebsht\u00eb i fort\u00eb, nd\u00ebrsa sh\u00ebndeti i karakterit \u00ebsht\u00eb i ul\u00ebt, at\u00ebher\u00eb si Fleeing ashtu edhe FindingHelp do t\u00eb kthejn\u00eb vlera t\u00eb larta t\u00eb pafundis\u00eb. Megjithat\u00eb, FindingHelp gjithmon\u00eb do t\u00eb jet\u00eb m\u00eb lart\u00eb. Po ashtu, veprimet jo-luftarake kurr\u00eb nuk kthejn\u00eb m\u00eb shum\u00eb se 50, k\u00ebshtu q\u00eb ato gjithmon\u00eb do t\u00eb jen\u00eb m\u00eb t\u00eb ulta se veprimet luftarake. Kjo duhet t\u00eb merret parasysh kur krijoni veprime dhe llogaritni dobishm\u00ebrin\u00eb e tyre.<\/p>\n<p>N\u00eb shembullin ton\u00eb, veprimet kthejn\u00eb ose nj\u00eb vler\u00eb konstante t\u00eb fiksuar, ose nj\u00eb nga dy vlerat e fiksuara. Nj\u00eb sistem m\u00eb realistik parashikon kthimin e nj\u00eb vler\u00ebs nga nj\u00eb gam\u00eb t\u00eb vazhdueshme vlerash. P\u00ebr shembull, veprimi Fleeing kthen vlera m\u00eb t\u00eb larta t\u00eb dobis\u00eb n\u00ebse sh\u00ebndeti i agjentit \u00ebsht\u00eb i ul\u00ebt, nd\u00ebrsa veprimi Attacking kthen vlera m\u00eb t\u00eb ulta n\u00ebse armiku \u00ebsht\u00eb shum\u00eb i fort\u00eb. P\u00ebr k\u00ebt\u00eb arsye, veprimi Fleeing ka p\u00ebrpar\u00ebsi mbi Attacking n\u00eb \u00e7do situat\u00eb kur agjenti ndjen se nuk ka mjaft sh\u00ebndet p\u00ebr t\u00eb fituar mbi kund\u00ebrshtarin. Kjo lejon t\u00eb ndryshojn\u00eb prioriteteve t\u00eb veprimeve n\u00eb baz\u00eb t\u00eb nj\u00eb numri kriteresh, duke e b\u00ebr\u00eb k\u00ebt\u00eb qasje m\u00eb fleksib\u00ebl dhe variabile se sa nj\u00eb pem\u00eb sjelljeje ose FSM.<\/p>\n<p>\u00c7do veprim ka shum\u00eb kushte p\u00ebr llogaritjen e programit. Ato mund t\u00eb shkruhen n\u00eb nj\u00eb gjuh\u00eb skenari ose si nj\u00eb seri formulash matematikore. N\u00eb The Sims, e cila modelon rutin\u00ebn ditor t\u00eb personazhit, shtohet nj\u00eb nivel shtes\u00eb llogaritjesh \u2014 agjenti merr nj\u00eb s\u00ebr\u00eb \"motivacionesh\" q\u00eb ndikojn\u00eb n\u00eb vler\u00ebsimet e dobishm\u00ebris\u00eb. N\u00ebse personazhi \u00ebsht\u00eb i uritur, me kalimin e koh\u00ebs do t\u00eb ket\u00eb nj\u00eb urie m\u00eb t\u00eb madhe dhe rezultati i dobishm\u00ebris\u00eb s\u00eb veprimit EatFood do t\u00eb rritet derisa personazhi ta p\u00ebrmbush\u00eb at\u00eb, duke ulur nivelin e uris\u00eb dhe duke e kthyer vler\u00ebn EatFood n\u00eb zero. <\/p>\n<p>Ideja e zgjedhjes s\u00eb veprimeve mbi baz\u00ebn e nj\u00eb sistemi vler\u00ebsimi \u00ebsht\u00eb mjaft e thjesht\u00eb, prandaj sistemi i bazuar n\u00eb dobi mund t\u00eb p\u00ebrdoret si pjes\u00eb e proceseve t\u00eb vendimmarrjes s\u00eb AI-s\u00eb, e jo si nj\u00eb z\u00ebvend\u00ebsim i plot\u00eb p\u00ebr to. Nj\u00eb pem\u00eb vendimmarrje mund t\u00eb k\u00ebrkoj\u00eb nj\u00eb vler\u00ebsim t\u00eb dobishm\u00ebris\u00eb t\u00eb dy node-ve t\u00eb saj f\u00ebmij\u00eb dhe t\u00eb zgjedh\u00eb at\u00eb me m\u00eb t\u00eb lart\u00eb. N\u00eb t\u00eb nj\u00ebjt\u00ebn m\u00ebnyr\u00eb, nj\u00eb pem\u00eb sjelljeje mund t\u00eb ket\u00eb nj\u00eb nod t\u00eb p\u00ebrb\u00ebr\u00eb Utility p\u00ebr vler\u00ebsimin e dobishm\u00ebris\u00eb s\u00eb veprimeve, p\u00ebr t\u00eb vendosur se cilin element t\u00eb f\u00ebmij\u00ebs t\u00eb ekzekutoj\u00eb.<\/p>\n<h2>L\u00ebvizja dhe navigimi<\/h2>\n<p>\nN\u00eb shembujt e m\u00ebparsh\u00ebm kishim nj\u00eb platform\u00eb q\u00eb l\u00ebviznim majtas ose djathtas, dhe nj\u00eb roje q\u00eb patrullonte ose sulmonte. Por si e trajtojm\u00eb l\u00ebvizjen e agjentit p\u00ebr nj\u00eb periudh\u00eb t\u00eb caktuar kohe? Si e vendosim shpejt\u00ebsin\u00eb, si shmangim pengesat, dhe si planifikojm\u00eb rrug\u00ebn kur arritja n\u00eb destinacion \u00ebsht\u00eb m\u00eb e komplikuar se sa thjesht t\u00eb l\u00ebviz\u00ebsh n\u00eb vij\u00eb t\u00eb drejtp\u00ebrdrejt\u00eb? Le t\u00eb shqyrtojm\u00eb k\u00ebt\u00eb.<\/p>\n<h3>Menaxhimi<\/h3>\n<p>\nN\u00eb fillim, le t\u00eb supozojm\u00eb se \u00e7do agjent ka nj\u00eb vler\u00eb shpejt\u00ebsie, e cila p\u00ebrfshin sa shpejt ai l\u00ebviz dhe n\u00eb \u00e7far\u00eb drejtimi. Ajo mund t\u00eb matet n\u00eb metra n\u00eb sekond\u00eb, kilometra n\u00eb or\u00eb, pikselet n\u00eb sekond\u00eb, etj. Duke e mbajtur mend ciklin Sense\/Think\/Act, ne mund ta imagjinojm\u00eb se nj\u00eb pjes\u00eb e Think zgjat shpejt\u00ebsin\u00eb, nd\u00ebrsa nj\u00eb pjes\u00eb e Act e aplikon k\u00ebt\u00eb shpejt\u00ebsi te agjenti. Zakonisht, n\u00eb loj\u00ebra ka nj\u00eb sistem fizik q\u00eb e b\u00ebn k\u00ebt\u00eb p\u00ebr ju, duke studiuar vler\u00ebn e shpejt\u00ebsis\u00eb s\u00eb \u00e7do objekti dhe duke e rregulluar at\u00eb. Prandaj, mund t'i l\u00ebm\u00eb AI nj\u00eb detyr\u00eb \u2014 t\u00eb vendos\u00eb se sa shpejt\u00ebsi duhet t\u00eb ket\u00eb agjenti. N\u00ebse dihet se ku duhet t\u00eb jet\u00eb agjenti, at\u00ebher\u00eb duhet ta zhvendosim at\u00eb n\u00eb drejtimin e duhur me nj\u00eb shpejt\u00ebsi t\u00eb caktuar. Nj\u00eb ekuacion shum\u00eb trivial:<\/p>\n<p><i>desired_travel = destination_position \u2013 agent_position<\/i><\/p>\n<p>Imagjinoni nj\u00eb bot\u00eb 2D. Agenti ndodhet n\u00eb pik\u00ebn (-2,-2), destinacioni ndodhet diku n\u00eb verilindje n\u00eb pik\u00ebn (30, 20), dhe rruga e nevojshme p\u00ebr agjentin q\u00eb t\u00eb arrij\u00eb atje \u00ebsht\u00eb (32, 22). Le t\u00eb supozojm\u00eb se k\u00ebto pozita maten n\u00eb metra \u2014 n\u00ebse e konsiderojm\u00eb shpejt\u00ebsin\u00eb e agentit si 5 metra n\u00eb sekond\u00eb, at\u00ebher\u00eb ne do ta skaluar vektorin ton\u00eb t\u00eb l\u00ebvizjes dhe do t\u00eb marrim nj\u00eb shpejt\u00ebsi af\u00ebrsisht (4.12, 2.83). Me k\u00ebto parametra, agjenti do t\u00eb arrinte n\u00eb destinacion pas pothuajse 8 sekondash.<\/p>\n<p>Vlerat mund t\u00eb llogariten n\u00eb \u00e7do koh\u00eb. N\u00ebse agjenti ishte n\u00eb gjysm\u00eb t\u00eb rrug\u00ebs drejt q\u00ebllimit, l\u00ebvizja do t\u00eb ishte gjysma e gjat\u00ebsi, por p\u00ebr shkak se shpejt\u00ebsia maksimale e agentit \u00ebsht\u00eb 5 m\/s (ne e kemi vendosur k\u00ebt\u00eb m\u00eb lart), shpejt\u00ebsia do t\u00eb jet\u00eb e nj\u00ebjt\u00eb. Kjo funksionon gjithashtu p\u00ebr q\u00ebllimet q\u00eb l\u00ebvizin, duke i lejuar agentit t\u00eb b\u00ebj\u00eb disa ndryshime t\u00eb vogla nd\u00ebrsa ato l\u00ebvizin.<\/p>\n<p>Por k\u00ebt\u00eb arsye, ne duam m\u00eb shum\u00eb variacion \u2014 p\u00ebr shembull, t\u00eb rritet ngadal\u00eb shpejt\u00ebsia p\u00ebr t\u00eb simuluar nj\u00eb karakter q\u00eb l\u00ebviz nga nj\u00eb pozite q\u00ebndruese n\u00eb nj\u00eb pozite vrapimi. E nj\u00ebjta gj\u00eb mund t\u00eb b\u00ebhet edhe n\u00eb fund p\u00ebrpara ndales\u00ebs. K\u00ebto funksionalitete njihen si sjellje drejtimi, secila prej t\u00eb cilave ka emra t\u00eb ve\u00e7ant\u00eb: Seek (k\u00ebrkim), Flee (ikje), Arrival (mb\u00ebrritje) etj. Ideja \u00ebsht\u00eb se forcat e ndryshe mund t\u00eb aplikohen n\u00eb shpejt\u00ebsin\u00eb e agentit, duke u bazuar n\u00eb krahasimin e pozicionit t\u00eb agentit dhe shpejt\u00ebsis\u00eb s\u00eb tij aktuale me destinacionin, p\u00ebr t\u00eb p\u00ebrdorur m\u00ebnyra t\u00eb ndryshme p\u00ebr t\u00eb arritur q\u00ebllimin.<\/p>\n<p>\u00c7do sjellje ka nj\u00eb q\u00ebllim pak t\u00eb ndrysh\u00ebm. Seek dhe Arrival jan\u00eb m\u00ebnyra p\u00ebr t\u00eb zhvendosur agjentin drejt destinacionit. Obstacle Avoidance (shmangia e pengesave) dhe Separation (ndarje) korrigjojn\u00eb l\u00ebvizjen e agjentit p\u00ebr t\u00eb shmangur pengesat n\u00eb rrug\u00ebn drejt q\u00ebllimit. Alignment (ngjashm\u00ebria) dhe Cohesion (kohezioni) e mbajn\u00eb agjent\u00ebt s\u00eb bashku gjat\u00eb l\u00ebvizjes. Nj\u00eb num\u00ebr i ndrysh\u00ebm sjelljesh mund t\u00eb p\u00ebrzihen p\u00ebr t\u00eb marr\u00eb nj\u00eb vektor rrug\u00eb q\u00eb merr parasysh t\u00eb gjitha faktor\u00ebt. Nj\u00eb agjent q\u00eb p\u00ebrdor sjelljet Arrival, Separation dhe Obstacle Avoidance p\u00ebr t\u00eb q\u00ebndruar larg mureve dhe agjent\u00ebve t\u00eb tjer\u00eb. Ky qasje funksionon mir\u00eb n\u00eb lokacione t\u00eb hapura pa shum\u00eb detaje. <\/p>\n<p>N\u00eb kushte m\u00eb t\u00eb v\u00ebshtira, p\u00ebrzierja e sjelljeve t\u00eb ndryshme funksionon m\u00eb keq \u2014 p.sh., agjenti mund t\u00eb ngec\u00eb n\u00eb mur p\u00ebr shkak t\u00eb konfliktit midis Arrival dhe Obstacle Avoidance. Prandaj, \u00ebsht\u00eb e nevojshme t\u00eb shqyrtohen mund\u00ebsit\u00eb q\u00eb jan\u00eb m\u00eb t\u00eb komplikuara se thjesht p\u00ebrzierja e t\u00eb gjitha vlerave. Nj\u00eb m\u00ebnyr\u00eb \u00ebsht\u00eb: n\u00eb vend t\u00eb p\u00ebrzierjes s\u00eb rezultateve t\u00eb \u00e7do sjelljeje, mund t\u00eb shqyrtojm\u00eb l\u00ebvizjen n\u00eb drejtime t\u00eb ndryshme dhe t\u00eb zgjedhim mund\u00ebsin\u00eb m\u00eb t\u00eb mir\u00eb. <\/p>\n<p>Megjithat\u00eb, n\u00eb nj\u00eb mjedis t\u00eb komplikuar me kaloje dhe zgjedhje p\u00ebr t\u00eb shkuar n\u00eb cil\u00ebn drejtim, na nevojitet di\u00e7ka akoma m\u00eb e avancuar.<\/p>\n<h3>K\u00ebrkimi i rrug\u00ebs<\/h3>\n<p>\nSjelljet drejtuese jan\u00eb t\u00eb p\u00ebrshtatshme p\u00ebr l\u00ebvizjen e thjesht\u00eb n\u00eb terrene t\u00eb hapura (si fusha futbolli ose arena), ku t\u00eb arrish nga A n\u00eb B \u00ebsht\u00eb nj\u00eb rrug\u00eb e drejtp\u00ebrdrejt\u00eb me disa devijime rreth pengesave. P\u00ebr rrug\u00eb t\u00eb nd\u00ebrlikuara, na nevojitet gjurmimi i rrug\u00ebs (pathfinding), q\u00eb \u00ebsht\u00eb nj\u00eb m\u00ebnyr\u00eb p\u00ebr t\u00eb eksploruar bot\u00ebn dhe p\u00ebr t\u00eb marr\u00eb vendime rreth rrug\u00ebs p\u00ebrmes saj.<\/p>\n<p>M\u00ebnyra m\u00eb e thjesht\u00eb \u00ebsht\u00eb t\u00eb aplikoni nj\u00eb rrjet mbi \u00e7do katror pran\u00eb agjentit dhe t\u00eb vler\u00ebsoni n\u00eb cilat nga ata lejohet t\u00eb l\u00ebvizni. N\u00ebse ndonj\u00eb nga ata \u00ebsht\u00eb destinacioni, at\u00ebher\u00eb ndiqni rrug\u00ebn nga \u00e7do katror deri te ai q\u00eb e ka paraprir\u00eb, deri sa t\u00eb arrini fillimin. Kjo \u00ebsht\u00eb rruga. N\u00eb t\u00eb kund\u00ebrt, p\u00ebrs\u00ebritni procesin me katror\u00ebt m\u00eb t\u00eb af\u00ebrt derisa t\u00eb gjeni destinacionin ose t\u00eb p\u00ebrfundojn\u00eb katror\u00ebt (kjo do t\u00eb thot\u00eb se nuk ka asnj\u00eb rrug\u00eb t\u00eb mundshme). Kjo \u00ebsht\u00eb ajo q\u00eb formalisht njihet si K\u00ebrkimi n\u00eb Gjer\u00ebsi ose BFS (algoritmi i k\u00ebrkimit n\u00eb gjer\u00ebsi). N\u00eb \u00e7do hap ai shikon n\u00eb t\u00eb gjitha drejtimet (prandaj gjer\u00ebsia). Hapsira e k\u00ebrkimit \u00ebsht\u00eb si nj\u00eb front vale q\u00eb l\u00ebviz derisa t\u00eb arrij\u00eb vendin e k\u00ebrkuar \u2014 zona e k\u00ebrkimit zgjeron n\u00eb \u00e7do hap derisa t\u00eb arrij\u00eb pik\u00ebn p\u00ebrfundimtare, pas s\u00eb cil\u00ebs \u00ebsht\u00eb e mundur t\u00eb ndjekim rrug\u00ebn deri n\u00eb fillim.<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/d367e62bc53033b05388538649853a41.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi rezultat, do t\u00eb merrni nj\u00eb list\u00eb katror\u00ebsh, sipas t\u00eb cil\u00ebve p\u00ebrgatitet rruga e nevojshme. Kjo \u00ebsht\u00eb rruga (nga k\u00ebtu, pathfinding) \u2014 lista e vendeve q\u00eb agjenti do t\u00eb vizitoj\u00eb duke ndjekur n\u00eb destinacion.<\/p>\n<p>Duke se t\u00eb dim\u00eb pozitat e \u00e7do katrori n\u00eb bot\u00eb, mund t\u00eb p\u00ebrdorim sjelljet e drejtuara p\u00ebr t\u00eb l\u00ebvizur n\u00eb rrug\u00eb \u2014 nga nyja 1 n\u00eb nyj\u00ebn 2, pastaj nga nyja 2 n\u00eb nyj\u00ebn 3 dhe k\u00ebshtu me radh\u00eb. Variante m\u00eb e thjesht\u00eb \u00ebsht\u00eb t\u00eb shkohet drejt qendr\u00ebs s\u00eb katrorit t\u00eb ardhsh\u00ebm, por edhe m\u00eb mir\u00eb \u00ebsht\u00eb t\u00eb ndaloni n\u00eb mes t\u00eb skajit midis katrorit aktual dhe atij tjet\u00ebr. P\u00ebr k\u00ebt\u00eb arsye, agjenti do t\u00eb jet\u00eb n\u00eb gjendje t\u00eb p\u00ebrdor\u00eb k\u00ebndet n\u00eb kthesat e thella.<\/p>\n<p>Algoritmi BFS ka edhe disavantazhe \u2014 ai eksploron aq katror\u00eb n\u00eb drejtimin \"e gabuar\" sa n\u00eb \"t\u00eb duhurin\". K\u00ebtu paraqitet nj\u00eb algorit\u00ebm m\u00eb t\u00eb nd\u00ebrlikuar t\u00eb quajtur A* (A yll). Ai funksionon gjithashtu, por n\u00eb vend q\u00eb t\u00eb studioj\u00eb verb\u00ebrisht katror\u00ebt fqinj (pastaj fqinj\u00ebt e fqinj\u00ebve, pastaj fqinj\u00ebt e fqinj\u00ebve t\u00eb fqinj\u00ebve dhe k\u00ebshtu me radh\u00eb), ai mbledh nyjet n\u00eb nj\u00eb list\u00eb dhe i rendit ato n\u00eb m\u00ebnyr\u00eb q\u00eb nyja e ardhshme e studiuar gjithmon\u00eb t\u00eb jet\u00eb ajo q\u00eb do t\u00eb \u00e7oj\u00eb n\u00eb rrug\u00ebn m\u00eb t\u00eb shkurt\u00ebr. Nyjet renditen duke u bazuar n\u00eb nj\u00eb heuristik\u00eb q\u00eb merr parasysh dy gj\u00ebra \u2014 \"kostot\" e rrug\u00ebs hipotike drejt katrorit t\u00eb d\u00ebshiruar (duke p\u00ebrfshir\u00eb \u00e7do kostot p\u00ebr l\u00ebvizje) dhe nj\u00eb vler\u00ebsim se sa larg \u00ebsht\u00eb ky katror nga destinacioni (duke i orientuar k\u00ebrkimin n\u00eb drejtimin e duhur).<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/1cab4f53fa5af6b31d352c7bcf453d7e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKy ky\u00e7 \u00ebsht\u00eb nj\u00eb shembull ku agjenti eksploron nj\u00eb katror n\u00eb nj\u00ebher\u00eb, duke zgjedhur \u00e7do her\u00eb fqinj t\u00eb cil\u00ebt jan\u00eb m\u00eb premtues. Rruga e marr\u00eb \u00ebsht\u00eb e nj\u00ebjt\u00eb me at\u00eb t\u00eb BFS, por gjat\u00eb procesit jan\u00eb shqyrtuar m\u00eb pak katror\u00eb \u2014 dhe kjo ka nj\u00eb r\u00ebnd\u00ebsi t\u00eb madhe p\u00ebr performanc\u00ebn e loj\u00ebs.<\/p>\n<h3>L\u00ebvizja pa grid\u00eb<\/h3>\n<p>\nPor shumica e loj\u00ebrave nuk jan\u00eb t\u00eb vendosura n\u00eb nj\u00eb grid\u00eb, dhe shpesh \u00ebsht\u00eb e pamundur t\u00eb krijohet nj\u00eb pa d\u00ebmtuar realizmin. Nevojiten kompromise. Cilat duhet t\u00eb jen\u00eb dimensionet e katror\u00ebve? N\u00ebse jan\u00eb shum\u00eb t\u00eb m\u00ebdhenj \u2014 nuk do t\u00eb mund t\u00eb p\u00ebrfaq\u00ebsojn\u00eb si\u00e7 duhet korridore t\u00eb vogla ose kthesa, n\u00ebse jan\u00eb shum\u00eb t\u00eb vegj\u00ebl \u2014 do t\u00eb ket\u00eb tep\u00ebr shum\u00eb katror\u00eb p\u00ebr t\u00eb k\u00ebrkuar, q\u00eb p\u00ebrfundimisht do t\u00eb marr\u00eb shum\u00eb koh\u00eb.<\/p>\n<p>E para q\u00eb duhen kuptuar \u00ebsht\u00eb se rrjeti na ofron nj\u00eb graf t\u00eb lidhurish node. Algoritmet A* dhe BFS n\u00eb thelb punojn\u00eb me grafiqe dhe nuk u b\u00ebjn\u00eb fare ball\u00eb rrjetit ton\u00eb. Ne mund t\u00eb vendosim nodet n\u00eb \u00e7do vend t\u00eb bot\u00ebs s\u00eb loj\u00ebs: me kusht q\u00eb t\u00eb ket\u00eb lidhje midis \u00e7do dy node t\u00eb lidhura, si dhe midis pik\u00ebs fillestare dhe asaj p\u00ebrfundimtare e t\u00eb pakt\u00ebn nj\u00ebrit prej node-ve \u2014 algoritmi do punoj\u00eb po aq mir\u00eb si m\u00eb par\u00eb. Kjo shpesh quhet sistem pikash udh\u00ebzimi (waypoint), pasi \u00e7do node paraqet nj\u00eb pozicion t\u00eb r\u00ebnd\u00ebsish\u00ebm n\u00eb bot\u00eb, q\u00eb mund t\u00eb jet\u00eb pjes\u00eb e \u00e7do numri t\u00eb mundsh\u00ebm rrug\u00ebsh.<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/d87e9d4bb2a2fc713d32abc158506eaa.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Shembulli 1: nj\u00eb node n\u00eb secil\u00ebn katror. K\u00ebrkimi fillon nga nodi n\u00eb t\u00eb cilin ndodhet agjenti dhe p\u00ebrfundon n\u00eb nodin e katrorit t\u00eb k\u00ebrkuar.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/b535a5db805efdc427d7c5724b866982.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Shembulli 2: nj\u00eb grup m\u00eb i vog\u00ebl nodesh (piqesh udh\u00ebzimi). K\u00ebrkimi fillon n\u00eb katrorin me agjentin, kalon p\u00ebrmes numrit t\u00eb nevojsh\u00ebm t\u00eb nod\u00ebve dhe pastaj vazhdon deri n\u00eb destinacion.<\/i><\/p>\n<p>Kjo \u00ebsht\u00eb nj\u00eb sistem mjaft fleksib\u00ebl dhe i fuqish\u00ebm. Por k\u00ebrkohet kujdes n\u00eb vendimet se ku dhe si t\u00eb vendosen pik\u00ebt e udh\u00ebtimit, nd otherwise agent\u00ebt mund t\u00eb mos shohin pik\u00ebn m\u00eb t\u00eb af\u00ebrt dhe nuk do t\u00eb jen\u00eb n\u00eb gjendje t\u00eb nisin rrug\u00ebn. Do t\u00eb ishte m\u00eb e thjesht\u00eb n\u00ebse do t\u00eb mundnim t\u00eb vendosnim automatikisht pik\u00ebt e udh\u00ebtimit n\u00eb baz\u00eb t\u00eb gjeometris\u00eb s\u00eb bot\u00ebs.<\/p>\n<p>K\u00ebtu hyn n\u00eb loj\u00eb rrjeta e navigimit ose navmesh (n\u00eb shqip, rrjeta e navigimit). Kjo zakonisht \u00ebsht\u00eb nj\u00eb rrjet 2D i trek\u00ebnd\u00ebshave, i cili vendoset mbi gjeometrin\u00eb e bot\u00ebs \u2014 kudo q\u00eb agjentit i lejohet t\u00eb ec\u00eb. \u00c7do trek\u00ebnd\u00ebsh n\u00eb rrjet b\u00ebhet nj\u00eb nyje n\u00eb graf dhe ka deri n\u00eb tre trek\u00ebnd\u00ebsha ngjitur, t\u00eb cil\u00ebt b\u00ebhen nyje fqinj\u00eb n\u00eb graf. <\/p>\n<p>Kjo foto \u00ebsht\u00eb nj\u00eb shembull nga motori Unity \u2014 ai analizon gjeometrin\u00eb n\u00eb bot\u00eb dhe krijon navmesh (n\u00eb screenshot n\u00eb ngjyr\u00eb t\u00eb leht\u00eb blu). \u00c7do poligon n\u00eb navmesh \u00ebsht\u00eb nj\u00eb zon\u00eb ku agjenti mund t\u00eb q\u00ebndroj\u00eb ose t\u00eb l\u00ebviz\u00eb nga nj\u00eb poligon n\u00eb nj\u00eb tjet\u00ebr. N\u00eb k\u00ebt\u00eb shembull, poligonet jan\u00eb m\u00eb t\u00eb vogla se katet ku ndodhen \u2014 kjo \u00ebsht\u00eb b\u00ebr\u00eb p\u00ebr t\u00eb marr\u00eb parasysh p\u00ebrmasat e agjentit, t\u00eb cilat do t\u00eb dalin jasht\u00eb pozicionit t\u00eb tij nominal.<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/845705ba7b9a9d469203aedf7942da41.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNe mund t\u00eb k\u00ebrkojm\u00eb nj\u00eb rrug\u00eb p\u00ebrmes k\u00ebtij rrjeti, duke p\u00ebrdorur p\u00ebrs\u00ebri algoritmin A*. Kjo do t'na jap\u00eb nj\u00eb rrug\u00eb praktikisht perfekte n\u00eb bot\u00eb, e cila merr parasysh t\u00eb gjith\u00eb gjeometrin\u00eb dhe nj\u00ebkoh\u00ebsisht nuk k\u00ebrkon nyje t\u00eb tep\u00ebrta dhe krijimin e pikave udh\u00ebzuese.<\/p>\n<p>Gjetja e rrug\u00ebs \u00ebsht\u00eb nj\u00eb tem\u00eb shum\u00eb e gjer\u00eb, p\u00ebr t\u00eb cil\u00ebn nuk mjafton nj\u00eb seksion i vet\u00ebm t\u00eb nj\u00eb artikulli. N\u00ebse d\u00ebshironi ta shqyrtoni at\u00eb m\u00eb n\u00eb detaje, at\u00ebher\u00eb kjo ndihm\u00ebson <noindex><a rel=\"nofollow\" href=\"https:\/\/www.redblobgames.com\/pathfinding\/a-star\/introduction.html\">faqja e Amit Patel<\/a><\/noindex>.<\/p>\n<h2>Planifikimi<\/h2>\n<p>\nNe e kuptuam me gjetjen e rrug\u00ebs se ndonj\u00ebher\u00eb nuk mjafton thjesht t\u00eb zgjedh\u00ebsh nj\u00eb drejtim dhe t\u00eb l\u00ebviz\u00ebsh - ne duhet t\u00eb zgjedhim nj\u00eb rrug\u00eb dhe t\u00eb b\u00ebjm\u00eb disa kthesa p\u00ebr t\u00eb arritur n\u00eb destinacionin e d\u00ebshiruar. Mund ta p\u00ebrmbledhim k\u00ebt\u00eb ide: arritja e nj\u00eb q\u00ebllimi nuk \u00ebsht\u00eb thjesht hapi i ardhsh\u00ebm, por nj\u00eb e t\u00ebr\u00eb sekuenc\u00eb, ku ndonj\u00ebher\u00eb \u00ebsht\u00eb e nevojshme t\u00eb shoh\u00ebsh para disa hapa, p\u00ebr t\u00eb ditur se si duhet t\u00eb jet\u00eb i pari. Kjo quhet planifikim. Gjetja e rrug\u00ebs mund t\u00eb konsiderohet si nj\u00eb nga disa shtesa t\u00eb planifikimit. Nga pik\u00ebpamja e ciklit ton\u00eb Sense\/Think\/Act, kjo \u00ebsht\u00eb ajo ku pjesa Think planifikon disa pjes\u00eb Act p\u00ebr t\u00eb ardhmen.<\/p>\n<p>T\u00eb shohim nj\u00eb shembull nga loja e tavolin\u00ebs Magic: The Gathering. Ne luajm\u00eb t\u00eb par\u00ebt me k\u00ebt\u00eb grup kartash n\u00eb duar:<\/p>\n<ul>\n<li>Mires \u2014 jep 1 man\u00eb t\u00eb zez\u00eb (kart\u00eb toke).<\/li>\n<li>Pyll \u2014 jep 1 man\u00eb t\u00eb gjelb\u00ebr (kart\u00eb toke).<\/li>\n<li>Magjistari I Ikur \u2014 k\u00ebrkon 1 man\u00eb blu p\u00ebr thirrje.<\/li>\n<li>Mistiku Elvish \u2014 k\u00ebrkon 1 man\u00eb t\u00eb gjelb\u00ebr p\u00ebr thirrje.<\/li>\n<\/ul>\n<p>\nLe t\u00eb injorojm\u00eb tre kartat e mbetura p\u00ebr t\u00eb thjeshtuar. Sipas rregullave, lojtari ka t\u00eb drejt\u00eb t\u00eb luaj\u00eb 1 kart\u00eb toke p\u00ebr raund, ai mund t\u00eb \"tapi\" k\u00ebt\u00eb kart\u00eb p\u00ebr t\u00eb nxjerr\u00eb nga ajo man\u00eb, dhe pastaj t\u00eb p\u00ebrdor\u00eb spell-et (p\u00ebrfshir\u00eb thirrjen e krijesave) sipas sasis\u00eb s\u00eb man\u00ebs. N\u00eb k\u00ebt\u00eb situat\u00eb, lojtari njeri di se duhet t\u00eb luaj\u00eb Pyllin, \"tapi\" 1 man\u00eb t\u00eb gjelb\u00ebr, dhe pastaj t\u00eb th\u00ebrras\u00eb Mistikun Elvish. Por si mund ta kuptoj\u00eb k\u00ebt\u00eb inteligjenca artificiale e loj\u00ebs?<\/p>\n<h3>Planifikim i thjesht\u00eb<\/h3>\n<p>\nQasja triviale \u2014 provoni \u00e7do veprim nj\u00eb pas nj\u00eb, derisa t\u00eb mos mbeten veprime t\u00eb p\u00ebrshtatshme. Duke par\u00eb kartat, AI sheh se mund t\u00eb luaj\u00eb Mires. Dhe e luan at\u00eb. A mbeten veprime t\u00eb tjera n\u00eb k\u00ebt\u00eb raund? Ai nuk mund t\u00eb th\u00ebrras\u00eb as Mistikun Elvish, as Magjistarin I Ikur, pasi p\u00ebr thirrjen e tyre k\u00ebrkohet respektivisht man\u00eb e gjelb\u00ebr dhe e blu, nd\u00ebrsa Mires ofron vet\u00ebm man\u00eb t\u00eb zez\u00eb. Dhe ai nuk do t\u00eb mund t\u00eb luaj\u00eb m\u00eb Pyllin, sepse tashm\u00eb e ka luajtur Mires. K\u00ebshtu, inteligjenca artificiale e loj\u00ebs veproi sipas rregullave, por e b\u00ebri k\u00ebt\u00eb dob\u00ebt. Mund t\u00eb p\u00ebrmir\u00ebsohet.<\/p>\n<p>Planifikimi mund t\u00eb gjej\u00eb nj\u00eb list\u00eb veprimesh q\u00eb e \u00e7ojn\u00eb loj\u00ebn n\u00eb gjendjen e d\u00ebshiruar. Ashtu si\u00e7 \u00e7do katror n\u00eb rrug\u00eb kishte fqinj\u00eb (n\u00eb gjetjen e rrug\u00ebs), \u00e7do veprim n\u00eb plan gjithashtu ka fqinj\u00eb ose pasardh\u00ebs. Ne mund t\u00eb k\u00ebrkojm\u00eb k\u00ebto veprime dhe veprime t\u00eb m\u00ebtejshme derisa t\u00eb arrijm\u00eb gjendjen e d\u00ebshiruar.<\/p>\n<p>N\u00eb shembullin ton\u00eb, rezultati i d\u00ebshiruar \u00ebsht\u00eb \"thirr nj\u00eb krijes\u00eb, n\u00ebse \u00ebsht\u00eb e mundur\". N\u00eb fillim t\u00eb raundit, ne shohim vet\u00ebm dy veprime t\u00eb mundshme, t\u00eb lejuara nga rregullat e loj\u00ebs:<\/p>\n<p><i>1. T\u00eb luajm\u00eb Swamp (rezultati: Swamp n\u00eb loj\u00eb)<br \/>\n2. T\u00eb luajm\u00eb Forest (rezultati: Forest n\u00eb loj\u00eb)<\/i><\/p>\n<p>\u00c7do veprim i pranuar mund t\u00eb \u00e7oj\u00eb n\u00eb veprime t\u00eb m\u00ebtejshme dhe t\u00eb mbyll\u00eb t\u00eb tjera, gjithashtu sipas rregullave t\u00eb loj\u00ebs. Imagjinoni se luajt\u00ebm Swamp \u2014 kjo do t\u00eb heq\u00eb Swamp si hapin e ardhsh\u00ebm (ne e luajt\u00ebm tashm\u00eb), gjithashtu do t\u00eb heq\u00eb Forest (sepse sipas rregullave mund t\u00eb luhet nj\u00eb kart\u00eb toke p\u00ebr raund). Pas k\u00ebsaj, AI e shton si hap t\u00eb ardhsh\u00ebm \u2014 fitimin e 1 manave t\u00eb zeza, sepse nuk ka mund\u00ebsi tjet\u00ebr. N\u00ebse vazhdon dhe zgjidh Tap the Swamp, ai do t\u00eb fitoj\u00eb 1 nj\u00ebsi manas t\u00eb zeza dhe nuk do t\u00eb mund t\u00eb b\u00ebj\u00eb asgje me t\u00eb.<\/p>\n<p><i>1. T\u00eb luajm\u00eb Swamp (rezultati: Swamp n\u00eb loj\u00eb)<br \/>\n 1.1 \u00abTapping\u00bb Swamp (rezultati: Swamp \u00abtapped\u00bb, +1 nj\u00ebsi e man\u00ebs s\u00eb zez\u00eb)<br \/>\n Ska veprime t\u00eb disponueshme \u2013 FUND<br \/>\n2. T\u00eb luajm\u00eb Forest (rezultati: Forest n\u00eb loj\u00eb)<\/i><\/p>\n<p>Lista e veprimeve doli e shkurt\u00ebr, ne u bllokuam. Po p\u00ebrs\u00ebrisim procesin p\u00ebr veprimin tjet\u00ebr. Ne luajm\u00eb Forest, hapim veprimin \u00abmerr 1 mana t\u00eb gjelb\u00ebr\u00bb, q\u00eb nga ana e tij do t\u00eb hap\u00eb veprimin e tret\u00eb \u2014 thirrjen e Elvish Mystic.<\/p>\n<p><i>1. T\u00eb luajm\u00eb Swamp (rezultati: Swamp n\u00eb loj\u00eb)<br \/>\n 1.1 \u00abTapping\u00bb Swamp (rezultati: Swamp \u00abtapped\u00bb, +1 nj\u00ebsi e man\u00ebs s\u00eb zez\u00eb)<br \/>\n Ska veprime t\u00eb disponueshme \u2013 FUND<br \/>\n2. T\u00eb luajm\u00eb Forest (rezultati: Forest n\u00eb loj\u00eb)<br \/>\n 2.1 \u00abTapping\u00bb Forest (rezultati: Forest \u00abtapped\u00bb, +1 nj\u00ebsi e man\u00ebs s\u00eb gjelb\u00ebr)<br \/>\n 2.1.1 Thirrja e Elvish Mystic (rezultati: Elvish Mystic n\u00eb loj\u00eb, -1 nj\u00ebsi e man\u00ebs s\u00eb gjelb\u00ebr)<br \/>\n Ska veprime t\u00eb disponueshme \u2013 FUND<\/i><\/p>\n<p>M\u00eb n\u00eb fund, ne studiuam t\u00eb gjitha veprimet e mundshme dhe gjet\u00ebm nj\u00eb plan p\u00ebr t\u00eb thirrur nj\u00eb krijes\u00eb.<\/p>\n<p>Ky \u00ebsht\u00eb nj\u00eb shembull shum\u00eb i thjesht\u00eb. Preferohet t\u00eb zgjidhni planin m\u00eb t\u00eb mir\u00eb t\u00eb mundsh\u00ebm, jo thjesht ndonj\u00eb q\u00eb p\u00ebrputhet me disa kritere. N\u00eb p\u00ebrgjith\u00ebsi, \u00ebsht\u00eb e mundur t\u00eb vler\u00ebsoni planet e mundshme bazuar n\u00eb rezultatin p\u00ebrfundimtar ose n\u00eb dobin\u00eb e p\u00ebrgjithshme nga zbatimi i tyre. Mund t\u00eb merrni 1 pik\u00eb p\u00ebr luajtjen e kartave t\u00eb tok\u00ebs dhe 3 pik\u00eb p\u00ebr thirrjen e nj\u00eb krijese. T\u00eb luani Swamp do t\u00eb ishte nj\u00eb plan q\u00eb jep 1 pik\u00eb. Nd\u00ebrsa t\u00eb luani Forest \u2192 Tapping the Forest \u2192 thirrjen e Elvish Mystic do t'ju jepte menj\u00ebher\u00eb 4 pik\u00eb. <\/p>\n<p>K\u00ebshtu funksionon planifikimi n\u00eb Magic: The Gathering, por e nj\u00ebjta logjik\u00eb aplikohet edhe n\u00eb situata t\u00eb tjera. P\u00ebr shembull, t\u00eb l\u00ebviz\u00ebsh nj\u00eb pjest\u00eb p\u00ebr t\u00eb \u00e7liruar hap\u00ebsir\u00eb p\u00ebr l\u00ebvizjet e elefantit n\u00eb shah. Ose t\u00eb strehohesh pas nj\u00eb muri p\u00ebr t\u00eb q\u00eblluar n\u00eb siguri n\u00eb XCOM. N\u00eb p\u00ebrgjith\u00ebsi, e kuptuat thelbin.<\/p>\n<h3>Planifikimi i p\u00ebrmir\u00ebsuar<\/h3>\n<p>\nN sometimes there are too many potential actions to consider every possible option. Duke u kthyer te shembulli me Magic: The Gathering: le t\u00eb themi se n\u00eb loj\u00eb keni disa karta toke dhe krijesash n\u00eb dor\u00eb - numri i kombinimeve t\u00eb mundshme t\u00eb l\u00ebvizjeve mund t\u00eb llogaritet n\u00eb dhjetra. Ka disa zgjidhje p\u00ebr problemin.<\/p>\n<p>M\u00ebnyra e par\u00eb \u00ebsht\u00eb formimi i zinxhirit mbrapsht (backwards chaining). N\u00eb vend q\u00eb t\u00eb shqyrtojm\u00eb t\u00eb gjitha kombinimet, \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb nisim nga rezultati p\u00ebrfundimtar dhe t\u00eb provojm\u00eb t\u00eb gjejm\u00eb nj\u00eb rrug\u00eb direkte. N\u00eb vend q\u00eb t\u00eb l\u00ebvizim nga rr\u00ebnja e pem\u00ebs n\u00eb nj\u00eb gjethe t\u00eb caktuar, ne l\u00ebvizim n\u00eb drejtimin e kund\u00ebrt - nga gjetheja n\u00eb rr\u00ebnj\u00eb. Kjo metod\u00eb \u00ebsht\u00eb m\u00eb e leht\u00eb dhe m\u00eb e shpejt\u00eb.<\/p>\n<p>N\u00ebse armiku ka 1 pik\u00eb sh\u00ebndeti, mund t\u00eb gjejm\u00eb nj\u00eb plan \"t\u00eb japim 1 ose m\u00eb shum\u00eb pik\u00eb d\u00ebmi\". P\u00ebr ta arritur k\u00ebt\u00eb, duhet t\u00eb plot\u00ebsojm\u00eb nj\u00eb s\u00ebr\u00eb kushtesh: <\/p>\n<p>1. Nj\u00eb magji mund t\u00eb shkaktoj\u00eb d\u00ebme \u2014 duhet t\u00eb jet\u00eb n\u00eb dor\u00eb.<br \/>\n2. P\u00ebr t\u00eb luajtur nj\u00eb magji \u2014 nevojitet mana.<br \/>\n3. P\u00ebr t\u00eb marr\u00eb mana \u2014 duhet t\u00eb luash nj\u00eb kart\u00eb toke.<br \/>\n4. P\u00ebr t\u00eb luajtur nj\u00eb kart\u00eb toke \u2014 duhet ta kesh at\u00eb n\u00eb dor\u00eb.<\/p>\n<p>Nj\u00eb m\u00ebnyr\u00eb tjet\u00ebr \u00ebsht\u00eb k\u00ebrkimi best-first (k\u00ebrkimi m\u00eb i mir\u00eb i par\u00eb). N\u00eb vend q\u00eb t\u00eb shqyrtojm\u00eb t\u00eb gjitha rrug\u00ebt, ne zgjedhim at\u00eb m\u00eb t\u00eb p\u00ebrshtatshmen. Shpesh, ky metod\u00eb ofron nj\u00eb plan optimal pa shpenzime t\u00eb tep\u00ebrta n\u00eb k\u00ebrkime. A* \u00ebsht\u00eb nj\u00eb form\u00eb e k\u00ebrkimit m\u00eb t\u00eb mir\u00eb t\u00eb par\u00eb \u2014 duke shqyrtuar rrug\u00ebt m\u00eb premtuese qysh n\u00eb fillim, ai mund t\u00eb gjej\u00eb tashm\u00eb rrug\u00ebn m\u00eb t\u00eb mir\u00eb pa nevoj\u00ebn p\u00ebr t\u00eb kontrolluar opsionet e tjera.<\/p>\n<p>Nj\u00eb variant interesant dhe gjithnj\u00eb e m\u00eb popullor i k\u00ebrkimit best-first \u00ebsht\u00eb K\u00ebrkimi me Pem\u00eb Monte Carlo. N\u00eb vend q\u00eb t\u00eb parashikoj\u00eb se cilat plane jan\u00eb m\u00eb t\u00eb mira n\u00eb zgjedhjen e \u00e7do veprimi t\u00eb ardhsh\u00ebm, algoritmi zgjedh pasardh\u00ebs t\u00eb rast\u00ebsish\u00ebm n\u00eb \u00e7do hap derisa t\u00eb arrij\u00eb n\u00eb fund (kur plani \u00e7on n\u00eb fitore ose humbje). M\u00eb pas, rezultati i fundit p\u00ebrdoret p\u00ebr t\u00eb rritur ose ulur vler\u00ebsimin e \"pesha\" t\u00eb opsioneve t\u00eb m\u00ebparshme. Duke e p\u00ebrs\u00ebritur k\u00ebt\u00eb proces disa her\u00eb radhazi, algoritmi ofron nj\u00eb vler\u00ebsim t\u00eb mir\u00eb se cili \u00ebsht\u00eb hapi tjet\u00ebr m\u00eb i mir\u00eb, edhe n\u00ebse situata ndryshon (n\u00ebse kund\u00ebrshtari nd\u00ebrmerr masa p\u00ebr ta penguar lojtarin). <\/p>\n<p>N\u00eb tregimin e planifikimit n\u00eb loj\u00ebra nuk mund t\u00eb mungoj\u00eb Planifikimi i Veprimeve t\u00eb Orientuara nga Q\u00ebllimi ose GOAP (planifikimi i veprimeve me q\u00ebllim). Ky \u00ebsht\u00eb nj\u00eb metod\u00eb e p\u00ebrdorur gjer\u00ebsisht dhe e diskutuar, por p\u00ebrve\u00e7 disa detajeve dalluese, n\u00eb thelb \u00ebsht\u00eb nj\u00eb metod\u00eb e nd\u00ebrlidhjes prapa, p\u00ebr t\u00eb cil\u00ebn fol\u00ebm m\u00eb par\u00eb. N\u00ebse detyra \u00ebsht\u00eb \"t\u00eb shkat\u00ebrrosh lojtarin\", dhe loja ndodhet pas nj\u00eb mbrojtjeje, plani mund t\u00eb jet\u00eb: shkat\u00ebrro me nj\u00eb grenade \u2192 merr at\u00eb \u2192 hidhe.<\/p>\n<p>Zakonisht ka disa q\u00ebllime, secila me prioritetin e saj. N\u00ebse q\u00ebllimi me prioritetin m\u00eb t\u00eb lart\u00eb nuk mund t\u00eb arrihet (asnj\u00eb kombinim veprimesh nuk krijon planin \"shkat\u00ebrro lojtarin\", sepse lojtari nuk \u00ebsht\u00eb i duksh\u00ebm), AI do t\u00eb kthehet te q\u00ebllimet me prioritet m\u00eb t\u00eb ul\u00ebt.<\/p>\n<h2>M\u00ebsimi dhe adaptimi<\/h2>\n<p>\nKemi p\u00ebrmendur se AI i loj\u00ebs zakonisht nuk p\u00ebrdor m\u00ebsimin e makineris\u00eb, sepse kjo nuk \u00ebsht\u00eb e p\u00ebrshtatshme p\u00ebr menaxhimin e agent\u00ebve n\u00eb koh\u00eb reale. Por kjo nuk do t\u00eb thot\u00eb se nuk mund t\u00eb huazohet di\u00e7ka nga kjo fush\u00eb. Ne duam nj\u00eb armik t\u00eb till\u00eb n\u00eb nj\u00eb loj\u00eb q\u00eb mund t\u00eb m\u00ebsojm\u00eb di\u00e7ka nga ai. P\u00ebr shembull, t\u00eb m\u00ebsojm\u00eb p\u00ebr pozitat m\u00eb t\u00eb mira n\u00eb hart\u00eb. Apo nj\u00eb armik n\u00eb nj\u00eb luft\u00eb q\u00eb do t\u00eb bllokonte kombo t\u00eb p\u00ebrdorura shpesh nga lojtari, duke e motivuar at\u00eb t\u00eb p\u00ebrdor\u00eb t\u00eb tjera. K\u00ebshtu, m\u00ebsimi i makineris\u00eb n\u00eb k\u00ebto situata mund t\u00eb jet\u00eb shum\u00eb i dobish\u00ebm.<\/p>\n<h3>Statistikat dhe probabilitetet<\/h3>\n<p>\nPara se ne kalojm\u00eb n\u00eb shembuj t\u00eb komplikuar, le t\u00eb shohim se sa larg mund t\u00eb Shkojm\u00eb duke marr\u00eb disa matje t\u00eb thjeshta dhe duke i p\u00ebrdorur ato p\u00ebr t\u00eb marr\u00eb vendime. P\u00ebr shembull, strategjia n\u00eb koh\u00eb reale \u2014 si mund t\u00eb p\u00ebrcaktojm\u00eb n\u00ebse nj\u00eb lojtar mund t\u00eb filloj\u00eb nj\u00eb sulm n\u00eb minutat e para t\u00eb loj\u00ebs dhe \u00e7far\u00eb mbrojtjeje t\u2019i p\u00ebrgatisim kund\u00ebr k\u00ebsaj? Ne mund t\u00eb shqyrtojm\u00eb p\u00ebrvoj\u00ebn e kaluara t\u00eb lojtarit p\u00ebr t\u00eb kuptuar se cila mund t\u00eb jet\u00eb reagimi i tij n\u00eb t\u00eb ardhmen. Le t\u00eb fillojm\u00eb me faktin se nuk kemi t\u00eb dh\u00ebna t\u00eb tilla fillestare, por mund t\u2019i mbledhim ato \u2014 \u00e7do her\u00eb q\u00eb AI luan kund\u00ebr njeriut, mund t\u00eb regjistroj\u00eb koh\u00ebn e sulmit t\u00eb par\u00eb. Pas disa seancash do t\u00eb kemi nj\u00eb mesatare t\u00eb koh\u00ebs q\u00eb do t\u00eb sulmoj\u00eb lojtarin n\u00eb t\u00eb ardhmen.<\/p>\n<p>Mesataret kan\u00eb nj\u00eb problem: n\u00ebse nj\u00eb lojtar 20 her\u00eb \u2018ka shkuar p\u00ebr sulm\u2019, dhe 20 her\u00eb ka luajtur ngadal\u00eb, at\u00ebher\u00eb vlerat e nevojshme do t\u00eb jen\u00eb diku n\u00eb mes, dhe kjo nuk do t\u00eb na jap\u00eb asgj\u00eb t\u00eb dobishme. Nj\u00eb nga zgjidhjet \u00ebsht\u00eb kufizimi i t\u00eb dh\u00ebnave hyr\u00ebse \u2014 mund t\u00eb merrni parasysh 20 t\u00eb fundit.<\/p>\n<p>Nj\u00eb qasje e ngjashme p\u00ebrdoret kur vler\u00ebsohet probabiliteti i veprimeve t\u00eb caktuara, duke supozuar se preferencat e kaluara t\u00eb lojtarit do t\u00eb jen\u00eb t\u00eb nj\u00ebjta n\u00eb t\u00eb ardhmen. N\u00ebse lojtari na sulmon pes\u00eb her\u00eb me zjarr, dy her\u00eb me shk\u00ebndij\u00eb dhe nj\u00eb her\u00eb me duar, \u00ebsht\u00eb e qart\u00eb se ai preferon zjarrin. Ekstrapolojm\u00eb dhe shohim probabilitetin e p\u00ebrdorimit t\u00eb arm\u00ebve t\u00eb ndryshme: zjarr=62.5%, shk\u00ebndij\u00eb=25% dhe duar=12.5%. Inteligjenca jon\u00eb artificiale e loj\u00ebs duhet t\u00eb p\u00ebrgatitet p\u00ebr t'u mbrojtur nga zjarri.<\/p>\n<p>Nj\u00eb metod\u00eb tjet\u00ebr interesante \u00ebsht\u00eb p\u00ebrdorimi i Klasifikuesit Naive Bayes (klasifikuesi naive Bayes) p\u00ebr t\u00eb studiuar sasi t\u00eb m\u00ebdha t\u00eb t\u00eb dh\u00ebnave hyr\u00ebse dhe p\u00ebr t\u00eb klasifikuar situat\u00ebn, n\u00eb m\u00ebnyr\u00eb q\u00eb AI t\u00eb reagoj\u00eb si duhet. Klasifikuesit Bayes jan\u00eb m\u00eb t\u00eb njohur p\u00ebr p\u00ebrdorimin e tyre n\u00eb filtrat e spam-it t\u00eb email-it. Aty ata studiojn\u00eb fjal\u00ebt, i krahasojn\u00eb ato me vendet ku k\u00ebto fjal\u00eb jan\u00eb shfaqur m\u00eb par\u00eb (n\u00eb spam ose jo), dhe nxjerrin p\u00ebrfundime p\u00ebr email-et hyr\u00ebse. Ne mund t\u00eb b\u00ebjm\u00eb t\u00eb nj\u00ebjt\u00ebn gj\u00eb, madje edhe me nj\u00eb sasi m\u00eb t\u00eb vog\u00ebl t\u00eb t\u00eb dh\u00ebnave hyr\u00ebse. Bazuar n\u00eb gjith\u00eb informacionin e dobish\u00ebm q\u00eb sheh AI (p.sh., cilat nj\u00ebsi armiq\u00ebsore jan\u00eb krijuar, ose cilat spell-e po p\u00ebrdorin, ose cilat teknologji po hetojn\u00eb), dhe rezultatin p\u00ebrfundimtar (luft\u00eb ose paqe, 'sulm' ose mbrojtje, etj.) \u2014 do t\u00eb zgjedhim sjelljen e duhur p\u00ebr AI.<\/p>\n<p>T\u00eb gjitha k\u00ebto m\u00ebnyra m\u00ebsimi jan\u00eb t\u00eb mjaftueshme, por preferohet t\u00eb p\u00ebrdoren mbi t\u00eb dh\u00ebnat nga testimi. AI do t\u00eb m\u00ebsoj\u00eb t\u00eb p\u00ebrshtatet me strategjit\u00eb e ndryshme q\u00eb kan\u00eb p\u00ebrdorur testuesit tuaj. Nj\u00eb AI q\u00eb p\u00ebrshtatet me lojtarin pas lan\u00e7imit mund t\u00eb b\u00ebhet shum\u00eb parashikues ose, p\u00ebrkundrazi, shum\u00eb i v\u00ebshtir\u00eb p\u00ebr t\u00eb fituar.<\/p>\n<h3>P\u00ebrshtatja mbi baz\u00ebn e vlerave<\/h3>\n<p>\nDuke marr\u00eb parasysh p\u00ebrmbajtjen e bot\u00ebs son\u00eb t\u00eb loj\u00ebs dhe rregullat, mund t\u00eb ndryshojm\u00eb grupin e vlerave q\u00eb ndikojn\u00eb n\u00eb marrjen e vendimeve, n\u00eb vend q\u00eb thjesht t\u00eb p\u00ebrdorim t\u00eb dh\u00ebnat hyr\u00ebse. S\u00eb pari b\u00ebjm\u00eb k\u00ebt\u00eb:<\/p>\n<ul>\n<li>Le t\u00eb mbledh\u00eb AI t\u00eb dh\u00ebna mbi gjendjen e bot\u00ebs dhe ngjarjet ky\u00e7e gjat\u00eb loj\u00ebs (si\u00e7 p\u00ebrmendet m\u00eb sip\u00ebr).<\/li>\n<li>Do t\u00eb ndryshojm\u00eb disa vlera t\u00eb r\u00ebnd\u00ebsishme (value) n\u00eb baz\u00eb t\u00eb k\u00ebtyre t\u00eb dh\u00ebnave.<\/li>\n<li>Do t\u00eb zbatojm\u00eb vendimet tona t\u00eb bazuara n\u00eb p\u00ebrpunimin ose vler\u00ebsimin e k\u00ebtyre vlerave.<\/li>\n<\/ul>\n<p>\nP\u00ebr shembull, nj\u00eb agjent ka disa dhoma p\u00ebr t\u00eb zgjedhur n\u00eb harta loj\u00ebrash me perspektiv\u00eb t\u00eb par\u00eb. \u00c7do dhom\u00eb ka vler\u00ebn e saj, e cila p\u00ebrcakton sa d\u00ebshirohet t\u00eb vizitohet. AI p\u00ebrzgjidh rast\u00ebsisht se n\u00eb cil\u00ebn dhom\u00eb t\u00eb shkonte, duke u bazuar n\u00eb vler\u00ebn e saj. M\u00eb pas, agjenti kujton n\u00eb cil\u00ebn dhom\u00eb e vran\u00eb dhe zvog\u00eblon vler\u00ebn e saj (probabiliteti q\u00eb ai t\u00eb kthehet atje). E nj\u00ebjta gj\u00eb ndodh n\u00eb situat\u00ebn e kund\u00ebrt - n\u00ebse agjenti shkat\u00ebrron shum\u00eb kund\u00ebrshtar\u00eb, at\u00ebher\u00eb vlera e dhom\u00ebs rritet.<\/p>\n<h3>Modeli Markov<\/h3>\n<p>\n\u00c7far\u00eb n\u00ebse p\u00ebrdorim t\u00eb dh\u00ebnat e mbledhura p\u00ebr t\u00eb parashikuar? N\u00ebse e mbajm\u00eb mend \u00e7do dhom\u00eb ku shohim lojtarin p\u00ebr nj\u00eb periudh\u00eb t\u00eb caktuar kohe, do t\u00eb parashikojm\u00eb n\u00eb cil\u00ebn dhom\u00eb mund t\u00eb kaloj\u00eb lojtarin. Duke ndjekur dhe regjistruar l\u00ebvizjet e lojtarit n\u00ebp\u00ebr dhoma (vlerat), ne mund t\u00eb parashikojm\u00eb ato.<\/p>\n<p>Le t\u00eb marrim tri dhoma: t\u00eb kuqe, t\u00eb gjelb\u00ebr dhe t\u00eb blu. Po ashtu, kemi v\u00ebzhgimet q\u00eb kemi regjistruar gjat\u00eb shikimit t\u00eb seanc\u00ebs s\u00eb loj\u00ebs:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/6e90a365b72a176c36c9a14213baaafc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nNumri i v\u00ebzhgimeve p\u00ebr \u00e7do dhom\u00eb \u00ebsht\u00eb pothuajse i barabart\u00eb \u2014 ende nuk e dim\u00eb se ku t\u00eb krijojm\u00eb nj\u00eb vend t\u00eb mir\u00eb p\u00ebr p\u00ebrrua. Mbledhja e statistikave e v\u00ebshtir\u00ebsohet gjithashtu nga rikthimi i lojtar\u00ebve, t\u00eb cil\u00ebt shfaqen n\u00eb m\u00ebnyr\u00eb t\u00eb barabart\u00eb n\u00eb t\u00eb gjith\u00eb h kartu. Por t\u00eb dh\u00ebnat p\u00ebr dhom\u00ebn tjet\u00ebr, n\u00eb t\u00eb cil\u00ebn hyjn\u00eb pas shfaqjes n\u00eb hart\u00eb \u2014 jan\u00eb tashm\u00eb t\u00eb dobishme.<\/p>\n<p>E dukshme se dhoma e gjelb\u00ebr i k\u00ebnaq lojtar\u00ebt \u2014 shumica e njer\u00ebzve nga dhoma e kuqe kalojn\u00eb n\u00eb t\u00eb, 50% e t\u00eb cil\u00ebve q\u00ebndrojn\u00eb atje dhe m\u00eb tej. Dhom\u00ebn e kalt\u00ebr, p\u00ebrkundrazi, nuk e p\u00ebrdorin popull shum\u00eb, ato shkojn\u00eb aty me shum\u00eb pak, dhe n\u00ebse shkojn\u00eb, nuk q\u00ebndrojn\u00eb. <\/p>\n<p>Por data treguese ndihmon p\u00ebr t\u00eb pranuar di\u00e7ka m\u00eb t\u00eb r\u00ebnd\u00ebsishme \u2014 kur nj\u00eb lojtar ndodhet n\u00eb dhom\u00ebn blu, dhoma tjet\u00ebr ku ne do ta shohim m\u00eb s\u00eb shumti do t\u00eb jet\u00eb e kuqe, dhe jo e gjelb\u00ebr. Megjith\u00ebse dhoma e gjelb\u00ebr \u00ebsht\u00eb m\u00eb e njohur se sa dhoma e kuqe, situata ndryshon kur lojtarin e kemi n\u00eb t\u00eb kalt\u00ebr. Shteti i ardhsh\u00ebm (pra, dhoma n\u00eb t\u00eb cil\u00ebn do t\u00eb kaloj\u00eb lojtarin) varet nga gjendja e m\u00ebparshme (dometh\u00ebn\u00eb, dhoma n\u00eb t\u00eb cil\u00ebn ndodhet aktualisht lojtarin). Fal\u00eb studimit t\u00eb var\u00ebsive, do t\u00eb parashikojm\u00eb m\u00eb sakt\u00eb sesa n\u00ebse do t\u00eb num\u00ebronim v\u00ebzhgimet krejt ndaras nga nj\u00ebra-tjetra.<\/p>\n<p>Parashikimi i gjendjes s\u00eb ardhshme n\u00eb baz\u00eb t\u00eb t\u00eb dh\u00ebnave t\u00eb gjendjes s\u00eb kaluar quhet modeli Markov (Markov model), nd\u00ebrsa k\u00ebto shembuj (me dhoma) quhen zinxhir\u00eb Markov. Pasi modelet p\u00ebrfaq\u00ebsojn\u00eb probabilitetin e ndryshimeve midis gjendjeve t\u00eb radhitura, ato paraqiten vizualisht si FSM me probabilitetin e kaluar p\u00ebr \u00e7do kalim. M\u00eb par\u00eb e p\u00ebrdor\u00ebm FSM p\u00ebr t\u00eb paraqitur gjendjen e sjelljes n\u00eb t\u00eb cil\u00ebn ndodhej agjenti, por kjo koncept \u00ebsht\u00eb i zbatuesh\u00ebm p\u00ebr \u00e7do gjendje, pavar\u00ebsisht n\u00ebse lidhet me agjentin apo jo. N\u00eb k\u00ebt\u00eb rast, gjendjet p\u00ebrfaq\u00ebsojn\u00eb dhom\u00ebn q\u00eb p\u00ebrshkon agjenti:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/edb32dff7a3298b19c3fa4d66f48e9f4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKy \u00ebsht\u00eb nj\u00eb variant i thjesht\u00eb i paraqitjes s\u00eb probabilitetit t\u00eb relatuesh\u00ebm t\u00eb ndryshimeve t\u00eb gjendjeve, duke i dh\u00ebn\u00eb AI nj\u00eb mund\u00ebsi p\u00ebr t\u00eb parashikuar gjendjen e ardhshme. Mund t\u00eb parashikohet disa hapa p\u00ebrpara.<\/p>\n<p>N\u00ebse lojtari \u00ebsht\u00eb n\u00eb dhom\u00ebn e gjelb\u00ebr, ka 50% mund\u00ebsi q\u00eb ai t\u00eb mbetet atje gjat\u00eb v\u00ebzhgimit t\u00eb ardhsh\u00ebm. Por cila \u00ebsht\u00eb probabiliteti q\u00eb ai t\u00eb jet\u00eb ende atje edhe pas k\u00ebsaj? Ka jo vet\u00ebm mund\u00ebsi q\u00eb lojtari t\u00eb ket\u00eb mbetur n\u00eb dhom\u00ebn e gjelb\u00ebr pas dy v\u00ebzhgimeve, por gjithashtu edhe mund\u00ebsi q\u00eb ai t\u00eb ket\u00eb ikur dhe t\u00eb jet\u00eb kthyer. Ja nj\u00eb tabel\u00eb e re duke marr\u00eb parasysh t\u00eb dh\u00ebnat e reja:<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/f87afff68b066a879661e37f68654ae2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nNga kjo shihet se mund\u00ebsia p\u00ebr t\u00eb par\u00eb lojtarin n\u00eb dhom\u00ebn e gjelb\u00ebr pas dy v\u00ebzhgimeve do t\u00eb jet\u00eb 51% \u2014 21% q\u00eb ai do t\u00eb vij\u00eb nga dhoma e kuqe, 5% nga ata q\u00eb lojtari do t\u00eb vizitoj\u00eb dhom\u00ebn e blu mes tyre, dhe 25% q\u00eb lojtari t\u00eb mos largohet fare nga dhoma e gjelb\u00ebr.<\/p>\n<p>Tabela \u2014 nj\u00eb mjet vizualisht i thjesht\u00eb \u2014 procedura k\u00ebrkon vet\u00ebm shumimin e probabiliteteve n\u00eb \u00e7do hap. Kjo do t\u00eb thot\u00eb se mund t\u00eb shikoni larg n\u00eb t\u00eb ardhmen me nj\u00eb rezerv\u00eb: supozojm\u00eb se shansi p\u00ebr t\u00eb hyr\u00eb n\u00eb nj\u00eb dhom\u00eb varet plot\u00ebsisht nga dhoma aktuale. Kjo quhet pron\u00ebsia Markoviane (Markov Property) \u2014 gjendja e ardhshme varet vet\u00ebm nga e tanishmja. Por kjo nuk \u00ebsht\u00eb 100% e sakt\u00eb. Lojtar\u00ebt mund t\u00eb ndryshojn\u00eb vendimet e tyre n\u00eb var\u00ebsi t\u00eb faktor\u00ebve t\u00eb tjer\u00eb: niveli i sh\u00ebndetit ose sasia e municioneve. Duke qen\u00eb se ne nuk i regjistrojm\u00eb k\u00ebto vlera, parashikimet tona do t\u00eb jen\u00eb m\u00eb pak t\u00eb sakta.<\/p>\n<h3>N-Grams<\/h3>\n<p>\nPo \u00e7far\u00eb about shembulli me luft\u00ebn dhe parashikimin e kombinimeve t\u00eb goditjeve t\u00eb lojtarit? E nj\u00ebjta gj\u00eb! Por n\u00eb vend t\u00eb nj\u00eb gjendjeje ose ngjarjeje, ne do t\u00eb eksplorojm\u00eb t\u00eb gjith\u00eb sekuencat nga t\u00eb cilat p\u00ebrb\u00ebhet goditja e kombinuar.<\/p>\n<p>Nj\u00eb nga m\u00ebnyrat p\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb \u00ebsht\u00eb t\u00eb ruani \u00e7do input (p.sh., Shkelm, Grusht ose Bllok) n\u00eb nj\u00eb bufer dhe t\u00eb regjistroni t\u00ebr\u00eb buferin si nj\u00eb ngjarje. Pra, lojtari p\u00ebrs\u00ebritsh\u00ebm shtyp Shkelm, Shkelm, Grusht p\u00ebr t\u00eb p\u00ebrdorur sulmin SuperDeathFist, sistemi AI ruan t\u00eb gjitha inputet n\u00eb bufer dhe mban mend tre t\u00eb fundit, t\u00eb p\u00ebrdorura n\u00eb secilin hap.<\/p>\n<p><img decoding=\"async\" alt=\"Si si krijon nj\u00eb AI p\u00ebr lojra: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/9a95226ae155dca5e45a66d4440f3cd4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(Rresht e theksuara me bold, kur lojtari nis nj\u00eb sulm SuperDeathFist.)<\/p>\n<p>AI do t\u00eb shoh\u00eb t\u00eb gjitha mund\u00ebsit\u00eb kur lojtari zgjodhi Kick, pasuar nga nj\u00eb Kick tjet\u00ebr, dhe m\u00eb pas v\u00ebren se hyrja e ardhshme \u00ebsht\u00eb gjithmon\u00eb Punch. Kjo do t'i lejoj\u00eb agjentit t\u00eb parashikoj\u00eb kombinimin SuperDeathFist dhe ta bllokoj\u00eb at\u00eb, n\u00ebse \u00ebsht\u00eb e mundur.<\/p>\n<p>K\u00ebto sekuenca ngjarjesh quhen N-grama (N-grams), ku N \u00ebsht\u00eb numri i elementeve t\u00eb ruajtura. N\u00eb shembullin e m\u00ebparsh\u00ebm, ishte nj\u00eb 3-gram\u00eb (trigram\u00eb), q\u00eb do t\u00eb thot\u00eb: dy t\u00eb parat p\u00ebrdoren p\u00ebr t\u00eb parashikuar t\u00eb tret\u00ebn. Po ashtu, n\u00eb nj\u00eb 5-gram\u00eb, kat\u00ebr t\u00eb parat parashikojn\u00eb t\u00eb pest\u00ebn dhe k\u00ebshtu me radh\u00eb.<\/p>\n<p>Zhvilluesi duhet t\u00eb zgjedh\u00eb me kujdes madh\u00ebsin\u00eb e N-gramave. Nj\u00eb num\u00ebr m\u00eb i vog\u00ebl N k\u00ebrkon m\u00eb pak memorie, por gjithashtu ruan nj\u00eb histori m\u00eb t\u00eb vog\u00ebl. P\u00ebr shembull, nj\u00eb 2-gram\u00eb (bigram\u00eb) do t\u00eb regjistroj\u00eb Kick, Kick ose Kick, Punch, por nuk do t\u00eb mund t\u00eb ruaj\u00eb Kick, Kick, Punch, prandaj AI nuk do t\u00eb reagoj\u00eb ndaj kombinimit SuperDeathFist.<\/p>\n<p>Nga ana tjet\u00ebr, numrat e m\u00ebdhenj k\u00ebrkojn\u00eb m\u00eb shum\u00eb memorie dhe do t\u00eb jet\u00eb m\u00eb e v\u00ebshtir\u00eb p\u00ebr inteligjenc\u00ebn artificiale t\u00eb m\u00ebsoj\u00eb, pasi do t\u00eb ket\u00eb shum\u00eb m\u00eb tep\u00ebr mund\u00ebsi. Po t\u00eb kishim tri mund\u00ebsi inputi: Kick, Punch ose Block, dhe ne do t\u00eb p\u00ebrdornim 10-grama, do t\u00eb ishim rreth 60 mij\u00eb variante t\u00eb ndryshme.<\/p>\n<p>Modeli i bigramit \u00ebsht\u00eb nj\u00eb zinxhir i thjesht\u00eb Markov \u2014 \u00e7do \u00e7ift \u00abgjendje e kaluar\/gjendje e tanishme\u00bb \u00ebsht\u00eb nj\u00eb bigram, dhe ju mund t\u00eb parashikoni gjendjen e dyt\u00eb n\u00eb baz\u00eb t\u00eb s\u00eb par\u00ebs. 3-gramat dhe N-gramat m\u00eb t\u00eb m\u00ebdha gjithashtu mund t\u00eb konsiderohen si zinxhir\u00eb Markov, ku t\u00eb gjitha elementet (p\u00ebrve\u00e7 elementit t\u00eb fundit n\u00eb N-gram) s\u00eb bashku krijojn\u00eb gjendjen e par\u00eb, dhe elementi i fundit \u00ebsht\u00eb gjendja e dyt\u00eb. Nj\u00eb shembull me luftimet tregon mund\u00ebsin\u00eb e kalimit nga gjendja Kick dhe Kick n\u00eb gjendjen Kick dhe Punch. Duke shqyrtuar disa regjistrime t\u00eb historis\u00eb s\u00eb inputit si nj\u00eb nj\u00ebsi, ne n\u00eb thelb po transformojm\u00eb sekuenc\u00ebn e inputit n\u00eb nj\u00eb pjes\u00eb t\u00eb nj\u00eb gjendjeje t\u00eb plot\u00eb. Kjo na jep nj\u00eb pron\u00ebsi Markov, duke na lejuar t\u00eb p\u00ebrdorim zinxhir\u00eb Markov p\u00ebr t\u00eb parashikuar inputin e ardhsh\u00ebm dhe p\u00ebr t\u00eb qen\u00eb n\u00eb gjendje t\u00eb hamendsojm\u00eb se cili do t\u00eb jet\u00eb hapi tjet\u00ebr i kombos.<\/p>\n<h2>P\u00ebrfundimi<\/h2>\n<p>\nKemi biseduar p\u00ebr mjetet dhe qasjet m\u00eb t\u00eb zakonshme n\u00eb zhvillimin e inteligjenc\u00ebs artificiale. Po ashtu, shqyrtuam situatat n\u00eb t\u00eb cilat ato duhet t\u00eb aplikohen dhe ku jan\u00eb ve\u00e7an\u00ebrisht t\u00eb dobishme. <\/p>\n<p>Kjo duhet t\u00eb jet\u00eb e mjaftueshme p\u00ebr t\u00eb kuptuar bazat e inteligjenc\u00ebs artificiale n\u00eb loj\u00ebra. Por, sigurisht, kjo nuk \u00ebsht\u00eb e gjitha. Disa nga metodat m\u00eb pak t\u00eb njohura, por po aq efektive, p\u00ebrfshijn\u00eb:<\/p>\n<ul>\n<li>algoritme p\u00ebr optimizim, duke p\u00ebrfshir\u00eb ngjitjen mbi kodra, zbritjen gradiente dhe algoritmet gjenetik\u00eb<\/li>\n<li>algoritme konkurruese p\u00ebr k\u00ebrkimin\/planifikimin (minimax dhe pastrimi alpha-beta)<\/li>\n<li>metoda klasifikimi (perceptron\u00eb, rrjete neuronale dhe makinat e mb\u00ebshtetjes me vektor\u00eb)<\/li>\n<li>sisteme p\u00ebr p\u00ebrpunimin e perceptimit dhe kujtes\u00ebs s\u00eb agjenteve<\/li>\n<li>qasje arkitekturore p\u00ebr inteligjenc\u00ebn artificiale (sisteme hibride, n\u00ebngrupe arkitekturash dhe m\u00ebnyra t\u00eb tjera t\u00eb mbivendosjes s\u00eb sistemeve t\u00eb inteligjenc\u00ebs artificiale)<\/li>\n<li>mjete animacioni (planifikimi dhe koordinimi i l\u00ebvizjes)<\/li>\n<li>faktor\u00ebt e performanc\u00ebs (niveli i detajit, algoritmet anytime, dhe ndarja n\u00eb koh\u00eb)<\/li>\n<\/ul>\n<p>\nBurime online p\u00ebr tem\u00ebn:<\/p>\n<p>1. N\u00eb GameDev.net ka <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gamedev.net\/articles\/programming\/artificial-intelligence\/\">nj\u00eb seksion me artikuj dhe tutoriale p\u00ebr inteligjenc\u00ebn artificiale<\/a><\/noindex>, si dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gamedev.net\/forums\/forum\/6-artificial-intelligence\/\">forum<\/a><\/noindex>.<br \/>\n2. <noindex><a rel=\"nofollow\" href=\"http:\/\/aigamedev.com\/\">AiGameDev.com<\/a><\/noindex> ofron shum\u00eb prezantime dhe artikuj mbi nj\u00eb gam\u00eb t\u00eb gjer\u00eb temash t\u00eb lidhura me zhvillimin e inteligjenc\u00ebs artificiale n\u00eb loj\u00ebra.<br \/>\n3. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gdcvault.com\/\">GDC Vault<\/a><\/noindex> p\u00ebrfshin tema nga samiti GDC AI, shum\u00eb prej t\u00eb cilave jan\u00eb t\u00eb disponueshme falas.<br \/>\n4. Materialet e dobishme gjithashtu mund t\u00eb gjenden n\u00eb faqen <noindex><a rel=\"nofollow\" href=\"http:\/\/gameai.com\/\">AI Game Programmers Guild<\/a><\/noindex>.<br \/>\n5. Tommy Thompson, studiues i AI dhe zhvillues lojrash, publikon videa n\u00eb kanalin e tij n\u00eb YouTube <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/user\/tthompso\">AI and Games<\/a><\/noindex> me shpjegime dhe studime mbi AI n\u00eb loj\u00ebrat komerciale.<\/p>\n<p>Libra n\u00eb tem\u00eb:<\/p>\n<p>1. Seri librash Game AI Pro p\u00ebrb\u00ebn mbledhje artikujsh t\u00eb shkurtra q\u00eb shpjegojn\u00eb si t\u00eb implementohet funksionet e caktuar ose si t\u00eb zgjidhen probleme t\u00eb caktuara.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/go.gamedev.net\/?id=13722X707581&amp;xs=1&amp;isjs=1&amp;url=https%3A%2F%2Famzn.to%2F2KGoB8n&amp;xguid=f8ad586e5984991508efff4754027dbd&amp;xuuid=305451ecead59d76ca830fded0aab276&amp;xsessid=6ccb8b9fa3f10b478b65f7ed703a447b&amp;xcreo=0&amp;xed=0&amp;sref=https%3A%2F%2Fwww.gamedev.net%2Farticles%2Fprogramming%2Fartificial-intelligence%2Fthe-total-beginners-guide-to-game-ai-r4942%2F%3Fdo%3Dedit%26d%3D1%26id%3D4942%26csrfKey%3D7015c6d2c5c643e87baa74f8e5d2c094&amp;pref=https%3A%2F%2Fwww.gamedev.net%2Farticles%2Fprogramming%2Fartificial-intelligence%2Fthe-total-beginners-guide-to-game-ai-r4942%2F&amp;xtz=420&amp;jv=13.7.1&amp;bv=2.5.1\">Game AI Pro: Collected Wisdom of Game AI Professionals<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/go.gamedev.net\/?id=13722X707581&amp;xs=1&amp;isjs=1&amp;url=https%3A%2F%2Famzn.to%2F2KFKyoe&amp;xguid=f8ad586e5984991508efff4754027dbd&amp;xuuid=305451ecead59d76ca830fded0aab276&amp;xsessid=6ccb8b9fa3f10b478b65f7ed703a447b&amp;xcreo=0&amp;xed=0&amp;sref=https%3A%2F%2Fwww.gamedev.net%2Farticles%2Fprogramming%2Fartificial-intelligence%2Fthe-total-beginners-guide-to-game-ai-r4942%2F%3Fdo%3Dedit%26d%3D1%26id%3D4942%26csrfKey%3D7015c6d2c5c643e87baa74f8e5d2c094&amp;pref=https%3A%2F%2Fwww.gamedev.net%2Farticles%2Fprogramming%2Fartificial-intelligence%2Fthe-total-beginners-guide-to-game-ai-r4942%2F&amp;xtz=420&amp;jv=13.7.1&amp;bv=2.5.1\">Game AI Pro 2: Collected Wisdom of Game AI Professionals<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/amzn.to\/2KF4irS\">Game AI Pro 3: Collected Wisdom of Game AI Professionals<\/a><\/noindex><\/p>\n<p>2. Seri AI Game Programming Wisdom \u2014 paraardh\u00ebsi i seris\u00eb Game AI Pro. Ajo p\u00ebrmban metoda m\u00eb t\u00eb vjetra, por pothuajse t\u00eb gjitha jan\u00eb relevante edhe sot.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/amzn.to\/2ARFhKx\">AI Game Programming Wisdom 1<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/amzn.to\/2Mkv4eh\">AI Game Programming Wisdom 2<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/amzn.to\/2nnuYEh\">AI Game Programming Wisdom 3<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/amzn.to\/2ARFEEV\">AI Game Programming Wisdom 4<\/a><\/noindex><\/p>\n<p>3. <noindex><a rel=\"nofollow\" href=\"https:\/\/amzn.to\/2AWKuRh\">Artificial Intelligence: A Modern Approach<\/a><\/noindex> \u2014 \u00ebsht\u00eb nj\u00eb nga tekstet baza p\u00ebr t\u00eb gjith\u00eb ata q\u00eb d\u00ebshirojn\u00eb t\u00eb kuptojn\u00eb fush\u00ebn e p\u00ebrgjithshme t\u00eb inteligjenc\u00ebs artificiale. Ky lib\u00ebr nuk \u00ebsht\u00eb p\u00ebr zhvillimin e loj\u00ebrave \u2014 provon bazat e AI.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/pixonic\/blog\/428892\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0431 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0435 \u0432 \u0438\u0433\u0440\u0430\u0445. \u0421 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043f\u0440\u043e \u0418\u0418 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445, \u0430 \u0435\u0449\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u0430\u043a, \u0433\u0434\u0435 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u2014 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c 35 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-52118","post","type-post","status-publish","format-standard","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0431 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0435 \u0432 \u0438\u0433\u0440\u0430\u0445. \u0421 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043f\u0440\u043e \u0418\u0418 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445, \u0430 \u0435\u0449\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u0430\u043a, \u0433\u0434\u0435 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u2014 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c 35\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0418\u0418: \u0433\u0430\u0439\u0434 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0431 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0435 \u0432 \u0438\u0433\u0440\u0430\u0445. \u0421 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043f\u0440\u043e \u0418\u0418 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445, \u0430 \u0435\u0449\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u0430\u043a, \u0433\u0434\u0435 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u2014 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c 35\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T10:59:47+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Si t\u00eb krijoni AI-n\u00eb e loj\u00ebrave: nj\u00eb udh\u00ebzues p\u00ebr fillestar\u00ebt | ProHoster","description":"Kam natyra t\u00eb nj\u00eb materiali interesant mbi inteligjenc\u00ebn artificiale n\u00eb loj\u00ebra. Ai shpjegon gj\u00ebrat bazike p\u00ebr AI me shembuj t\u00eb thjesht\u00eb, si dhe p\u00ebrmban shum\u00eb mjete t\u00eb dobishme dhe metoda p\u00ebr zhvillimin dhe projektimin e saj. Informacione mbi m\u00ebnyr\u00ebn, vendin dhe koh\u00ebn e p\u00ebrdorimit t\u00eb tyre gjithashtu jan\u00eb t\u00eb pranishme. Shumica e shembujve jan\u00eb shkruar n\u00eb pseudokod, k\u00ebshtu q\u00eb njohurit\u00eb e thella t\u00eb programimit nuk jan\u00eb t\u00eb nevojshme.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0418\u0418: \u0433\u0430\u0439\u0434 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 | ProHoster","og:description":"\u041d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0431 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0435 \u0432 \u0438\u0433\u0440\u0430\u0445. \u0421 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u043f\u0440\u043e \u0418\u0418 \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445, \u0430 \u0435\u0449\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0435\u0433\u043e \u0443\u0434\u043e\u0431\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u0430\u043a, \u0433\u0434\u0435 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u2014 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u043a\u043e\u0434\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f. \u041f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c 35","og:url":"https:\/\/prohoster.info\/sq\/blog\/novosti-interneta\/kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T21:00:00+00:00","article:modified_time":"2020-02-18T10:59:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52118","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 02:32:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:49:49","updated":"2026-01-24 02:32:21"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/52118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=52118"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/52118\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=52118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=52118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=52118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}