{"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\/news\/kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih","title":{"rendered":"Si t\u00eb krijosh nj\u00eb AI lojrash: udh\u00ebzues p\u00ebr fillestar\u00ebt","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/9e57175b233a104e0df98383b374eded.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNata shkova n\u00eb nj\u00eb material interesant mbi inteligjenc\u00ebn artificiale n\u00eb loj\u00ebra. Me shpjegime t\u00eb koncepteve baz\u00eb mbi AI n\u00eb shembuj t\u00eb thjesht\u00eb, dhe gjithashtu p\u00ebrmban shum\u00eb mjete dhe metoda t\u00eb dobishme p\u00ebr zhvillimin dhe projektimin e tij t\u00eb p\u00ebrshtatsh\u00ebm. Si, ku dhe kur t'i p\u00ebrdor\u00ebsh ato \u2014 gjithashtu \u00ebsht\u00eb aty.<\/p>\n<p>Shumica e shembujve jan\u00eb shkruar n\u00eb pseudokod, k\u00ebshtu q\u00eb njohuri t\u00eb thella mbi programimin nuk do t\u00eb nevojiten. Posht\u00eb keni 35 faqe teksti me imazhe dhe GIF-e, k\u00ebshtu q\u00eb p\u00ebrgatituni.<\/p>\n<p>UPD. M\u00eb vjen keq, por kam b\u00ebr\u00eb tashm\u00eb nj\u00eb p\u00ebrkthim t\u00eb 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 arsye artikulli m\u00eb ka shp\u00ebtuar (kam p\u00ebrdorur k\u00ebrkimin, por di\u00e7ka nuk shkoi si\u00e7 duhet). Dhe duke qen\u00eb se shkruaj n\u00eb nj\u00eb blog t\u00eb dedikuar zhvillimit t\u00eb loj\u00ebrave, vendosa t\u00eb l\u00eb versionin tim t\u00eb p\u00ebrkthimit p\u00ebr ndjek\u00ebsit (disa momente jan\u00eb formuluar ndryshe, disa \u2014 jan\u00eb l\u00ebn\u00eb q\u00ebllimisht 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 inteligjenca artificiale?<\/h2>\n<p>\nInteligjenca artificiale e loj\u00ebrave p\u00ebrqendrohet n\u00eb veprimet q\u00eb nj\u00eb objekt duhet t\u00eb kryej\u00eb, n\u00eb var\u00ebsi t\u00eb kushteve n\u00eb t\u00eb cilat ndodhet. Kjo zakonisht quhet menaxhimi i \"agjent\u00ebve inteligjent\u00eb\", ku agjenti \u00ebsht\u00eb nj\u00eb personazh loje, nj\u00eb mjet, 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 civilization. N\u00eb \u00e7do rast, kjo \u00ebsht\u00eb di\u00e7ka q\u00eb duhet t\u00eb shoh\u00eb mjedisin e saj, t\u00eb marr\u00eb vendime n\u00eb p\u00ebrputhje me t\u00eb, dhe t\u00eb veproj\u00eb n\u00eb p\u00ebrputhje me ato. Ky proces quhet cikli Sense\/Think\/Act (Ndjeni\/Mendoni\/Vepra):<\/p>\n<ul>\n<li>Sense: agjenti gjen ose merr informacion mbi 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 tu eksploruar).<\/li>\n<li>Think: agjenti vendos si t\u00eb reagoj\u00eb (vler\u00ebson n\u00ebse \u00ebsht\u00eb mjaft e sigurt t\u00eb mbledh\u00eb objekte ose n\u00ebse duhet fillimisht t\u00eb luftoj\u00eb\/zhvillohet).<\/li>\n<li>Act: agjenti kryen veprime p\u00ebr t\u00eb realizuar vendimin e m\u00ebparsh\u00ebm (nisi l\u00ebvizjen drejt armikut ose objektit).<\/li>\n<li>\u2026tani situata ka ndryshuar p\u00ebr shkak t\u00eb veprimeve t\u00eb personazheve, k\u00ebshtu q\u00eb cikli p\u00ebrs\u00ebritet me informacion t\u00eb ri.<\/li>\n<\/ul>\n<p>\nAI, n\u00eb p\u00ebrgjith\u00ebsi, p\u00ebrqendrohet n\u00eb pjes\u00ebn Sense t\u00eb ciklit. P\u00ebr shembull, makinat 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. Zakonisht, kjo b\u00ebhet nga m\u00ebsimi makinerik, i cili p\u00ebrpunon t\u00eb dh\u00ebnat hyr\u00ebse dhe u jep kuptim atyre, duke nxjerr\u00eb informacion semantik si \"ka nj\u00eb makin\u00eb tjet\u00ebr 20 hapa p\u00ebrpara jush\". K\u00ebto quhen probleme klasifikimi.<\/p>\n<p>Loj\u00ebrat nuk kan\u00eb nevoj\u00eb p\u00ebr nj\u00eb sistem t\u00eb komplikuar p\u00ebr t\u00eb nxjerr\u00eb informacion, pasi shumica e t\u00eb dh\u00ebnave tashm\u00eb \u00ebsht\u00eb nj\u00eb pjes\u00eb e pandashme e saj. Nuk ka nevoj\u00eb t\u00eb ekzekutohen algoritme njohjeje t\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 IA n\u00eb loj\u00ebra<\/h2>\n<p>\nIA ka nj\u00eb s\u00ebr\u00eb kufizimesh q\u00eb duhet t\u00eb respektohen:<\/p>\n<ul>\n<li>IA nuk ka nevoj\u00eb t\u00eb trajnohet paraprakisht, si\u00e7 b\u00ebhet me algoritmet e m\u00ebsimit makinerik. \u00cbsht\u00eb pa kuptim t\u00eb shkruash nj\u00eb rrjet nervor 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 t\u00eb loj\u00ebs kund\u00ebr tyre. Pse? Sepse loja nuk \u00ebsht\u00eb l\u00ebshuar, dhe nuk ka lojtar\u00eb.<\/li>\n<li>Loja duhet t\u00eb arg\u00ebtoj\u00eb dhe t\u00eb sfidoj\u00eb, prandaj 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 sikur po luajn\u00eb kund\u00ebr njer\u00ebzve t\u00eb v\u00ebrtet\u00eb. Programi AlphaGo e kaloi njeriun, por hapat e zgjedhur ishin shum\u00eb larg kuptimit tradicional t\u00eb loj\u00ebs. N\u00ebse loja imiton nj\u00eb kund\u00ebrshtar njeri, nj\u00eb ndjenj\u00eb e till\u00eb nuk duhet t\u00eb ekzistoj\u00eb. Algoritmi duhet t\u00eb ndryshohet p\u00ebr t\u00eb marr\u00eb vendime t\u00eb besueshme, e jo ideale.<\/li>\n<li>IA duhet t\u00eb punoj\u00eb n\u00eb koh\u00eb reale. Kjo do t\u00eb thot\u00eb se algoritmi nuk mund t\u00eb monopolizoj\u00eb p\u00ebrdorimin e procesorit p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb p\u00ebr t\u00eb marr\u00eb vendime. Edhe 10 milisekonda p\u00ebr k\u00ebt\u00eb \u2014 \u00ebsht\u00eb shum\u00eb gjat\u00eb, sepse shumic\u00ebs s\u00eb loj\u00ebrave u mjaftojn\u00eb nga 16 n\u00eb 33 milisekonda p\u00ebr t\u00eb kryer t\u00eb gjith\u00eb p\u00ebrpunimin dhe p\u00ebr t'u kaluar n\u00eb kadrin e ardhsh\u00ebm t\u00eb grafik\u00ebs.<\/li>\n<li>Idealisht, ndonj\u00eb pjes\u00eb e sistemit duhet t\u00eb drejtohet nga t\u00eb dh\u00ebnat, k\u00ebshtu q\u00eb \"not-koduesit\" 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 qasje t\u00eb IA q\u00eb mbulojn\u00eb gjith\u00eb ciklin Sense\/Think\/Act.<\/p>\n<h3>Marrja e vendimeve bazike<\/h3>\n<p>\nT\u00eb fillojm\u00eb me loj\u00ebn m\u00eb t\u00eb thjesht\u00eb \u2014 Pong. Q\u00ebllimi: t\u00eb l\u00ebvizni platform\u00ebn (paddle) n\u00eb m\u00ebnyr\u00eb q\u00eb topi t\u00eb riciklohet nga ajo dhe t\u00eb mos kaloj\u00eb p\u00ebrmes. Kjo \u00ebsht\u00eb si tenisi, n\u00eb t\u00eb cilin humbni n\u00ebse nuk e godisni topin. K\u00ebtu, AI ka nj\u00eb detyr\u00eb relativisht t\u00eb leht\u00eb \u2014 t\u00eb vendos\u00eb n\u00eb cil\u00ebn drejtim t\u00eb l\u00ebviz\u00eb platform\u00ebn.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 e kusht\u00ebzuar<\/h3>\n<p>\nP\u00ebr AI n\u00eb Pong, zgjidhja m\u00eb e dukshme \u00ebsht\u00eb t\u00eb p\u00ebrpiqet gjithmon\u00eb t\u00eb vendos\u00eb platform\u00ebn posht\u00eb topit.<\/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\/p\u00ebrdit\u00ebsim nd\u00ebrsa lojtaria \u00ebsht\u00eb duke u luajtur:<br \/>\nn\u00ebse topi \u00ebsht\u00eb n\u00eb t\u00eb majt\u00eb t\u00eb paddle:<br \/>\n l\u00ebviz platform\u00ebn n\u00eb t\u00eb majt\u00eb<br \/>\nndryshe n\u00ebse topi \u00ebsht\u00eb n\u00eb t\u00eb djatht\u00eb t\u00eb paddle:<br \/>\n l\u00ebviz platform\u00ebn 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 ka nevoj\u00eb ta komplikohet, n\u00ebse t\u00eb dh\u00ebnat dhe veprimet e mundshme p\u00ebr agentin nuk jan\u00eb shum\u00eb.<\/p>\n<p>Ky qasje \u00ebsht\u00eb aq e thjesht\u00eb, saq\u00eb e gjith\u00eb cikli Sense\/Think\/Act \u00ebsht\u00eb pothuajse i paduksh\u00ebm. Por ai \u00ebsht\u00eb aty:<\/p>\n<ul>\n<li>Pjesa Sense \u00ebsht\u00eb n\u00eb dy operator\u00ebt if. Loja di se 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 p\u00ebrfshin gjithashtu dy operator\u00eb if. Ato p\u00ebrfaq\u00ebsojn\u00eb dy zgjidhje, t\u00eb cilat n\u00eb k\u00ebt\u00eb rast jan\u00eb ekskluzive. Si rezultat, p\u00ebrzgjidhet nj\u00eb nga tre veprimet \u2014 t\u00eb l\u00ebvizni platform\u00ebn n\u00eb t\u00eb majt\u00eb, t\u00eb l\u00ebvizni n\u00eb t\u00eb djatht\u00eb, ose t\u00eb mos b\u00ebni asgj\u00eb, n\u00ebse ajo tashm\u00eb \u00ebsht\u00eb 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, ato mund t\u00eb l\u00ebvizin 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 grup t\u00eb thjesht\u00eb rregullash (n\u00eb k\u00ebt\u00eb rast operator\u00eb 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 i loj\u00ebs 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 \u00abgjethe\u00bb \u2014 nj\u00eb vendim se cilin veprim t\u00eb marr\u00eb.<\/p>\n<p>T\u00eb b\u00ebjm\u00eb nj\u00eb diagram rrjedhe p\u00ebr pem\u00ebn e vendimeve p\u00ebr algoritmin ton\u00eb t\u00eb platform\u00ebs:<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 (nyje) \u2014 AI p\u00ebrdor teorin\u00eb e grafik\u00ebve p\u00ebr t\u00eb p\u00ebrshkruar struktura t\u00eb tilla. Ka dy lloje nyjesh:<\/p>\n<ul>\n<li>Nyjet e vendimmarrjes: zgjedhja midis dy alternativave n\u00eb baz\u00eb t\u00eb kontrollit t\u00eb ndonj\u00eb kushti, ku \u00e7do alternativ\u00eb p\u00ebrfaq\u00ebsohet si nj\u00eb nyje e ve\u00e7ant\u00eb.<\/li>\n<li>Nyjet p\u00ebrfundimtare: veprimi p\u00ebr t\u00eb kryer, duke p\u00ebrfaq\u00ebsuar vendimin p\u00ebrfundimtar.<\/li>\n<\/ul>\n<p>\nAlgoritmi fillon me nodin e par\u00eb (\u201crr\u00ebnj\u00ebn\u201d e pem\u00ebs). Ai ose merr nj\u00eb vendim n\u00ebse t\u00eb kaloj\u00eb n\u00eb nodin f\u00ebmij\u00eb, ose kryen veprimin q\u00eb \u00ebsht\u00eb ruajtur n\u00eb nod, dhe p\u00ebrfundon.<\/p>\n<p>Cilado qoft\u00eb p\u00ebrfitimi, n\u00ebse pem\u00ebt e vendimeve b\u00ebjn\u00eb t\u00eb nj\u00ebjt\u00ebn pun\u00eb si operator\u00ebt if n\u00eb seksionin e m\u00ebparsh\u00ebm? K\u00ebtu ekziston nj\u00eb sistem i p\u00ebrbashk\u00ebt, ku \u00e7do vendim ka vet\u00ebm nj\u00eb kusht dhe dy rezultate t\u00eb mundshme. Kjo e lejon zhvilluesin 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 v\u00ebshtir\u00eb. Le ta paraqesim n\u00eb form\u00ebn e nj\u00eb tabeli:<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/6875293a60ff9d0efa26fb5e1aa4b21c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb an\u00ebn e kodit do t\u00eb merrni nj\u00eb sistem p\u00ebr t\u00eb lexuar rreshta. Krijoni nj\u00eb nod p\u00ebr secilin prej tyre, lidheni logjik\u00ebn e vendimeve n\u00eb baz\u00eb t\u00eb kolon\u00ebs s\u00eb dyt\u00eb dhe nodet f\u00ebmij\u00eb n\u00eb baz\u00eb t\u00eb kolonave t\u00eb tret\u00eb dhe t\u00eb kat\u00ebrt. Ju ende duhet t\u00eb programoni kushtet dhe veprimet, por tani struktura e loj\u00ebs do t\u00eb jet\u00eb m\u00eb e komplikuar. N\u00eb t\u00eb, ju shtoni vendime dhe veprime shtes\u00eb, dhe m\u00eb pas konfiguroni t\u00ebr\u00eb AI-n\u00eb duke redaktuar thjesht nj\u00eb sked\u00eb me definicionin e pem\u00ebs. Pastaj e kaloni sked\u00ebn dizajnerit t\u00eb loj\u00ebs, i cili do t\u00eb jet\u00eb n\u00eb gjendje t\u00eb ndryshoj\u00eb sjelljen pa ribashkimin e loj\u00ebs dhe ndryshimin e kodit.<\/p>\n<p>Pem\u00ebt e vendimeve jan\u00eb shum\u00eb t\u00eb dobishme kur nd\u00ebrtohen automatikisht mbi baz\u00ebn e nj\u00eb grupi t\u00eb madh shembujsh (p.sh. duke p\u00ebrdorur algoritmin ID3). Kjo i b\u00ebn ato nj\u00eb mjet efektiv dhe t\u00eb lart\u00eb n\u00eb performanc\u00eb p\u00ebr klasifikimin e situatave n\u00eb baz\u00eb t\u00eb t\u00eb dh\u00ebnave t\u00eb marra. Sidoqoft\u00eb, ne po dalim jasht\u00eb nj\u00eb sistemi t\u00eb thjesht\u00eb p\u00ebr zgjedhjen e veprimeve nga agjent\u00ebt.<\/p>\n<h3>Skenar\u00ebt<\/h3>\n<p>\nNe kemi shqyrtuar sistemin e pem\u00ebve t\u00eb vendimeve, i cili p\u00ebrdorte kushte dhe veprime t\u00eb krijuara p\u00ebrpara. Njeriu q\u00eb projektan AI-n\u00eb mund t\u00eb organizoj\u00eb pem\u00ebn si\u00e7 d\u00ebshiron, por ai ende duhet t\u00eb mb\u00ebshtetet tek programuesi q\u00eb e ka koduar at\u00eb t\u00eb gjith\u00eb. \u00c7far\u00eb n\u00ebse do t\u00eb mund t\u00eb jepnim dizajnerit mjete p\u00ebr t\u00eb krijuar kushtet ose veprimet e tij t\u00eb veta?<\/p>\n<p>P\u00ebr t\u00eb mos b\u00ebr\u00eb 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, ku dizajneri do t\u00eb regjistroj\u00eb kushtet p\u00ebr t\u00eb kontrolluar 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 t\u00eb krijosh nj\u00eb AI lojrash: 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 me tabel\u00ebn e par\u00eb, por zgjidhjet p\u00ebrmbajn\u00eb kodin e tyre t\u00eb brendsh\u00ebm, paksa t\u00eb ngjash\u00ebm me pjes\u00ebn kushtore t\u00eb if-operatorit. N\u00eb an\u00ebn e kodit, kjo do t\u00eb lexohesh n\u00eb kolumn\u00ebn e dyt\u00eb p\u00ebr node-t e vendimmarrjes, por n\u00eb vend q\u00eb t\u00eb k\u00ebrkoj\u00eb nj\u00eb kusht specifik p\u00ebr tu ekzekutuar (A \u00ebsht\u00eb topi majtas nga paddle), vler\u00ebson shprehjen kushtore dhe kthen true ose false p\u00ebrkat\u00ebsisht. Kjo b\u00ebhet me ndihm\u00ebn e gjuh\u00ebve skriptuese Lua ose Angelscript. Me ndihm\u00ebn e k\u00ebtyre, 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.position). 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, duke e b\u00ebr\u00eb at\u00eb ideale p\u00ebr rregullime t\u00eb shpejta t\u00eb logjik\u00ebs s\u00eb loj\u00ebs dhe i lejon \"n\u00ebbrend\u00ebsit\" t\u00eb krijojn\u00eb vet\u00eb funksionet e nevojshme.<\/p>\n<p>N\u00eb shembullin e dh\u00ebn\u00eb, gjuha e skripteve p\u00ebrdoret vet\u00ebm p\u00ebr vler\u00ebsimin e shprehjes kushtore, por ajo 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.position.x += 10). K\u00ebshtu, q\u00eb veprimi gjithashtu t\u00eb p\u00ebrcaktohet n\u00eb skenar, pa pasur nevoj\u00eb p\u00ebr programimin e Move Paddle Right.<\/p>\n<p>Mund t\u00eb shkojm\u00eb edhe m\u00eb larg dhe t\u00eb shkruajm\u00eb plot\u00ebsisht nj\u00eb pem\u00eb vendimmarrjeje n\u00eb gjuh\u00ebn e skripteve. Kjo do t\u00eb ishte kod n\u00eb form\u00ebn e operator\u00ebve kushtor\u00eb t\u00eb programuar fort (hardcoded), por ata do t\u00eb ndodheshin n\u00eb skedar\u00eb t\u00eb jasht\u00ebm t\u00eb skriptimit, dmth mund t\u00eb ndryshoheshin pa kompaktimin e t\u00ebr\u00eb programit. Shpesh mund t\u00eb ndryshoni skedarin e skenarit direkt n\u00eb loj\u00eb, p\u00ebr t\u00eb testuar shpejt reagimet e ndryshme t\u00eb AI.<\/p>\n<h3>Reagimi ndaj ngjarjeve<\/h3>\n<p>\nShembujt e m\u00ebsip\u00ebrm i p\u00ebrshtaten perfekt Pong. Ata vazhdimisht ekzekutojn\u00eb ciklin Sense\/Think\/Act dhe veprojn\u00eb n\u00eb baz\u00eb t\u00eb gjendjes s\u00eb fundit t\u00eb bot\u00ebs. Por n\u00eb loj\u00ebra m\u00eb t\u00eb nd\u00ebrlikuara, duhet t\u00eb reagosh ndaj ngjarjeve t\u00eb ve\u00e7anta, dhe jo t\u00eb vler\u00ebsosh gjith\u00e7ka menj\u00ebher\u00eb. Pong, n\u00eb k\u00ebt\u00eb rast, nuk \u00ebsht\u00eb m\u00eb nj\u00eb shembull i mir\u00eb. Le t\u00eb zgjidhim nj\u00eb tjet\u00ebr. <\/p>\n<p>Imagjinoni nj\u00eb loj\u00eb q\u00ebllimi, ku armiqt\u00eb jan\u00eb t\u00eb pal\u00ebvizur derisa t\u00eb zbulojn\u00eb lojtarin, pas s\u00eb cil\u00ebs veprojn\u00eb sipas \"specializimit\" t\u00eb tyre: dikush do t\u00eb niset p\u00ebr t\u00eb \"goditur\", ndonj\u00eb do t\u00eb sulmoj\u00eb nga larg. Kjo \u00ebsht\u00eb ende nj\u00eb sistem reagues themelor \u2014 \"n\u00ebse lojtari \u00ebsht\u00eb v\u00ebn\u00eb re, b\u00ebj di\u00e7ka\" \u2014 por mund t\u00eb ndahet logjikisht n\u00eb ngjarjen Player Seen (lojtari i zbuluar) dhe reagimin (zgjidhni nj\u00eb p\u00ebrgjigje dhe ekzekutoni at\u00eb).<\/p>\n<p>Kjo na kthen n\u00eb ciklin Sense\/Think\/Act. Mund t\u00eb kodojm\u00eb pjes\u00ebn Sense q\u00eb \u00e7do korniz\u00eb do t\u00eb kontrolloj\u00eb \u2014 a e sheh AI lojtarin. N\u00ebse jo \u2014 nuk ndodh 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, ku thuhet: \"kur ndodh ngjarja Player Seen, b\u00ebj\", ku \u2014 \u00ebsht\u00eb reagimi q\u00eb ju nevojitet p\u00ebr t'u drejtuar n\u00eb pjes\u00ebt Think dhe Act. K\u00ebshtu do t\u00eb vendosni reagimet p\u00ebr ngjarjen Player Seen: p\u00ebr nj\u00eb personazh \"t\u00eb ngutsh\u00ebm\" \u2014 ChargeAndAttack, dhe p\u00ebr nj\u00eb snajper \u2014 HideAndSnipe. K\u00ebto lidhje mund t\u00eb krijohen n\u00eb skedarin e t\u00eb dh\u00ebnave p\u00ebr redaktim t\u00eb shpejt\u00eb pa nevoj\u00ebn p\u00ebr t\u00eb rifilluar kompaktimin. Dhe gjithashtu mund t\u00eb p\u00ebrdoren gjuh\u00ebt e scripting.<\/p>\n<h2>Marrja e vendimeve t\u00eb nd\u00ebrlikuara<\/h2>\n<p>\nNd\u00ebrsa sistemet e thjeshta t\u00eb reagimit jan\u00eb shum\u00eb efektive, ka shum\u00eb situata kur ato jan\u00eb t\u00eb pamjaftueshme. Ndonj\u00ebher\u00eb \u00ebsht\u00eb e nevojshme t\u00eb pranoni vendime t\u00eb ndryshme, duke u bazuar n\u00eb at\u00eb q\u00eb agjenti po b\u00ebn n\u00eb at\u00eb moment, por ta paraqitni at\u00eb si nj\u00eb kusht \u00ebsht\u00eb e v\u00ebshtir\u00eb. Ndonj\u00ebher\u00eb ka shum\u00eb kushte p\u00ebr t'i paraqitur n\u00eb m\u00ebnyr\u00eb efektive n\u00eb nj\u00eb pem\u00eb vendimesh ose skript. Ndonj\u00ebher\u00eb \u00ebsht\u00eb e nevojshme t\u00eb vler\u00ebsohet p\u00ebrpara se si do t\u00eb ndryshoj\u00eb situata, p\u00ebrpara se t\u00eb merret nj\u00eb vendim p\u00ebr hapat e ardhsh\u00ebm. P\u00ebr t\u00eb zgjidhur k\u00ebto probleme, jan\u00eb t\u00eb nevojshme qasje m\u00eb t\u00eb nd\u00ebrlikuara.<\/p>\n<h3>Makin\u00eb e Shteteve t\u00eb Finit<\/h3>\n<p>\nMakin\u00eb e Shteteve t\u00eb Finit ose FSM (finito automat) \u2014 \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 shtete t\u00eb mundshme dhe se ai mund t\u00eb kaloj\u00eb nga nj\u00ebra gjendje n\u00eb tjetr\u00ebn. Shum\u00eb shtete jan\u00eb t\u00eb p\u00ebrcaktuara \u2014 prej andej dhe emri. Nj\u00eb shembull m\u00eb i mir\u00eb nga jeta \u00ebsht\u00eb sinjali i trafikut. N\u00eb vende t\u00eb ndryshme, sekufencat e ndryshme t\u00eb dritave, por principi \u00ebsht\u00eb i nj\u00ebjt\u00eb \u2014 \u00e7do gjendje p\u00ebrfaq\u00ebson di\u00e7ka (ndal, shko etj.). Sinjali i trafikut \u00ebsht\u00eb gjithmon\u00eb n\u00eb nj\u00eb gjendje n\u00eb \u00e7do moment kohor, dhe kalon nga nj\u00ebra n\u00eb tjetr\u00ebn n\u00eb baz\u00eb t\u00eb rregullave t\u00eb thjeshta.<\/p>\n<p>Me NPC-t\u00eb n\u00eb loj\u00ebra \u00ebsht\u00eb nj\u00eb histori e ngjashme. P\u00ebr shembull, le t\u00eb marrim nj\u00eb roje me k\u00ebto gjendje:<\/p>\n<ul>\n<li>Patrullues (Patrolling).<\/li>\n<li>Duke sulmuar (Attacking).<\/li>\n<li>Duke ikur (Fleeing).<\/li>\n<\/ul>\n<p>\nDhe k\u00ebto kushte p\u00ebr ndryshimin e gjendjes s\u00eb 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, 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>\nIgualmente, mund t\u00eb shkruajm\u00eb if-operator\u00eb me nj\u00eb variab\u00ebl-stanj\u00eb roje dhe kontrollime t\u00eb ndryshme: a ka ndonj\u00eb armik af\u00ebr, cilat jan\u00eb nivelet e sh\u00ebndetit t\u00eb NPC-ve, etj. Do t\u00eb shtojm\u00eb disa gjendje t\u00eb tjera:<\/p>\n<ul>\n<li>Mosveprimi (Idling) \u2014 nd\u00ebrmjet patrullave.<\/li>\n<li>K\u00ebrkimi (Searching) \u2014 kur armiku i par\u00eb \u00ebsht\u00eb fshehur.<\/li>\n<li>K\u00ebrkesa p\u00ebr ndihm\u00eb (Finding Help) \u2014 kur armiku \u00ebsht\u00eb par\u00eb, por \u00ebsht\u00eb shum\u00eb i fort\u00eb p\u00ebr t'u luftuar nj\u00eb me nj\u00eb.<\/li>\n<\/ul>\n<p>\nZgjedhja p\u00ebr secilin prej tyre \u00ebsht\u00eb e kufizuar \u2014 p\u00ebr shembull, rojet nuk do t\u00eb shkojn\u00eb t\u00eb k\u00ebrkojn\u00eb armikun e fshehur n\u00ebse kan\u00eb sh\u00ebndet t\u00eb ul\u00ebt.<\/p>\n<p>N&euml; fund t&euml; fundit, lista e madhe e &quot;n&euml;se &lt;x \u0438 y, \u043d\u043e \u043d\u0435 z&gt;, nuk &euml;sht&euml; e nevojshme, madje, ajo jep nj&euml; gabim sintaksor &lt;p&gt;&quot;, mund t&euml; b&euml;het shum&euml; e ngarkuar, prandaj duhet t&euml; formulojm&euml; nj&euml; metod&euml; q&euml; do t&euml; na mund&euml;soj&euml; t&euml; mbajm&euml; mend gjendjet dhe kalimet midis gjendjeve. P&euml;r ta b&euml;r&euml; k&euml;t&euml;, do t&euml; marrim parasysh t&euml; gjitha gjendjet dhe n&euml;n &ccedil;do gjendje do t&euml; regjistrojm&euml; n&euml; nj&euml; list&euml; t&euml; gjitha kalimet n&euml; gjendje t&euml; tjera, s&euml; bashku me kushtet e nevojshme p&euml;r to.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/ba4c401aa20de3d22d2478cba5a4b1ec.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKy \u00ebsht\u00eb nj\u00eb tabel\u00eb e kalimeve t\u00eb gjendjeve \u2014 nj\u00eb m\u00ebnyr\u00eb komplekse p\u00ebr t\u00eb paraqitur FSM. Do t\u00eb vizatojm\u00eb nj\u00eb diagram dhe do t\u00eb marrim nj\u00eb pasqyr\u00eb t\u00eb plot\u00eb t\u00eb sjelljes s\u00eb NPC-ve.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/b4182359983cf573872dacc575af13dc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDiagrami reflekton thelbin e marrjes s\u00eb vendimeve p\u00ebr k\u00ebt\u00eb agjent n\u00eb baz\u00eb t\u00eb situat\u00ebs aktuale. \u00c7do shigjet\u00eb tregon kalimin nd\u00ebrmjet gjendjeve, n\u00ebse kushte af\u00ebr saj jan\u00eb t\u00eb v\u00ebrteta.<\/p>\n<p>N\u00eb \u00e7do p\u00ebrdit\u00ebsim ne kontrollojm\u00eb gjendjen aktuale t\u00eb agjentit, shikojm\u00eb list\u00ebn e kalimeve, dhe n\u00ebse kushtet p\u00ebr kalim jan\u00eb t\u00eb p\u00ebrmbushura, ai merr nj\u00eb gjendje t\u00eb re. P\u00ebr shembull, \u00e7do kad\u00ebr kontrollohet n\u00ebse ka mbaruar nj\u00eb timer 10-sekond\u00ebsh, dhe n\u00ebse po, nga gjendja Idling, rojet kalojn\u00eb n\u00eb Patrullim. N\u00eb t\u00eb nj\u00ebjt\u00ebn m\u00ebnyr\u00eb, gjendja Sulmimi kontrollon sh\u00ebndetin e agjentit \u2014 n\u00ebse \u00ebsht\u00eb i ul\u00ebt, ai kalon n\u00eb gjendjen Ikja.<\/p>\n<p>Kjo \u00ebsht\u00eb p\u00ebrpunimi i kalimeve nd\u00ebrmjet gjendjeve, por si p\u00ebr sjelljen e lidhur me vet\u00eb gjendjet? Sa i p\u00ebrket implementimit t\u00eb sjelljes reale p\u00ebr nj\u00eb gjendje t\u00eb ve\u00e7ant\u00eb, zakonisht ka dy lloje \u00abkrapi\u00bb, ku ne disa veprime i atribuojm\u00eb FSM:<\/p>\n<ul>\n<li>Veprimet q\u00eb ne i kryejm\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\u00ebr\u00ebn tjet\u00ebr.<\/li>\n<\/ul>\n<p>\nShembuj p\u00ebr llojin e par\u00eb. Gjendja Patrullimi \u00e7do kad\u00ebr do t\u00eb l\u00ebviz\u00eb agjentin n\u00ebp\u00ebr itinerarin e patrullimit. Gjendja Sulmimi \u00e7do kad\u00ebr do t\u00eb p\u00ebrpiqet t\u00eb filloj\u00eb nj\u00eb sulm ose t\u00eb kaloj\u00eb n\u00eb gjendjen kur kjo \u00ebsht\u00eb e mundur.<\/p>\n<p>P\u00ebr tipin e dyt\u00eb, le t\u00eb shqyrtojm\u00eb kalimin \u00abn\u00ebse armiku \u00ebsht\u00eb i duksh\u00ebm dhe armiku \u00ebsht\u00eb shum\u00eb i fort\u00eb, at\u00ebher\u00eb t\u00eb kalojm\u00eb n\u00eb gjendjen e Gjetjes s\u00eb Ndihm\u00ebs. 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 e Gjetjes s\u00eb Ndihm\u00ebs t\u00eb dij\u00eb ku t\u00eb drejtohet. Sapo t\u00eb gjendet ndihma, agjenti kthehet n\u00eb gjendjen e Sulmit. N\u00eb k\u00ebt\u00eb moment, ai do t\u00eb doj\u00eb t\u00eb tregoj\u00eb aleatit p\u00ebr k\u00ebrc\u00ebnimin, prandaj mund t\u00eb ndodhi veprimi InformoAleatinP\u00ebrK\u00ebrc\u00ebnimin.<\/p>\n<p>P\u00ebrs\u00ebri, ne mund ta shohim k\u00ebt\u00eb sistem p\u00ebrmes ciklit Ndjej\/Mendoj\/Veproj. Ndjeni manifestohet n\u00eb t\u00eb dh\u00ebnat q\u00eb p\u00ebrdoren nga logjika e kalimit. Mendoj \u2014 kalimet q\u00eb jan\u00eb t\u00eb disponueshme n\u00eb \u00e7do gjendje. Dhe Veprojm\u00eb realizohet nga veprimet q\u00eb kryhen p\u00ebrher\u00eb brenda gjendjes ose n\u00eb kalimet midis gjendjeve.<\/p>\n<p>Ndonj\u00ebher\u00eb, sondazhi i vazhduesh\u00ebm i kushteve t\u00eb kalimit mund t\u00eb jet\u00eb i kushtuesh\u00ebm. P\u00ebr shembull, n\u00ebse \u00e7do agjent do t\u00eb kryej\u00eb llogaritje t\u00eb komplikuara p\u00ebr \u00e7do korniz\u00eb p\u00ebr t\u00eb p\u00ebrcaktuar n\u00ebse sheh armik\u00eb dhe t\u00eb kuptoj\u00eb n\u00ebse mund t\u00eb kaloj\u00eb nga gjendja e Patrullimit n\u00eb Sulm \u2014 kjo do t\u00eb k\u00ebrkonte 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 p\u00ebrpunohen nd\u00ebrsa ndodhin. N\u00eb vend q\u00eb FSM t\u00eb kontrolloj\u00eb kushtin e kalimit \u00aba mundet agjenti im ta shikoj\u00eb lojtarin?\u00bb \u00e7do korniz\u00eb, \u00ebsht\u00eb e mundur t\u00eb konfigurohet nj\u00eb sistem i ve\u00e7ant\u00eb p\u00ebr t\u00eb kryer kontrollet m\u00eb rrall\u00eb (p\u00ebr shembull, 5 her\u00eb n\u00eb sekond\u00eb). Dhe rezultati do t\u00eb jet\u00eb Lojtari i D\u00ebshmuar, kur kontrolli kalon. <\/p>\n<p>Kjo i kalon n\u00eb FSM, i cili tani duhet t\u00eb kaloj\u00eb n\u00eb kushtin e p\u00ebrfunduar t\u00eb ngjarjes Lojtari i D\u00ebshmuar dhe t\u00eb reagoj\u00eb n\u00eb p\u00ebrputhje me rrethanat. Sjellja p\u00ebrfundimtare \u00ebsht\u00eb e nj\u00ebjt\u00eb p\u00ebrve\u00e7 nj\u00eb vonese pothuajse t\u00eb padukshme p\u00ebrpara p\u00ebrgjigjes. Megjithat\u00eb, performanca \u00ebsht\u00eb p\u00ebrmir\u00ebsuar si rezultat i ndarjes s\u00eb pjes\u00ebs s\u00eb Ndjenj\u00ebs n\u00eb nj\u00eb pjes\u00eb t\u00eb ve\u00e7ant\u00eb t\u00eb programit.<\/p>\n<h3>Makin\u00eb e kufizuar e gjendjes hierarkike<\/h3>\n<p>\nMegjithat\u00eb, punimi me FSM t\u00eb m\u00ebdha nuk \u00ebsht\u00eb gjithmon\u00eb i p\u00ebrshtatsh\u00ebm. Po t\u00eb d\u00ebshironim t\u00eb zgjerojm\u00eb gjendjen e sulmit, duke e z\u00ebvend\u00ebsuar at\u00eb me t\u00eb ve\u00e7anta MeleeAttacking (sulm a pran\u00eb) dhe RangedAttacking (sulm nga larg), do t\u00eb duhet t\u00eb ndryshonim kalimet nga t\u00eb gjitha gjendjet e tjera q\u00eb \u00e7ojn\u00eb n\u00eb gjendjen e Sulmit (t\u00eb tanishmet dhe t\u00eb ardhshmet).<\/p>\n<p>Sigurisht 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 e men\u00e7ur t\u00eb shmangnim p\u00ebrs\u00ebritjen, ve\u00e7an\u00ebrisht n\u00ebse do t\u00eb 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-luftarak\", ku ka vet\u00ebm nj\u00eb grup t\u00eb p\u00ebrbashk\u00ebt kalimesh n\u00eb gjendjet luftuese. N\u00ebse e imagjinojm\u00eb 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 jo-luftarake:<\/p>\n<p><i>Gjendjet kryesore:<\/i><br \/>\n<img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 beteje:<\/i><br \/>\n<img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 t\u00eb krijosh nj\u00eb AI lojrash: 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, e cila p\u00ebrfshin Idling dhe Patrolling. Me \u00e7do gjendje q\u00eb p\u00ebrmban FSM me n\u00ebn-gjendje (dhe k\u00ebto n\u00ebn-gjendje, nga ana e tyre, p\u00ebrmbajn\u00eb FSM t\u00eb veta - sa her\u00eb q\u00eb t'ju nevojitet), ne marrim nj\u00eb Hierarchical Finite State Machine ose HFSM (makin\u00eb e mbyllur hierarkike). Duke grupuar gjendjen jo-luftarake, kemi eliminuar 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 zgjerimi i gjendjes Attacking n\u00eb gjendjet MeleeAttacking dhe MissileAttacking, ato do t\u00eb jen\u00eb n\u00ebn-gjendje, duke kaluar nga nj\u00ebra tek tjetra n\u00eb baz\u00eb t\u00eb distanc\u00ebs nga armiku dhe disponueshm\u00ebris\u00eb s\u00eb municionit. N\u00eb p\u00ebrfundim, modelet e komplikuara t\u00eb sjelljes dhe n\u00ebn-modelet e sjelljes mund t\u00eb paraqiten me nj\u00eb minimum kalimesh t\u00eb p\u00ebrs\u00ebritura.<\/p>\n<h3>Pema e sjelljeve<\/h3>\n<p>\nMe HFSM krijohen kombinime komplekse t\u00eb sjelljeve n\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 lidhet ngusht\u00eb me gjendjen aktuale. Dhe n\u00eb shum\u00eb loj\u00ebra, kjo \u00ebsht\u00eb pik\u00ebrisht ajo q\u00eb ne na nevojitet. Dallimi i kujdessh\u00ebm n\u00eb p\u00ebrdorimin e hierarkis\u00eb s\u00eb gjendjeve mund t\u00eb zvog\u00ebloj\u00eb numrin e p\u00ebrs\u00ebritjeve gjat\u00eb kalimit. Por ndonj\u00ebher\u00eb ne kemi nevoj\u00eb p\u00ebr rregulla q\u00eb funksionojn\u00eb n\u00eb m\u00ebnyr\u00eb t\u00eb pavarur nga gjendja n\u00eb t\u00eb cil\u00ebn ndodhemi ose q\u00eb aplikohen n\u00eb pothuajse \u00e7do gjendje. P\u00ebr shembull, n\u00ebse sh\u00ebndeti i agjentit ka r\u00ebn\u00eb n\u00eb 25%, do t\u00eb d\u00ebshironit q\u00eb ai t\u00eb arratisej pavar\u00ebsisht nga se ishte n\u00eb betej\u00eb, n\u00eb nj\u00eb gjendje pasive apo n\u00eb bised\u00eb - do t\u00eb duhet t\u00eb shtoni k\u00ebt\u00eb kusht n\u00eb \u00e7do gjendje. Dhe n\u00ebse dizajneri juaj m\u00eb von\u00eb d\u00ebshiron t\u00eb ndryshoj\u00eb pragun e sh\u00ebndetit t\u00eb ul\u00ebt nga 25% n\u00eb 10%, kjo do t\u00eb k\u00ebrkonte p\u00ebrs\u00ebri pun\u00eb.<\/p>\n<p>Idealisht, p\u00ebr k\u00ebt\u00eb situat\u00eb nevojitet nj\u00eb sistem ku vendimet \"n\u00eb \u00e7far\u00eb gjendje t\u00eb jemi\" jan\u00eb jasht\u00eb vet\u00eb gjendjeve, p\u00ebr t\u00eb b\u00ebr\u00eb ndryshime vet\u00ebm n\u00eb nj\u00eb vend dhe p\u00ebr t\u00eb mos prekur kushtet e kalimit. K\u00ebtu dalin pem\u00ebt e sjelljes.<\/p>\n<p>Ka disa m\u00ebnyra p\u00ebr t'i zbatuar ato, por thelbi p\u00ebr t\u00eb gjitha \u00ebsht\u00eb pak a shum\u00eb i nj\u00ebjt\u00eb dhe i ngjash\u00ebm me pem\u00ebn e vendimeve: algoritmi fillon nga nyja \"rr\u00ebnjore\", nd\u00ebrsa n\u00eb pem\u00eb ka nyje q\u00eb p\u00ebrfaq\u00ebsojn\u00eb ose vendime, ose veprime. Megjithat\u00eb, ka disa dallime ky\u00e7e:<\/p>\n<ul>\n<li>Tani nyjet kthejn\u00eb nj\u00eb nga tre vlera: Succeeded (n\u00ebse puna \u00ebsht\u00eb kryer), Failed (n\u00ebse nuk mund t\u00eb nis\u00eb) ose Running (n\u00ebse ajo ende po ekzekutohet dhe nuk ka nj\u00eb rezultat p\u00ebrfundimtar).<\/li>\n<li>Nuk ka m\u00eb nyje vendimesh p\u00ebr t\u00eb zgjedhur midis dy alternativave. N\u00eb vend t\u00eb tyre, ka nyje Decorator, t\u00eb cilat kan\u00eb vet\u00ebm nj\u00eb nyj\u00eb f\u00ebmij\u00eb. N\u00ebse ato arrijn\u00eb sukses, ato ekzekutojn\u00eb nyj\u00ebn e tyre t\u00eb vetme f\u00ebmij\u00eb.<\/li>\n<li>Nyjet q\u00eb ekzekutojn\u00eb veprime kthejn\u00eb vler\u00ebn Running p\u00ebr t\u00eb p\u00ebrfaq\u00ebsuar veprimet q\u00eb po kryhen.<\/li>\n<\/ul>\n<p>\nKy grup i vog\u00ebl nyjesh mund t\u00eb kombinohet 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 rojeve nga shembulli i m\u00ebparsh\u00ebm si nj\u00eb pem\u00eb sjelljeje:<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 nj\u00eb kalim t\u00eb qart\u00eb nga gjendjet Idling\/Patrolling n\u00eb gjendjen Attacking ose n\u00eb ndonj\u00eb tjet\u00ebr. N\u00ebse armiku \u00ebsht\u00eb i duksh\u00ebm dhe sh\u00ebndeti i personazhit \u00ebsht\u00eb i ul\u00ebt, ekzekutimi do t\u00eb ndalet n\u00eb nyj\u00ebn Fleeing, pavar\u00ebsisht se cila nyj\u00eb ka ekzekutuar m\u00eb par\u00eb \u2014 Patrolling, Idling, Attacking, ose ndonj\u00eb tjet\u00ebr.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 komplekse \u2014 ka shum\u00eb m\u00ebnyra p\u00ebr t'i p\u00ebrb\u00ebr\u00eb ato, dhe gjetja e kombinimit t\u00eb duhur t\u00eb dekorator\u00ebve dhe nyjeve p\u00ebrb\u00ebr\u00ebse mund t\u00eb jet\u00eb problematike. Ka gjithashtu pyetje rreth frekuenc\u00ebs s\u00eb verifikimit t\u00eb pem\u00ebs \u2014 ne duam ta kalojm\u00eb at\u00eb \u00e7do pjes\u00eb, ose vet\u00ebm kur ndonj\u00eb nga kushtet ndryshon? Si ta ruajm\u00eb gjendjen q\u00eb lidhet me nyjet \u2014 si t\u00eb dim\u00eb kur kemi qen\u00eb n\u00eb gjendjen Idling p\u00ebr 10 sekonda ose si t\u00eb dim\u00eb cilat nyje jan\u00eb ekzekutuar her\u00ebn e fundit, p\u00ebr t\u00eb p\u00ebrpunuar sakt\u00eb sekuenc\u00ebn?<\/p>\n<p>Kjo \u00ebsht\u00eb arsyeja pse ekzistojn\u00eb shum\u00eb implementime. P\u00ebr shembull, n\u00eb disa sisteme nyjet dekorator jan\u00eb z\u00ebvend\u00ebsuar nga dekorator\u00eb t\u00eb integruar. Ato rishikojn\u00eb p\u00ebrs\u00ebri pem\u00ebn kur kushtet e dekoratorit ndryshojn\u00eb, ndihmojn\u00eb n\u00eb bashkimin e nyjeve dhe sigurojn\u00eb p\u00ebrdit\u00ebsime periodike.<\/p>\n<h3>Sistemi i bazuar n\u00eb utilitet<\/h3>\n<p>\nDisa loj\u00ebrash kan\u00eb shum\u00eb mekanika t\u00eb ndryshme. \u00cbsht\u00eb e preferueshme q\u00eb ato t\u00eb p\u00ebrfitojn\u00eb nga rregulla t\u00eb thjeshta dhe t\u00eb p\u00ebrgjithshme kalimi, por nuk \u00ebsht\u00eb e domosdoshme n\u00eb form\u00ebn e nj\u00eb peme t\u00eb plot\u00eb sjelljeje. 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 thjesht\u00eb t\u00eb studiojm\u00eb t\u00eb gjitha veprimet dhe t\u00eb zgjedhim at\u00eb m\u00eb t\u00eb p\u00ebrshtatshmen n\u00eb momentin aktual.<\/p>\n<p>Sistemi i bazuar n\u00eb dobishm\u00ebri (utility-based system) do t\u00eb ndihmoj\u00eb pik\u00ebrisht n\u00eb k\u00ebt\u00eb. \u00cbsht\u00eb nj\u00eb sistem ku agjenti ka shum\u00eb veprime dhe ai vet\u00eb zgjedh se cilin t\u00eb kryej\u00eb, duke u bazuar n\u00eb dobishm\u00ebrin\u00eb relative t\u00eb secilit. Ku dobishm\u00ebria \u00ebsht\u00eb nj\u00eb mas\u00eb arbitrare e k\u00ebsaj q\u00eb \u00ebsht\u00eb e r\u00ebnd\u00ebsishme ose e d\u00ebshirueshme p\u00ebr agjentin. <\/p>\n<p>Dobishm\u00ebrin\u00eb e llogaritur t\u00eb veprimit, bazuar n\u00eb gjendjen aktuale dhe mjedisin, agjenti mund ta verifikoj\u00eb dhe t\u00eb zgjedh\u00eb gjendjen tjet\u00ebr m\u00eb t\u00eb p\u00ebrshtatshme n\u00eb \u00e7do koh\u00eb. Kjo \u00ebsht\u00eb e ngjashme me FSM, p\u00ebrve\u00e7 se kalimet p\u00ebrcaktohen nga vler\u00ebsimi p\u00ebr \u00e7do gjendje potenciale, duke p\u00ebrfshir\u00eb gjendjen aktuale. Vini re se ne zgjedhim veprimin m\u00eb t\u00eb dobish\u00ebm p\u00ebr kalim (ose q\u00ebndrojm\u00eb, n\u00ebse e kemi kryer tashm\u00eb). 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>Sistema caktin\u00eb nj\u00eb gam\u00eb t\u00eb rast\u00ebsishme vlerash dobishm\u00ebrie \u2014 p\u00ebr shembull, nga 0 (krejt\u00ebsisht 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 vlere. Po kthehemi n\u00eb shembullin ton\u00eb me rojen:<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/085fb2c197bde93d78455d18e63c9c25.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\nKalimet midis veprimeve jan\u00eb t\u00eb paqart\u00eb \u2014 \u00e7do gjendje mund t\u00eb ndjek\u00eb \u00e7do tjet\u00ebr. Prioritetet e veprimeve ndodhen 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, dhe sh\u00ebndeti i personazhit \u00ebsht\u00eb i ul\u00ebt, at\u00ebher\u00eb Fleeing dhe FindingHelp do t\u00eb kthejn\u00eb vlera t\u00eb larta t\u00eb pad\u00ebshiruara. N\u00eb k\u00ebt\u00eb rast, FindingHelp do t\u00eb jet\u00eb gjithmon\u00eb m\u00eb e lart\u00eb. Po ashtu, veprimet jo-luftuese 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 ul\u00ebta se ato luftuese. Kjo duhet marr\u00eb 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 fiksuar, ose nj\u00eb nga dy vlera fiksuara. Nj\u00eb sistem m\u00eb realist parashikon kthimin e nj\u00eb vler\u00ebs nga nj\u00eb gam\u00eb e vazhdueshme vlerash. P\u00ebr shembull, veprimi Fleeing kthen vlera m\u00eb t\u00eb larta t\u00eb dobishm\u00ebris\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 prioritet mbi Attacking n\u00eb \u00e7do situat\u00eb kur agjenti ndjen se nuk ka mjaft sh\u00ebndet p\u00ebr t\u00eb fituar ndaj kund\u00ebrshtarit. Kjo lejon ndryshimin e 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 fleksibile dhe variative 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 formulas matematikore. N\u00eb The Sims, e cila modelon rutin\u00ebn e p\u00ebrditshme t\u00eb karakterit, 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 karakteri \u00ebsht\u00eb i uritur, me kalimin e koh\u00ebs ai do t\u00eb ndjehet edhe m\u00eb i uritur, dhe rezultati i dobishm\u00ebris\u00eb s\u00eb veprimit EatFood do t\u00eb rritet derisa karakteri ta kryej\u00eb at\u00eb, duke ulur nivelin e uris\u00eb, dhe duke kthyer vler\u00ebn e EatFood n\u00eb zero. <\/p>\n<p>Ideja p\u00ebr t\u00eb zgjedhur veprime bazuar n\u00eb nj\u00eb sistem vler\u00ebsimi \u00ebsht\u00eb mjaft e thjesht\u00eb, prandaj sistemi i bazuar n\u00eb dobishm\u00ebri mund t\u00eb p\u00ebrdoret si nj\u00eb pjes\u00eb e proceseve t\u00eb marrjes s\u00eb vendimeve t\u00eb AI, dhe jo si nj\u00eb z\u00ebvend\u00ebsim i plot\u00eb i tyre. Pema e vendimit mund t\u00eb k\u00ebrkoj\u00eb nj\u00eb vler\u00ebsim dobishm\u00ebrie p\u00ebr dy nyje n\u00ebnshkruese dhe t\u00eb zgjedh\u00eb at\u00eb m\u00eb t\u00eb lart\u00eb. N\u00eb m\u00ebnyr\u00eb t\u00eb ngjashme, nj\u00eb pem\u00eb sjelljeje mund t\u00eb ket\u00eb nj\u00eb nyje p\u00ebrb\u00ebr\u00ebse Utility p\u00ebr t\u00eb vler\u00ebsuar dobishm\u00ebrin\u00eb e veprimeve p\u00ebr t\u00eb vendosur se cili element n\u00ebnshkruese t\u00eb ekzekutohet.<\/p>\n<h2>L\u00ebvizja dhe navigimi<\/h2>\n<p>\nN\u00eb shembujt e m\u00ebparsh\u00ebm, kishim nj\u00eb platform\u00eb q\u00eb e l\u00ebviznim majtas ose djathtas, dhe nj\u00eb roje q\u00eb patrullonte ose sulmonte. Por si e trajtojm\u00eb l\u00ebvizjen e agjentit gjat\u00eb nj\u00eb periudhe t\u00eb caktuar kohore? Si e vendosim shpejt\u00ebsin\u00eb, si i shmangim pengesat, dhe si e planifikojm\u00eb rrug\u00ebn, n\u00ebse \u00ebsht\u00eb m\u00eb e v\u00ebshtir\u00eb t\u00eb arrijm\u00eb n\u00eb destinacion sesa thjesht t\u00eb l\u00ebvizim n\u00eb nj\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 faz\u00ebn fillestare, 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 cilin drejtim. Ajo mund t\u00eb matet n\u00eb metra n\u00eb sekond\u00eb, kilometra n\u00eb or\u00eb, pikse n\u00eb sekond\u00eb etj. Duke kujtuar ciklin Sense\/Think\/Act, mund t\u00eb p\u00ebrfytyrojm\u00eb se pjesa Think zgjedh shpejt\u00ebsin\u00eb, nd\u00ebrsa pjesa Act e aplikon k\u00ebt\u00eb shpejt\u00ebsi te agjenti. Zakonisht n\u00eb loj\u00ebra ka nj\u00eb sistem fizik q\u00eb kryen k\u00ebt\u00eb detyr\u00eb p\u00ebr ju, duke shqyrtuar vler\u00ebn e shpejt\u00ebsis\u00eb s\u00eb \u00e7do objekti dhe duke e rregulluar at\u00eb. Prandaj, mund t'i l\u00ebm\u00eb AI-s\u00eb nj\u00eb detyr\u00eb \u2014 t\u00eb vendos\u00eb se cila shpejt\u00ebsi duhet t\u00eb ket\u00eb agjenti. N\u00ebse dihet ku duhet t\u00eb jet\u00eb agjenti, at\u00ebher\u00eb duhet ta l\u00ebvizim at\u00eb n\u00eb drejtimin e duhur me shpejt\u00ebsin\u00eb e vendosur. 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. Agjenti \u00ebsht\u00eb n\u00eb pik\u00ebn (-2,-2), destinacioni ndodhet diku n\u00eb veri-lindje n\u00eb pik\u00ebn (30, 20), dhe rruga e nevojshme p\u00ebr agjentin p\u00ebr t'u ndodhur aty \u00ebsht\u00eb (32, 22). Le t\u00eb supozojm\u00eb se k\u00ebto pozita maten n\u00eb metra \u2014 n\u00ebse e marrim shpejt\u00ebsin\u00eb e agjentit si 5 metra n\u00eb sekond\u00eb, ne do t\u00eb b\u00ebjm\u00eb shkall\u00ebzimin e vektorit ton\u00eb t\u00eb l\u00ebvizjes dhe do t\u00eb marrim nj\u00eb shpejt\u00ebsi t\u00eb p\u00ebraf\u00ebrt (4.12, 2.83). Me k\u00ebto parametra, agjenti do t\u00eb arrinte n\u00eb destinacion pas gati 8 sekondash.<\/p>\n<p>Vlerat mund t\u00eb rivler\u00ebsohen n\u00eb \u00e7do moment. N\u00ebse agjenti ishte n\u00eb gjysm\u00ebn e rrug\u00ebs drejt q\u00ebllimit, l\u00ebvizja do t\u00eb ishte gjysma e gjat\u00ebsi, por pasi shpejt\u00ebsia maksimale e agjentit \u00ebsht\u00eb 5 m\/s (k\u00ebt\u00eb e vendos\u00ebm m\u00eb sip\u00ebr), shpejt\u00ebsia do t\u00eb mbetet e nj\u00ebjt\u00eb. Kjo gjithashtu funksionon p\u00ebr objektivat n\u00eb l\u00ebvizje, duke lejuar agjentin t\u00eb b\u00ebj\u00eb disa ndryshime t\u00eb vogla nd\u00ebrsa ato l\u00ebvizin.<\/p>\n<p>Por ne duam m\u00eb shum\u00eb variacion \u2014 p\u00ebr shembull, t\u00eb rrisim ngadal\u00eb shpejt\u00ebsin\u00eb p\u00ebr t\u00eb simuluar nj\u00eb karakter q\u00eb l\u00ebviz nga nj\u00eb gjendje q\u00ebndruese n\u00eb nj\u00eb gjendje vrapimi. E nj\u00ebjta gj\u00eb mund t\u00eb b\u00ebhet n\u00eb fund para ndalimit. K\u00ebto karakteristika jan\u00eb t\u00eb njohura si steering behaviours, secila prej t\u00eb cilave ka emra specifik\u00eb: Seek (k\u00ebrkesa), Flee (ikja), Arrival (ardhja) etj. Ideja \u00ebsht\u00eb se forcat e shpejtimit mund t\u00eb aplikohen n\u00eb shpejt\u00ebsin\u00eb e agjentit, duke u bazuar n\u00eb krahasimin e pozicionit t\u00eb agjentit dhe shpejt\u00ebsis\u00eb aktuale me pik\u00ebn e destinacionit, p\u00ebr t\u00eb p\u00ebrdorur m\u00ebnyra t\u00eb ndryshme p\u00ebr t\u00eb arritur n\u00eb q\u00ebllim.<\/p>\n<p>\u00c7do sjellje ka nj\u00eb q\u00ebllim pak m\u00eb ndryshe. Seek dhe Arrival jan\u00eb m\u00ebnyra p\u00ebr t\u00eb l\u00ebvizur agjentin drejt destinacionit. Obstacle Avoidance (evitimi i pengesave) dhe Separation (ndarja) rregullojn\u00eb l\u00ebvizjen e agjentit p\u00ebr t\u00eb shmangur pengesat n\u00eb rrug\u00ebn drejt q\u00ebllimit. Alignment (p\u00ebrputhja) dhe Cohesion (lidhja) mbajn\u00eb agjent\u00ebt s\u00eb bashku gjat\u00eb l\u00ebvizjes. \u00c7do num\u00ebr sjelljesh t\u00eb ndryshme drejtimi mund t\u00eb mblidhet p\u00ebr t\u00eb marr\u00eb nj\u00eb vektor rruge duke marr\u00eb parasysh t\u00eb gjith\u00eb faktor\u00ebt. Agjenti 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 vende t\u00eb hapura pa detaje t\u00eb tepruara. <\/p>\n<p>N\u00eb kushte m\u00eb t\u00eb v\u00ebshtira, mbledhja e sjelljeve t\u00eb ndryshme funksionon m\u00eb keq - p\u00ebr shembull, agjenti mund t\u00eb ngec\u00eb n\u00eb mur p\u00ebr shkak t\u00eb konfliktit mes Arrival dhe Obstacle Avoidance. Prandaj, duhen shqyrtuar mund\u00ebsi q\u00eb jan\u00eb m\u00eb komplekse se thjesht mbledhja e t\u00eb gjith\u00eb vlerave. Nj\u00eb m\u00ebnyr\u00eb e till\u00eb \u00ebsht\u00eb: n\u00eb vend q\u00eb t\u00eb mbledhim rezultatet e \u00e7do sjelljeje, mund t\u00eb shqyrtojm\u00eb l\u00ebvizjen n\u00eb drejtime t\u00eb ndryshme dhe t\u00eb zgjedhim opsionin m\u00eb t\u00eb mir\u00eb. <\/p>\n<p>Megjithat\u00eb, n\u00eb nj\u00eb ambient t\u00eb nd\u00ebrlikuar me rrug\u00eb t\u00eb mbyllura dhe zgjedhje p\u00ebr n\u00eb cil\u00ebn an\u00eb t\u00eb shkojm\u00eb, do na nevojitet di\u00e7ka edhe m\u00eb t\u00eb avancuar.<\/p>\n<h3>K\u00ebrkimi i rrug\u00ebs<\/h3>\n<p>\nSteering behaviours jan\u00eb ideale p\u00ebr l\u00ebvizjen e thjesht\u00eb n\u00eb nj\u00eb terren t\u00eb hapur (fush\u00eb futbolli ose aren\u00eb), ku t\u00eb arrish nga A n\u00eb B \u00ebsht\u00eb nj\u00eb rrug\u00eb e drejtp\u00ebrdrejt\u00eb me deviacion t\u00eb vogla p\u00ebrtej pengesave. P\u00ebr rrug\u00eb m\u00eb komplekse na nevojitet pathfinding (k\u00ebrkimi i rrug\u00ebs), i cili \u00ebsht\u00eb nj\u00eb m\u00ebnyr\u00eb p\u00ebr t\u00eb eksploruar bot\u00ebn dhe p\u00ebr t\u00eb marr\u00eb vendime mbi rrug\u00ebn p\u00ebrmes saj.<\/p>\n<p>Metoda m\u00eb e thjesht\u00eb \u00ebsht\u00eb t\u00eb vendos\u00ebsh nj\u00eb rrjet mbi \u00e7do katror p\u00ebrreth agentit dhe t\u00eb vler\u00ebsosh n\u00eb cilat prej tyre \u00ebsht\u00eb e lejuar t\u00eb l\u00ebviz\u00ebsh. N\u00ebse ndonj\u00ebra prej tyre \u00ebsht\u00eb destinacioni, at\u00ebher\u00eb ndiqni rrug\u00ebn nga \u00e7do katror deri te i m\u00ebparshmi, deri sa t\u00eb arrini fillimin. Ky \u00ebsht\u00eb itinerari. 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 mbarojn\u00eb katror\u00ebt (kjo do t\u00eb thot\u00eb se nuk ka asnj\u00eb rrug\u00eb t\u00eb mundshme). Kjo formalitet quhet K\u00ebrkimi n\u00eb Gjer\u00ebsi ose BFS (Breadth-First Search). N\u00eb \u00e7do hap, ai shqyrton n\u00eb t\u00eb gjitha drejtimet (prandaj gjer\u00ebsia, \u201ebreadth\u201c). Hapsira k\u00ebrkuese duket si nj\u00eb front vale q\u00eb l\u00ebviz, derisa t\u00eb arrij\u00eb vendin e k\u00ebrkuar \u2014 hapesira k\u00ebrkuese zgjerohet n\u00eb \u00e7do hap deri sa t\u00eb arrij\u00eb pik\u00ebn p\u00ebrfundimtare, pas s\u00eb cil\u00ebs mund t\u00eb ndjekim rrug\u00ebn deri n\u00eb fillim.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 keni nj\u00eb list\u00eb katror\u00ebsh, mbi t\u00eb cilat formohet itinerari i d\u00ebshiruar. Kjo \u00ebsht\u00eb rruga (nga k\u00ebtu, pathfinding) \u2014 lista e vendeve q\u00eb agjenti do t\u00eb vizitoj\u00eb, duke ndjekur p\u00ebr n\u00eb destinacion.<\/p>\n<p>Duke marr\u00eb parasysh se ne dim\u00eb pozitat e \u00e7do katrori n\u00eb bot\u00eb, mund t\u00eb p\u00ebrdorim sjelljet e manovrimeve p\u00ebr t\u00eb l\u00ebvizur n\u00ebp\u00ebr rrug\u00eb \u2014 nga n\u00ebnkategoria 1 n\u00eb n\u00ebnkategorin\u00eb 2, pastaj nga n\u00ebnkategoria 2 n\u00eb n\u00ebnkategorin\u00eb 3 dhe k\u00ebshtu me radh\u00eb. Versioni m\u00eb i thjesht\u00eb \u00ebsht\u00eb t\u00eb drejtohemi n\u00eb qend\u00ebr t\u00eb katrorit t\u00eb ardhsh\u00ebm, por m\u00eb mir\u00eb \u00ebsht\u00eb t\u00eb ndalemi n\u00eb mes t\u00eb skajit midis katrorit aktual dhe atij tjet\u00ebr. K\u00ebshtu, agjenti do t\u00eb jet\u00eb n\u00eb gjendje t\u00eb shkurtoj\u00eb k\u00ebndet n\u00eb kthesa t\u00eb ashpra.<\/p>\n<p>Algoritmi BFS ka disa disavantazhe \u2014 ai eksploron nj\u00eb num\u00ebr t\u00eb barabart\u00eb katror\u00ebsh n\u00eb drejtimin \"e gabuar\" dhe n\u00eb at\u00eb \"t\u00eb duhur\". K\u00ebtu paraqitet nj\u00eb algorit\u00ebm m\u00eb kompleks i quajtur A* (A star). Ai funksionon po ashtu, 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 nodet n\u00eb nj\u00eb list\u00eb dhe i rendit ato k\u00ebshtu q\u00eb n\u00ebnkategoria q\u00eb do t\u00eb ekzaminon e ardhshme \u00ebsht\u00eb gjithmon\u00eb ajo q\u00eb do t\u00eb \u00e7oj\u00eb n\u00eb itinerarin m\u00eb t\u00eb shkurt\u00ebr. Nodalet renditen n\u00eb baz\u00eb t\u00eb heuristik\u00ebs, e cila merr parasysh dy gj\u00ebra \u2014 \"kostot\" e itinerarit hipotetik p\u00ebr n\u00eb katrorin e d\u00ebshiruar (duke p\u00ebrfshir\u00eb \u00e7do kostum p\u00ebr l\u00ebvizje) dhe vler\u00ebsimin se sa larg \u00ebsht\u00eb ky katror nga destinacioni (duke orientuar k\u00ebrkimin n\u00eb drejtimin e duhur).<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/1cab4f53fa5af6b31d352c7bcf453d7e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb k\u00ebt\u00eb shembull tregohet se agjenti eksploron katror p\u00ebr katror, duke zgjedhur \u00e7do her\u00eb fqinjin m\u00eb premtues. Rruga e marr\u00eb \u00ebsht\u00eb e nj\u00ebjt\u00eb si me BFS, por n\u00eb proces jan\u00eb shqyrtuar m\u00eb pak katror\u00eb \u2014 dhe kjo ka r\u00ebnd\u00ebsi t\u00eb madhe p\u00ebr performanc\u00ebn e loj\u00ebs.<\/p>\n<h3>L\u00ebvizja pa rrjet\u00eb<\/h3>\n<p>\nPor shumica e loj\u00ebrave nuk jan\u00eb t\u00eb rregulluara n\u00eb nj\u00eb rrjet\u00eb dhe shpesh nuk \u00ebsht\u00eb e mundur ta b\u00ebsh at\u00eb pa d\u00ebmtuar realizmin. K\u00ebrkohen kompromiset. Cilat duhet t\u00eb jen\u00eb p\u00ebrmasat e katror\u00ebve? Tejshum\u00eb t\u00eb m\u00ebdhenj \u2014 dhe ata nuk do t\u00eb jen\u00eb n\u00eb gjendje t\u00eb paraqesin n\u00eb m\u00ebnyr\u00eb t\u00eb sakt\u00eb korridore t\u00eb vogla ose kthesa, tejet t\u00eb vegj\u00ebl \u2014 do t\u00eb ket\u00eb tep\u00ebr shum\u00eb katror\u00eb p\u00ebr t'u k\u00ebrkuar, q\u00eb p\u00ebrfundimisht do t\u00eb marr\u00eb nj\u00eb mori koh\u00eb.<\/p>\n<p>Gjith\u00e7ka q\u00eb duhet t\u00eb kuptohet \u00ebsht\u00eb se rrjeta na ofron nj\u00eb grafik t\u00eb nyjeve t\u00eb lidhura. Algoritmet A* dhe BFS n\u00eb fakt funksionojn\u00eb mbi grafikat dhe nuk e shqet\u00ebsojn\u00eb fare rrjet\u00ebn ton\u00eb. Ne mund t\u00eb vendosim nyjet kudo n\u00eb bot\u00ebn e loj\u00ebs: me lidhje nd\u00ebrmjet \u00e7do dy nyjash t\u00eb lidhur, si dhe nd\u00ebrmjet pik\u00ebs fillestare dhe asaj p\u00ebrfundimtare dhe t\u00eb pakt\u00ebn nj\u00ebrit nga nyjat \u2014 algoritmi do t\u00eb funksionoj\u00eb po aq mir\u00eb si m\u00eb par\u00eb. Kjo shpesh quhet sistem pikash orientimi (waypoint), pasi \u00e7do nyje p\u00ebrfaq\u00ebson nj\u00eb pozicion t\u00eb r\u00ebnd\u00ebsish\u00ebm n\u00eb bot\u00eb, i cili mund t\u00eb jet\u00eb pjes\u00eb e \u00e7do numri hipotezash t\u00eb mundshme.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 nyje n\u00eb \u00e7do katror. K\u00ebrkimi fillon nga nyja ku ndodhet agjenti dhe p\u00ebrfundon n\u00eb nyjen e katrorit t\u00eb nevojsh\u00ebm.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 nyjesh (pikash orientimi). K\u00ebrkimi fillon n\u00eb katrorin me agjentin, kalon p\u00ebrmes nj\u00eb numri t\u00eb nevojsh\u00ebm nyjesh, dhe m\u00eb pas 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 ndonj\u00eb kujdes n\u00eb vendosjen e m\u00ebnyrave t\u00eb orientimit, ndryshe agjent\u00ebt mund t\u00eb mos arrijn\u00eb t\u00eb shohin pik\u00ebn m\u00eb t\u00eb af\u00ebrt dhe t\u00eb mos jen\u00eb n\u00eb gjendje t\u00eb fillojn\u00eb rrug\u00ebn. Do t\u00eb ishte m\u00eb e leht\u00eb n\u00ebse mund t\u00eb vendosnim automatikisht pikat orientuese n\u00eb baz\u00eb t\u00eb gjeometris\u00eb s\u00eb bot\u00ebs.<\/p>\n<p>K\u00ebtu hyn n\u00eb loj\u00eb vet\u00eb rrjeta e navigimit ose navmesh. Kjo zakonisht \u00ebsht\u00eb nj\u00eb rrjet\u00eb 2D e trek\u00ebnd\u00ebshave q\u00eb vendoset mbi gjeometrin\u00eb e bot\u00ebs \u2014 kudo ku agjentit i lejohet t\u00eb ec\u00eb. \u00c7do trek\u00ebnd\u00ebsh n\u00eb rrjet\u00eb b\u00ebhet nj\u00eb nyje n\u00eb graf dhe ka deri n\u00eb tre trek\u00ebnd\u00ebshat fqinj q\u00eb b\u00ebhen nyje fqinje n\u00eb graf. <\/p>\n<p>Kjo piktur\u00eb \u00ebsht\u00eb nj\u00eb shembull nga motori Unity \u2014 ai analizoi gjeomin\u00eb n\u00eb bot\u00eb dhe krijoi navmesh (n\u00eb screenshot me ngjyr\u00eb t\u00eb kalt\u00ebr t\u00eb leht\u00eb). \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 tjetrin. N\u00eb k\u00ebt\u00eb shembull, poligonet jan\u00eb m\u00eb t\u00eb vogla se katet n\u00eb t\u00eb cilat ndodhen \u2014 kjo \u00ebsht\u00eb b\u00ebr\u00eb p\u00ebr t\u00eb marr\u00eb parasysh dimensionet e agjentit, i cili do t\u00eb kalonte p\u00ebrtej vendndodhjes s\u00eb tij nominale.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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\u00ebsaj rrjete, duke p\u00ebrdorur p\u00ebrs\u00ebri algoritmin A*. Kjo do t\u00eb na jap\u00eb nj\u00eb rrug\u00eb praktikisht perfekte n\u00eb bot\u00eb, q\u00eb merr parasysh gjith\u00eb gjeomin\u00eb dhe nuk k\u00ebrkon nyje t\u00eb tep\u00ebrta dhe krijimin e pikave t\u00eb udh\u00ebtimit.<\/p>\n<p>Gjetja e rrug\u00ebs \u00ebsht\u00eb nj\u00eb tem\u00eb shum\u00eb e gjer\u00eb, p\u00ebr t\u00eb cil\u00ebn nj\u00eb seksion i vet\u00ebm artikulli nuk mjafton. N\u00ebse d\u00ebshironi ta studioni at\u00eb m\u00eb thell\u00eb, kjo do t'ju ndihmoj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.redblobgames.com\/pathfinding\/a-star\/introduction.html\">webfaqja e Amit Patelit<\/a><\/noindex>.<\/p>\n<h2>Planifikimi<\/h2>\n<p>\nNe e kuptuam nga gjetja e rrug\u00ebs se ndonj\u00ebher\u00eb nuk mjafton thjesht t\u00eb zgjedh\u00ebsh nj\u00eb drejtim dhe t\u00eb l\u00ebviz\u00ebsh \u2014 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 duhur. Ne mund ta p\u00ebrgjith\u00ebsojm\u00eb k\u00ebt\u00eb ide: arrijtja e q\u00ebllimit nuk \u00ebsht\u00eb thjesht hapi tjet\u00ebr, por nj\u00eb sekuenc\u00eb e t\u00ebr\u00eb, ku ndonj\u00ebher\u00eb k\u00ebrkohet t\u00eb shohim p\u00ebrpara disa hapa p\u00ebr t\u00eb zbuluar si duhet t\u00eb jet\u00eb hapi i par\u00eb. Kjo quhet planifikim. Gjetja e rrug\u00ebs mund t\u00eb konsiderohet si nj\u00eb nga disa shtesat e planifikimit. Nga perspektiva e ciklit ton\u00eb Sense\/Think\/Act, kjo \u00ebsht\u00eb ajo ku pjesa Think planifikon disa pjes\u00eb nga Act p\u00ebr t\u00eb ardhmen.<\/p>\n<p>Le t\u00eb analizojm\u00eb me shembullin e loj\u00ebs s\u00eb tavolin\u00ebs Magic: The Gathering. Ne luajm\u00eb t\u00eb par\u00ebt me k\u00ebt\u00eb set kartash n\u00eb dor\u00eb:<\/p>\n<ul>\n<li>Swamp \u2014 ofron 1 man\u00eb t\u00eb zez\u00eb (kart\u00eb toke).<\/li>\n<li>Forest \u2014 ofron 1 man\u00eb t\u00eb gjelb\u00ebr (kart\u00eb toke).<\/li>\n<li>Fugitive Wizard \u2014 k\u00ebrkon 1 man\u00eb t\u00eb blert\u00eb p\u00ebr t\u00eb thirrur.<\/li>\n<li>Elvish Mystic \u2014 k\u00ebrkon 1 man\u00eb t\u00eb gjelb\u00ebr p\u00ebr t\u00eb thirrur.<\/li>\n<\/ul>\n<p>\nKartat e mbetura tre i injorojm\u00eb p\u00ebr ta b\u00ebr\u00eb m\u00eb t\u00eb leht\u00eb. Sipas rregullave, nj\u00eb lojtari i lejohet t\u00eb luaj\u00eb 1 kart\u00eb toke n\u00eb hap, ai mund t\u00eb \"taps\" k\u00ebt\u00eb kart\u00eb p\u00ebr t\u00eb nxjerr\u00eb man\u00eb, dhe pastaj t\u00eb p\u00ebrdor\u00eb magji (p\u00ebrfshir\u00eb thirrjen e krijesave) sipas sasis\u00eb s\u00eb man\u00ebs. N\u00eb k\u00ebt\u00eb situat\u00eb, lojtari-njeri e di se duhet t\u00eb luaj\u00eb Forest, \"taps\" 1 man\u00eb t\u00eb gjelb\u00ebr, dhe pastaj t\u00eb th\u00ebrras\u00eb Elvish Mystic. Por si ta kuptoj\u00eb kjo AI e loj\u00ebs?<\/p>\n<h3>Planifikimi i thjesht\u00eb<\/h3>\n<p>\nQashtimi i thjesht\u00eb \u2014 t\u00eb provosh \u00e7do veprim nj\u00eb nga nj\u00eb, derisa t\u00eb mos mbetet asnj\u00eb i p\u00ebrshtatsh\u00ebm. Duke par\u00eb kartat, AI sheh se mund t\u00eb luaj\u00eb Swamp. Dhe e luan. A kan\u00eb mbetur veprime t\u00eb tjera n\u00eb k\u00ebt\u00eb raund? Ai nuk mund t\u00eb th\u00ebrras\u00eb as Elvish Mystic, as Fugitive Wizard, pasi k\u00ebrkohet mana p\u00ebrkat\u00ebsisht e gjelb\u00ebr dhe e kalt\u00ebr p\u00ebr thirrjen e tyre, dhe Swamp jep vet\u00ebm mana t\u00eb zez\u00eb. Dhe ai nuk do mund t\u00eb luaj\u00eb m\u00eb Forest, sepse tashm\u00eb ka luajtur Swamp. Pra, AI luajti sipas rregullave, por e b\u00ebri keq. Mund t\u00eb p\u00ebrmir\u00ebsohet.<\/p>\n<p>Planifikimi mund t\u00eb gjej\u00eb nj\u00eb list\u00eb veprimesh q\u00eb \u00e7ojn\u00eb loj\u00ebn n\u00eb gjendjen e d\u00ebshiruar. Po ashtu, si \u00e7do katror n\u00eb rrug\u00eb kishte fqinj\u00eb (n\u00eb pathfinding), \u00e7do veprim n\u00eb plan gjithashtu ka fqinj\u00eb ose pasardh\u00ebs. Mund t\u00eb k\u00ebrkojm\u00eb k\u00ebto veprime dhe veprime t\u00eb ardhshme derisa t\u00eb arrijm\u00eb gjendjen e d\u00ebshiruar.<\/p>\n<p>N\u00eb shembullin ton\u00eb, rezultati i d\u00ebshiruar \u00ebsht\u00eb \u00abthirr nj\u00eb krijes\u00eb, n\u00ebse \u00ebsht\u00eb e mundur\u00bb. 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 sjell\u00eb mund t\u00eb \u00e7oj\u00eb n\u00eb veprime t\u00eb tjera dhe t\u00eb mbyll\u00eb disa t\u00eb tjera, p\u00ebrs\u00ebri n\u00eb var\u00ebsi t\u00eb rregullave t\u00eb loj\u00ebs. P\u00ebrfytyroni, se luajm\u00eb Swamp \u2014 kjo do ta heq\u00eb Swamp si hapin e ardhsh\u00ebm (ne tashm\u00eb e kemi luajtur), gjithashtu do ta heq\u00eb dhe Forest (p\u00ebr shkak se sipas rregullave mund t\u00eb luash nj\u00eb kart\u00eb toke p\u00ebr raund). Pas k\u00ebsaj, AI shton si hapin e ardhsh\u00ebm \u2014 marrjen e 1 manas t\u00eb zez\u00eb, sepse nuk ka opsione t\u00eb tjera. N\u00ebse ai vazhdon dhe zgjidh Tapping the Swamp, ai do t\u00eb marr\u00eb 1 nj\u00ebsi mana t\u00eb zez\u00eb dhe nuk do t\u00eb mund t\u00eb b\u00ebj\u00eb asgj\u00eb me t\u00eb.<\/p>\n<p><i>1. T\u00eb luajm\u00eb Swamp (rezultati: Swamp n\u00eb loj\u00eb)<br \/>\n 1.1 \u00abTapo\u00bb Swamp (rezultati: Swamp \u00abtapohet\u00bb, +1 nj\u00ebsi mana e zez\u00eb)<br \/>\n Nuk ka 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, jemi n\u00eb nj\u00eb kufi. P\u00ebrs\u00ebritim procesin p\u00ebr veprimin tjet\u00ebr. Ne luajm\u00eb Forest, hapim veprimin \u00abmerr 1 mana t\u00eb gjelb\u00ebr\u00bb, i cili nga ana e tij do t\u00eb hap\u00eb nj\u00eb veprim t\u00eb 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 \u00abTapo\u00bb Swamp (rezultati: Swamp \u00abtapohet\u00bb, +1 nj\u00ebsi mana e zez\u00eb)<br \/>\n Nuk ka veprime t\u00eb disponueshme \u2013 FUND<br \/>\n2. T\u00eb luajm\u00eb Forest (rezultati: Forest n\u00eb loj\u00eb)<br \/>\n 2.1 \u00abTapo\u00bb Forest (rezultati: Forest \u00abtapohet\u00bb, +1 nj\u00ebsi mana e gjelb\u00ebr)<br \/>\n 2.1.1 Thirr Elvish Mystic (rezultati: Elvish Mystic n\u00eb loj\u00eb, -1 nj\u00ebsi mana e gjelb\u00ebr)<br \/>\n Nuk ka 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 thjeshtuar. Preferohet t\u00eb zgjidhni planin m\u00eb t\u00eb mir\u00eb t\u00eb mundsh\u00ebm, jo thjesht ndonj\u00eb q\u00eb plot\u00ebson disa kritere. N\u00eb p\u00ebrgjith\u00ebsi, \u00ebsht\u00eb e mundur t\u00eb vler\u00ebsohen planet e mundshme p\u00ebrmes rezultatit p\u00ebrfundimtar ose p\u00ebrfitimit t\u00eb p\u00ebrgjithsh\u00ebm nga realizimi i tyre. Mund t\u00eb merrni 1 pik\u00eb p\u00ebr t\u00eb luajtur nj\u00eb kart\u00eb toke dhe 3 pik\u00eb p\u00ebr t\u00eb thirrur nj\u00eb krijes\u00eb. T\u00eb luani Swamp do t\u00eb ishte nj\u00eb plan q\u00eb jep 1 pik\u00eb. Nd\u00ebrsa t\u00eb luani Forest \u2192 Tap the Forest \u2192 thirrni Elvish Mystic do t'ju jap\u00eb menj\u00ebher\u00eb 4 pik\u00eb. <\/p>\n<p>K\u00ebshtu funksionon planifikimi n\u00eb Magic: The Gathering, por me t\u00eb nj\u00ebjt\u00ebn logjik\u00eb kjo aplikohet edhe n\u00eb situata t\u00eb tjera. P\u00ebr shembull, t\u00eb zhvendosni nj\u00eb pion p\u00ebr t\u00eb liruar hap\u00ebsir\u00eb p\u00ebr t\u00eb l\u00ebvizur nj\u00eb elefant n\u00eb shah. Ose t\u00eb strehoheni pas nj\u00eb muri p\u00ebr t\u00eb sht\u00ebn\u00eb n\u00eb XCOM n\u00eb m\u00ebnyr\u00eb t\u00eb sigurt. N\u00eb p\u00ebrgjith\u00ebsi, ju kuptuat pik\u00ebn.<\/p>\n<h3>Planifikimi i p\u00ebrmir\u00ebsuar<\/h3>\n<p>\nNgjash\u00ebm, ndonj\u00ebher\u00eb ka shum\u00eb veprime t\u00eb mundshme p\u00ebr t\u00eb shqyrtuar \u00e7do variant t\u00eb mundsh\u00ebm. Duke u kthyer te shembulli i Magic: The Gathering: supozoni se n\u00eb loj\u00eb keni disa karta toke dhe krijesash \u2014 numri i kombinimeve t\u00eb mundshme t\u00eb l\u00ebvizjeve mund t\u00eb arrij\u00eb dhjet\u00ebra. Ekzistojn\u00eb disa zgjidhje p\u00ebr k\u00ebt\u00eb problem.<\/p>\n<p>M\u00ebnyra e par\u00eb \u00ebsht\u00eb backwards chaining (formimi i zinxhirit n\u00eb prapavij\u00eb). N\u00eb vend q\u00eb t\u00eb shqyrtoni t\u00eb gjitha kombinimet, \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb filloni nga rezultati p\u00ebrfundimtar dhe t\u00eb provoni t\u00eb gjeni nj\u00eb rrug\u00eb t\u00eb drejtp\u00ebrdrejt\u00eb. N\u00eb vend t\u00eb rrug\u00ebs nga rr\u00ebnja e pem\u00ebs n\u00eb nj\u00eb gjethe t\u00eb caktuar, ne l\u00ebvizim n\u00eb drejtimin e kund\u00ebrt \u2014 nga gjethe te rr\u00ebnja. Kjo methode \u00ebsht\u00eb m\u00eb e thjesht\u00eb dhe m\u00eb e shpejt\u00eb.<\/p>\n<p>N\u00ebse armiku ka 1 pik\u00eb sh\u00ebndeti, mund t\u00eb gjeni nj\u00eb plan \"t\u00eb shkaktoni 1 ose m\u00eb shum\u00eb pik\u00eb d\u00ebmi\". P\u00ebr ta arritur k\u00ebt\u00eb, duhet t\u00eb p\u00ebrmbushni nj\u00eb s\u00ebr\u00eb kushtesh: <\/p>\n<p>1. D\u00ebmi mund t\u00eb shkaktohet nga nj\u00eb magji \u2014 ajo duhet t\u00eb jet\u00eb n\u00eb dor\u00eb.<br \/>\n2. P\u00ebr t\u00eb hedhur magjin\u00eb \u2014 nevojitet mana.<br \/>\n3. P\u00ebr t\u00eb fituar mana \u2014 duhet t\u00eb hedhni nj\u00eb kart\u00eb toke.<br \/>\n4. P\u00ebr t\u00eb hedhur nj\u00eb kart\u00eb toke \u2014 duhet ta keni at\u00eb n\u00eb dor\u00eb.<\/p>\n<p>M\u00ebnyra tjet\u00ebr \u00ebsht\u00eb best-first search (kerkimi m\u00eb i mir\u00eb i par\u00eb). N\u00eb vend q\u00eb t\u00eb shqyrtoni t\u00eb gjitha rrug\u00ebt, ne zgjedhim m\u00eb t\u00eb p\u00ebrshtatshmen. Shpesh kjo metod\u00eb jep nj\u00eb plan optimal pa shpenzime t\u00eb tep\u00ebrta p\u00ebr k\u00ebrkimin. A* \u00ebsht\u00eb nj\u00eb form\u00eb e kerkimit m\u00eb t\u00eb mir\u00eb t\u00eb par\u00eb \u2014 duke shqyrtuar rrug\u00ebt m\u00eb premtuese q\u00eb nga fillimi, ai mund t\u00eb gjej\u00eb rrug\u00ebn m\u00eb t\u00eb mir\u00eb pa pasur nevoj\u00eb t\u00eb shqyrtoj\u00eb opsionet e tjera.<\/p>\n<p>Nj\u00eb variant interesant dhe gjithnj\u00eb e m\u00eb i popullarizuar i k\u00ebrkimit best-first \u00ebsht\u00eb K\u00ebrkimi i Pem\u00ebs s\u00eb Monte Carlo. N\u00eb vend q\u00eb t\u00eb hamend\u00ebsoj\u00eb se cilat plane jan\u00eb m\u00eb t\u00eb mirat p\u00ebr veprimin e ardhsh\u00ebm, algoritmi zgjedh pasardh\u00ebs t\u00eb rast\u00ebsish\u00ebm n\u00eb \u00e7do hap, derisa t\u00eb arrij\u00eb fundin (kur plani \u00e7on n\u00eb fitore ose humbje). Pastaj, rezultati p\u00ebrfundimtar p\u00ebrdoret p\u00ebr t\u00eb rritur ose ulur vler\u00ebsimin \"pesh\u00ebs\" s\u00eb mund\u00ebsive t\u00eb m\u00ebparshme. Duke e p\u00ebrs\u00ebritur k\u00ebt\u00eb proces disa her\u00eb, algoritmi jep nj\u00eb vler\u00ebsim t\u00eb mir\u00eb se cili hap tjet\u00ebr \u00ebsht\u00eb m\u00eb i mir\u00eb, madje edhe n\u00ebse situata ndryshon (n\u00ebse kund\u00ebrshtari merr masa p\u00ebr t'i penguar lojtarin). <\/p>\n<p>N\u00eb tregimin e planifikimit n\u00eb loj\u00ebra, nuk mund t\u00eb anashkalohet Planifikimi i Veprimeve t\u00eb Orientuara ndaj Q\u00ebllimeve ose GOAP. Ky \u00ebsht\u00eb nj\u00eb metod\u00eb e p\u00ebrdorur gjer\u00ebsisht dhe e diskutuar, por p\u00ebrve\u00e7 disa detajeve dalluese, \u00ebsht\u00eb n\u00eb thelb nj\u00eb metod\u00eb e zinxhirit t\u00eb prap\u00eb, p\u00ebr t\u00eb cil\u00ebn fol\u00ebm m\u00eb par\u00eb. N\u00ebse detyra ishte \"shkat\u00ebrro lojtarin\", dhe lojtarit i ka q\u00eblluar pas nj\u00eb mbrojtjeje, plani mund t\u00eb jet\u00eb: shkat\u00ebrro me nj\u00eb granat\u00eb \u2192 merr at\u00eb \u2192 hedh.<\/p>\n<p>Zakonisht ka disa q\u00ebllime, secili me p\u00ebrpar\u00ebsin\u00eb e tij. N\u00ebse q\u00ebllimi me p\u00ebrpar\u00ebsi m\u00eb t\u00eb lart\u00eb nuk mund t\u00eb realizohet (nuk ka asnj\u00eb kombinim veprimesh q\u00eb krijon planin \"shkat\u00ebrro lojtarin\", sepse lojtarit nuk i shihet), AI do t\u00eb kthehet te q\u00ebllimet me p\u00ebrpar\u00ebsi m\u00eb t\u00eb ul\u00ebt.<\/p>\n<h2>M\u00ebsimi dhe adaptimi<\/h2>\n<p>\nKemi diskutuar tashm\u00eb se AI i loj\u00ebrave zakonisht nuk p\u00ebrdor m\u00ebsimin e makinerive, sepse kjo nuk \u00ebsht\u00eb e p\u00ebrshtatshme p\u00ebr menaxhimin e agjent\u00ebve n\u00eb koh\u00eb reale. Por kjo nuk do t\u00eb thot\u00eb q\u00eb nuk mund t\u00eb merret ndonj\u00ebher\u00eb di\u00e7ka nga ky fush\u00eb. Ne duam nj\u00eb kund\u00ebrshtar n\u00eb nj\u00eb loj\u00eb aksionesh nga i cili mund t\u00eb m\u00ebsojm\u00eb ndonj\u00eb gj\u00eb. P\u00ebr shembull, t\u00eb m\u00ebsojm\u00eb p\u00ebr pozitat m\u00eb t\u00eb mira n\u00eb hart\u00eb. Ose nj\u00eb kund\u00ebrshtar n\u00eb nj\u00eb luft\u00eb q\u00eb do t\u00eb bllokonte kombinimet e zakonshme t\u00eb lojtarit, duke e motivuar at\u00eb t\u00eb p\u00ebrdor\u00eb t\u00eb tjera. Pra, m\u00ebsimi i makinerive 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 kalojm\u00eb n\u00eb shembuj t\u00eb komplikuar, le t\u00eb shqyrtojm\u00eb 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 ta p\u00ebrcaktojm\u00eb n\u00ebse nj\u00eb lojtar mund t\u00eb nis\u00eb nj\u00eb sulm n\u00eb minutat e para t\u00eb loj\u00ebs dhe \u00e7far\u00eb mbrojtjeje do t\u00eb p\u00ebrgatisim p\u00ebr k\u00ebt\u00eb? Mund t\u00eb studiojm\u00eb p\u00ebrvoj\u00ebn e kaluar t\u00eb lojtarit p\u00ebr t\u00eb kuptuar se \u00e7far\u00eb mund t\u00eb jet\u00eb reagimi i tij n\u00eb t\u00eb ardhmen. S\u00eb pari, na mungojn\u00eb k\u00ebto t\u00eb dh\u00ebna t\u00eb plota, por ne mund t'i mbledhim ato \u2014 \u00e7do her\u00eb q\u00eb AI luan kund\u00ebr nj\u00eb njeriu, ai mund t\u00eb regjistroj\u00eb koh\u00ebn e sulmit t\u00eb par\u00eb. Pas disa sesionesh, do t\u00eb marrim mesataren e koh\u00ebs q\u00eb lojtar\u00ebt do t\u00eb sulmojn\u00eb n\u00eb t\u00eb ardhmen.<\/p>\n<p>Mesataret kan\u00eb edhe nj\u00eb problem: n\u00ebse nj\u00eb lojtar ka \u2018rush-uar\u2019 20 her\u00eb dhe ka luajtur ngadal\u00eb 20 her\u00eb t\u00eb tjera, at\u00ebher\u00eb vlerat e nevojshme do t\u00eb jen\u00eb diku n\u00eb mes, q\u00eb nuk do na ofroj\u00eb asgj\u00eb t\u00eb dobishme. Nj\u00eb nga zgjidhjet \u00ebsht\u00eb kufizimi i t\u00eb dh\u00ebnave hyr\u00ebse \u2014 mund t\u00eb merret parasysh vet\u00ebm 20 t\u00eb fundit.<\/p>\n<p>Nj\u00eb qasje e ngjashme p\u00ebrdoret p\u00ebr t\u00eb vler\u00ebsuar probabilitetin e veprimeve t\u00eb caktuara, duke supozuar se preferencat e kaluara t\u00eb lojtarit do t\u00eb jen\u00eb t\u00eb ngjashme n\u00eb t\u00eb ardhmen. N\u00ebse nj\u00eb lojtar na sulmon pes\u00eb her\u00eb me topa zjarri, dy her\u00eb me rrufe dhe nj\u00eb her\u00eb me duar, \u00ebsht\u00eb e qart\u00eb se ai preferon topin e zjarrit. Ne mund ta ekstrapolojm\u00eb dhe t\u00eb shohim probabilitetin e p\u00ebrdorimit t\u00eb arm\u00ebve t\u00eb ndryshme: topi i zjarrit=62.5%, rrufe=25% dhe duar-shqip=12.5%. AI yn\u00eb i loj\u00ebs duhet t\u00eb p\u00ebrgatitet p\u00ebr mbrojtje nga zjarri.<\/p>\n<p>Nj\u00eb metod\u00eb interesante tjet\u00ebr \u00ebsht\u00eb t\u00eb p\u00ebrdorim Naive Bayes Classifier (klasifikuesi naiv 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\u00e7 duhet. Klasifikuesit Bayesian jan\u00eb t\u00eb njohur p\u00ebr p\u00ebrdorimin e tyre n\u00eb filtre t\u00eb spamit t\u00eb emailit. Aty ata analizojn\u00eb fjal\u00ebt, i krahasojn\u00eb ato me vendet ku jan\u00eb shfaqur k\u00ebto fjal\u00eb m\u00eb par\u00eb (n\u00eb spam apo 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 edhe me m\u00eb pak t\u00eb dh\u00ebna hyr\u00ebse. N\u00eb baz\u00eb t\u00eb gjith\u00eb informacionit t\u00eb dobish\u00ebm q\u00eb sheh AI (p.sh., cilat nj\u00ebsi armike jan\u00eb krijuar, apo cilat magji po p\u00ebrdorin, apo cilat teknologji po studiojn\u00eb), dhe rezultatin p\u00ebrfundimtar (luft\u00eb ose paqe, \u2018rush\u2019 ose mbrojtje, etj.) \u2014 ne do t\u00eb zgjedhim comportimin e duhur t\u00eb AI.<\/p>\n<p>T\u00eb gjitha k\u00ebto metoda t\u00eb m\u00ebsimit jan\u00eb t\u00eb mjaftueshme, por \u00ebsht\u00eb e d\u00ebshirueshme t'i p\u00ebrdorim ato n\u00eb baz\u00eb t\u00eb t\u00eb dh\u00ebnave nga testimi. AI do t\u00eb m\u00ebsoj\u00eb t\u00eb adaptohet me strategjit\u00eb e ndryshme q\u00eb kan\u00eb p\u00ebrdorur testuesit tuaj. Nj\u00eb AI q\u00eb adaptohet me lojtarin pas lansimit mund t\u00eb b\u00ebhet tep\u00ebr i parashikuesh\u00ebm ose, nga ana tjet\u00ebr, shum\u00eb i v\u00ebshtir\u00eb p\u00ebr t'u mposhtur.<\/p>\n<h3>Adaptimi n\u00eb baz\u00eb t\u00eb vlerave<\/h3>\n<p>\nDuke marr\u00eb parasysh p\u00ebrmbajtjen e bot\u00ebs son\u00eb loje dhe rregullat, ne mund t\u00eb ndryshojm\u00eb setin e vlerave q\u00eb ndikojn\u00eb n\u00eb vendimmarrje, n\u00eb vend q\u00eb t\u00eb p\u00ebrdorim thjesht t\u00eb dh\u00ebnat hyr\u00ebse. Veprojm\u00eb k\u00ebshtu:<\/p>\n<ul>\n<li>Le t\u00eb mbledh\u00eb AI t\u00eb dh\u00ebna rreth gjendjes s\u00eb bot\u00ebs dhe ngjarjeve ky\u00e7e gjat\u00eb loj\u00ebs (si\u00e7 \u00ebsht\u00eb p\u00ebrmendur m\u00eb sip\u00ebr).<\/li>\n<li>Do t\u00eb ndryshojm\u00eb disa vlera t\u00eb r\u00ebnd\u00ebsishme 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 nj\u00eb hart\u00eb t\u00eb nj\u00eb loje tirane nga perspektiva e par\u00eb. \u00c7do dhom\u00eb ka vler\u00ebn e saj, e cila p\u00ebrcakton sa t\u00eb d\u00ebshiruara jan\u00eb p\u00ebr tu vizituar. AI zgjedh rast\u00ebsisht se n\u00eb cil\u00ebn dhom\u00eb t\u00eb shkoj\u00eb, n\u00eb baz\u00eb t\u00eb vler\u00ebs s\u00eb saj. M\u00eb pas, agjenti e mban mend n\u00eb cil\u00ebn dhom\u00eb e vran\u00eb dhe ndalon vler\u00ebn e saj (probabiliteti q\u00eb ai do t\u00eb kthehet atje). Po ashtu n\u00eb situat\u00ebn e kund\u00ebrt \u2014 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 ndodh n\u00ebse ne p\u00ebrdorim t\u00eb dh\u00ebnat e mbledhura p\u00ebr parashikim? N\u00ebse mbajm\u00eb mend \u00e7do dhom\u00eb ku shohim lojtarin gjat\u00eb nj\u00eb periudhe t\u00eb caktuar kohore, ne 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 marim tre dhoma: t\u00eb kuqe, t\u00eb gjelbra dhe t\u00eb blu. Po ashtu dhe v\u00ebzhgimet q\u00eb kemi regjistruar gjat\u00eb shikimit t\u00eb sesionit t\u00eb loj\u00ebs:<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 secil\u00ebn dhom\u00eb \u00ebsht\u00eb pothuajse i barabart\u00eb \u2014 ende nuk e dim\u00eb ku t\u00eb b\u00ebjm\u00eb nj\u00eb vend t\u00eb mir\u00eb p\u00ebr tend\u00eb. Grumbullimi i statistikave gjithashtu komplikohet nga rihapjet e lojtar\u00ebve, t\u00eb cil\u00ebt shfaqen n\u00eb m\u00ebnyr\u00eb t\u00eb barabart\u00eb n\u00eb t\u00eb gjith\u00eb hart\u00ebn. Por t\u00eb dh\u00ebnat mbi dhom\u00ebn e ardhshme, n\u00eb t\u00eb cil\u00ebn ata hyjn\u00eb pas shfaqjes n\u00eb hart\u00eb \u2014 tashm\u00eb jan\u00eb t\u00eb dobishme.<\/p>\n<p>\u00cbsht\u00eb evidente se dhoma e gjelb\u00ebr i k\u00ebnaq lojtar\u00ebt - shumica e njer\u00ebzve nga dhoma e kuqe kalojn\u00eb n\u00eb t\u00eb, 50% e t\u00eb cil\u00ebve q\u00ebndrojn\u00eb atje m\u00eb tej. P\u00ebrkundrazi, dhoma blu nuk g\u00ebzon popullaritet, thuajse nuk vizitohet, dhe n\u00ebse vizitohet, at\u00ebher\u00eb nuk q\u00ebndrohet aty. <\/p>\n<p>Por t\u00eb dh\u00ebnat na tregojn\u00eb di\u00e7ka m\u00eb t\u00eb r\u00ebnd\u00ebsishme - kur lojtari ndodhet n\u00eb dhom\u00ebn blu, dhoma tjet\u00ebr ku ne do ta shohim zakonisht \u00ebsht\u00eb e kuqe, dhe jo e gjelb\u00ebr. Edhe pse dhoma e gjelb\u00ebr \u00ebsht\u00eb m\u00eb popullore se ajo e kuqe, situata ndryshon n\u00ebse lojtari ndodhet n\u00eb blu. Shteti tjet\u00ebr (dometh\u00ebn\u00eb dhoma n\u00eb t\u00eb cil\u00ebn lojtari do t\u00eb kaloj\u00eb) varet nga gjendja e m\u00ebparshme (dometh\u00ebn\u00eb dhoma n\u00eb t\u00eb cil\u00ebn ndodhet tani lojtari). P\u00ebr shkak t\u00eb hulumtimit t\u00eb var\u00ebsive, ne do t\u00eb b\u00ebjm\u00eb parashikime m\u00eb t\u00eb sakta sesa po t\u00eb num\u00ebronim thjesht observimet n\u00eb m\u00ebnyr\u00eb t\u00eb pavarur.<\/p>\n<p>Parashikimi i gjendjes s\u00eb ardhshme mbi baz\u00ebn e t\u00eb dh\u00ebnave t\u00eb gjendjes s\u00eb kaluar quhet modeli Markov (Markov model), dhe ato shembuj (me dhomat) quhen zinxhir\u00eb Markov. Duke qen\u00eb se modelet p\u00ebrfaq\u00ebsojn\u00eb probabilitetin e ndryshimeve mes gjendjeve t\u00eb nj\u00ebpasnj\u00ebshme, ato paraqiten vizualisht si FSM me probabilitet rreth \u00e7do kalimi. M\u00eb par\u00eb ne kemi p\u00ebrdorur FSM p\u00ebr t\u00eb p\u00ebrfaq\u00ebsuar gjendjen e sjelljes n\u00eb t\u00eb cil\u00ebn ndodhej agjenti, por kjo koncept b\u00ebhet e aplikueshme n\u00eb \u00e7do gjendje, pavar\u00ebsisht se a \u00ebsht\u00eb kjo e lidhur me agjentin apo jo. N\u00eb k\u00ebt\u00eb rast, gjendjet p\u00ebrfaq\u00ebsojn\u00eb dhom\u00ebn q\u00eb z\u00eb agjenti:<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 p\u00ebr t\u00eb paraqitur probabilitetin relativ 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 nj\u00eb 50% mund\u00ebsi q\u00eb ai t\u00eb q\u00ebndroj\u00eb atje n\u00eb v\u00ebzhgimin e ardhsh\u00ebm. Por cila \u00ebsht\u00eb probabiliteti q\u00eb ai t\u00eb jet\u00eb ende aty edhe m\u00eb von\u00eb? Ka jo vet\u00ebm mund\u00ebsin\u00eb q\u00eb lojtari t\u00eb mbetet n\u00eb dhom\u00ebn e gjelb\u00ebr pas dy v\u00ebzhgimeve, por edhe nj\u00eb mund\u00ebsi q\u00eb ai ka dal\u00eb dhe \u00ebsht\u00eb kthyer. K\u00ebtu \u00ebsht\u00eb nj\u00eb tabel\u00eb e re duke marr\u00eb parasysh t\u00eb dh\u00ebnat e reja:<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: 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 duket 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% - 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 blu midis tyre, dhe 25% q\u00eb lojtari nuk do t\u00eb largohet nga dhoma e gjelb\u00ebr fare.<\/p>\n<p>Tabeli \u00ebsht\u00eb thjesht nj\u00eb mjet vizual \u2013 procedura k\u00ebrkon vet\u00ebm shum\u00ebzimin e probabiliteteve n\u00eb \u00e7do hap. Kjo do t\u00eb thot\u00eb se mund t\u00eb shikoni thell\u00eb n\u00eb t\u00eb ardhmen me nj\u00eb rezerv\u00eb: ne supozojm\u00eb se shansi p\u00ebr t\u00eb hyr\u00eb n\u00eb dhom\u00eb varet plot\u00ebsisht nga dhoma aktuale. Kjo quhet pron\u00ebsia Markoviane (Markov Property) \u2013 gjendja e ardhshme varet vet\u00ebm nga e tashmja. Por kjo nuk \u00ebsht\u00eb plot\u00ebsisht 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>\nDhe \u00e7far\u00eb ndodh me shembullin e luftimeve dhe parashikimin e kombo-ve t\u00eb lojtarit? E nj\u00ebjta gj\u00eb! Por n\u00eb vend t\u00eb nj\u00eb gjendje ose ngjarjeje, do t\u00eb studiojm\u00eb t\u00ebr\u00eb sekuenca, nga t\u00eb cilat p\u00ebrb\u00ebhet kombo-shkalla.<\/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., Kick, Punch ose Block) n\u00eb nj\u00eb bufer dhe t\u00eb regjistroni t\u00eb gjith\u00eb buferin si nj\u00eb ngjarje. Pra, lojtari shtyp vazhdimisht Kick, Kick, Punch p\u00ebr t\u00eb p\u00ebrdorur sulmin SuperDeathFist, sistemi i AI ruan t\u00eb gjitha inputet n\u00eb bufer dhe mban mend tre t\u00eb fundit, q\u00eb p\u00ebrdoren n\u00eb \u00e7do hap.<\/p>\n<p><img decoding=\"async\" alt=\"Si t\u00eb krijosh nj\u00eb AI lojrash: udh\u00ebzues p\u00ebr fillestar\u00ebt\" src=\"\/wp-content\/uploads\/2019\/11\/9a95226ae155dca5e45a66d4440f3cd4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(Me bold jan\u00eb theksuar rreshtat kur lojtari aktivizon sulmin SuperDeathFist.)<\/p>\n<p>AI do t\u00eb shoh\u00eb t\u00eb gjitha variantet kur lojtari zgjodhi Kick, m\u00eb pas nj\u00eb tjet\u00ebr Kick, dhe m\u00eb pas do t\u00eb v\u00ebr\u00eb re se inputi i ardhsh\u00ebm \u00ebsht\u00eb gjithmon\u00eb Punch. Kjo do t'i lejoj\u00eb agjentit t\u00eb parashikoj\u00eb kombo-sulmin 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 ruajtur. N\u00eb shembullin e m\u00ebparsh\u00ebm ishte nj\u00eb 3-gram\u00eb (trigram\u00eb), q\u00eb do t\u00eb thot\u00eb: dy regjistrimet e para p\u00ebrdoren p\u00ebr t\u00eb parashikuar t\u00eb tret\u00ebn. Pra, n\u00eb nj\u00eb 5-gram\u00eb, kat\u00ebr regjistrimet e para 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 kujtes\u00eb, 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 regjistronte Kick, Kick ose Kick, Punch, por nuk do t\u00eb mundte t\u00eb ruante Kick, Kick, Punch, k\u00ebshtu q\u00eb AI nuk do t\u00eb reagonte ndaj kombo-sulmit SuperDeathFist.<\/p>\n<p>Nga ana tjet\u00ebr, numrat m\u00eb t\u00eb m\u00ebdhenj k\u00ebrkojn\u00eb m\u00eb shum\u00eb kujtes\u00eb dhe AI do t\u00eb ket\u00eb m\u00eb shum\u00eb v\u00ebshtir\u00ebsi n\u00eb m\u00ebsim, pasi do t\u00eb ket\u00eb shum\u00eb m\u00eb tep\u00ebr variante t\u00eb mundshme. N\u00ebse kishte tre inpute t\u00eb mundshme Kick, Punch ose Block, dhe ne p\u00ebrdorim nj\u00eb 10-gram\u00eb, do t\u00eb rezultonte 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 'shteti i kaluar\/shteti aktual' \u00ebsht\u00eb nj\u00eb bigram, dhe ju mund t\u00eb parashikoni shtetin e dyt\u00eb n\u00eb baz\u00eb t\u00eb atij t\u00eb par\u00eb. Trigrami dhe bigramet m\u00eb t\u00eb m\u00ebdha gjithashtu mund t\u00eb shqyrtohen si zinxhir\u00eb Markov ku t\u00eb gjitha elementet (p\u00ebrve\u00e7 elementit t\u00eb fundit n\u00eb N-gram\u00eb) s\u00eb bashku formojn\u00eb shtetin e par\u00eb, nd\u00ebrsa elementi i fundit \u00ebsht\u00eb i dyti. Nj\u00eb shembull me luftim tregon shansin e kalimit nga shteti Kick dhe Kick n\u00eb shtetin Kick dhe Punch. Duke par\u00eb disa regjistra t\u00eb historikut t\u00eb hyrjes si nj\u00eb nj\u00ebsi, ne, n\u00eb thelb, transformojm\u00eb sekuenc\u00ebn e hyrjes n\u00eb pjes\u00eb t\u00eb nj\u00eb gjendjeje t\u00eb t\u00ebr\u00eb. Kjo na jep pron\u00ebn Markov q\u00eb na lejon t\u00eb p\u00ebrdorim zinxhir\u00ebt Markov p\u00ebr t\u00eb parashikuar hyrjen e ardhshme dhe t\u00eb hamendsojm\u00eb se cili do t\u00eb jet\u00eb l\u00ebvizja tjet\u00ebr e kombos.<\/p>\n<h2>P\u00ebrfundim<\/h2>\n<p>\nDiskutuam p\u00ebr mjetet dhe qasjet m\u00eb t\u00eb zakonshme n\u00eb zhvillimin e inteligjenc\u00ebs artificiale. Gjithashtu shqyrtuam situatat n\u00eb t\u00eb cilat duhet t'i aplikojm\u00eb ato 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 gj\u00ebrat themelore n\u00eb inteligjenc\u00ebn artificiale t\u00eb lojrave. Por, sigurisht, kjo nuk \u00ebsht\u00eb t\u00eb gjitha metodat. Disa q\u00eb jan\u00eb m\u00eb pak popullore, por po aq efektive jan\u00eb:<\/p>\n<ul>\n<li>algoritmet p\u00ebr optimizim, duke p\u00ebrfshir\u00eb ngjitjen n\u00eb kodrina, zbritjen gradiente dhe algoritmet gjenetike<\/li>\n<li>algoritmet konkuruese t\u00eb k\u00ebrkimit\/planifikimit (minimax dhe alfa-beta pruning)<\/li>\n<li>metodat e klasifikimit (percepton\u00ebt, rrjetet neuronale dhe makinat e dhezjes s\u00eb mb\u00ebshtetjes)<\/li>\n<li>sistemet p\u00ebr p\u00ebrpunimin e perceptimit dhe memories s\u00eb agjent\u00ebve<\/li>\n<li>qasjet arkitekturore n\u00eb AI (sistemet hibride, n\u00ebngrupet e arkitekturave dhe m\u00ebnyra t\u00eb tjera p\u00ebr t\u00eb mbivendosur sistemet e AI)<\/li>\n<li>mjetet e animacionit (planifikimi dhe koordinimi i l\u00ebvizjes)<\/li>\n<li>faktor\u00ebt e performanc\u00ebs (niveli i detajeve, algoritmet e \u00e7do kohe, dhe ndarjen e koh\u00ebs)<\/li>\n<\/ul>\n<p>\nBurimet n\u00eb internet mbi 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 mbi AI<\/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> ka shum\u00eb prezantime dhe artikuj mbi nj\u00eb gam\u00eb t\u00eb gjer\u00eb lidhur me zhvillimin e AI t\u00eb lojrave.<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, nj\u00eb k\u00ebrkues i AI dhe zhvillues loj\u00ebrash, b\u00ebn video n\u00eb kanalin e YouTube <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/user\/tthompso\">AI and Games<\/a><\/noindex> me shpjegime dhe studime t\u00eb AI n\u00eb lojrat komerciale.<\/p>\n<p>Libra mbi tem\u00ebn:<\/p>\n<p>1. Seria e librave Game AI Pro p\u00ebrb\u00ebn koleksione artikujsh t\u00eb shkurt\u00ebr q\u00eb shpjegojn\u00eb si t\u00eb realizoni funksione specifike ose si t\u00eb zgjidhni probleme specifike.<\/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: Men\u00e7uria e Grumbulluar e Profesionist\u00ebve t\u00eb AI n\u00eb Loja<\/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: Men\u00e7uria e Grumbulluar e Profesionist\u00ebve t\u00eb AI n\u00eb Loja<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/amzn.to\/2KF4irS\">Game AI Pro 3: Men\u00e7uria e Grumbulluar e Profesionist\u00ebve t\u00eb AI n\u00eb Loja<\/a><\/noindex><\/p>\n<p>2. Seria e AI Game Programming Wisdom \u2014 paraardh\u00ebs i seris\u00eb Game AI Pro. Ajo p\u00ebrmban metoda m\u00eb t\u00eb vjetra, por pothuajse t\u00eb gjitha jan\u00eb ende t\u00eb r\u00ebnd\u00ebsishme 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\">Inteligjenca Artificiale: Nj\u00eb Qasje Moderne<\/a><\/noindex> \u2014 \u00ebsht\u00eb nj\u00eb nga tekstet baz\u00eb 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 ka t\u00eb b\u00ebj\u00eb me zhvillimin e loj\u00ebrave \u2014 ai m\u00ebson bazat e inteligjenc\u00ebs artificiale.<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-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - 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.\" \/>\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\/news\/kak-sozdat-igrovoj-ii-gajd-dlya-nachinayushhih\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/news\/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 nj\u00eb AI loj\u00ebrash: udh\u00ebzues p\u00ebr fillestar\u00ebt | ProHoster","description":"Kam hasur n\u00eb nj\u00eb material interesant p\u00ebr.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/news\/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.","og:url":"https:\/\/prohoster.info\/sq\/blog\/news\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}