గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

నేను గేమ్‌లలో కృత్రిమ మేధస్సు గురించి కొన్ని ఆసక్తికరమైన విషయాలను చూశాను. సాధారణ ఉదాహరణలను ఉపయోగించి AI గురించి ప్రాథమిక విషయాల వివరణతో, మరియు లోపల దాని అనుకూలమైన అభివృద్ధి మరియు రూపకల్పన కోసం అనేక ఉపయోగకరమైన సాధనాలు మరియు పద్ధతులు ఉన్నాయి. వాటిని ఎలా, ఎక్కడ మరియు ఎప్పుడు ఉపయోగించాలో కూడా ఉంది.

చాలా ఉదాహరణలు సూడోకోడ్‌లో వ్రాయబడ్డాయి, కాబట్టి అధునాతన ప్రోగ్రామింగ్ పరిజ్ఞానం అవసరం లేదు. కట్ కింద చిత్రాలు మరియు gifలతో 35 టెక్స్ట్ షీట్లు ఉన్నాయి, కాబట్టి సిద్ధంగా ఉండండి.

UPD. నేను క్షమాపణలు కోరుతున్నాను, కానీ నేను ఇప్పటికే హబ్రేలో ఈ కథనానికి నా స్వంత అనువాదం చేసాను పేషెంట్ జీరో. మీరు అతని సంస్కరణను చదవవచ్చు ఇక్కడ, కానీ కొన్ని కారణాల వల్ల కథనం నన్ను దాటిపోయింది (నేను శోధనను ఉపయోగించాను, కానీ ఏదో తప్పు జరిగింది). మరియు నేను గేమ్ డెవలప్‌మెంట్‌కు అంకితమైన బ్లాగ్‌లో వ్రాస్తున్నందున, చందాదారుల కోసం నా అనువాద సంస్కరణను వదిలివేయాలని నిర్ణయించుకున్నాను (కొన్ని పాయింట్‌లు భిన్నంగా ఫార్మాట్ చేయబడ్డాయి, కొన్ని డెవలపర్‌ల సలహాపై ఉద్దేశపూర్వకంగా తొలగించబడ్డాయి).

AI అంటే ఏమిటి?

గేమ్ AI ఒక వస్తువు ఉన్న పరిస్థితుల ఆధారంగా ఎలాంటి చర్యలు చేపట్టాలనే దానిపై దృష్టి పెడుతుంది. దీనిని సాధారణంగా "ఇంటెలిజెంట్ ఏజెంట్" మేనేజ్‌మెంట్ అని పిలుస్తారు, ఇక్కడ ఏజెంట్ అనేది ప్లేయర్ క్యారెక్టర్, వాహనం, బోట్ లేదా కొన్నిసార్లు మరింత వియుక్తమైనది: మొత్తం సంస్థల సమూహం లేదా నాగరికత కూడా. ప్రతి సందర్భంలోనూ, దాని వాతావరణాన్ని చూసి, దాని ఆధారంగా నిర్ణయాలు తీసుకోవాలి మరియు వాటికి అనుగుణంగా వ్యవహరించాల్సిన విషయం. దీనినే సెన్స్/థింక్/యాక్ట్ సైకిల్ అంటారు:

  • భావం: ఏజెంట్ తన వాతావరణంలో తన ప్రవర్తనను ప్రభావితం చేసే (సమీపంలో ఉన్న బెదిరింపులు, సేకరించాల్సిన అంశాలు, అన్వేషించడానికి ఆసక్తికరమైన స్థలాలు) వాటి గురించిన సమాచారాన్ని కనుగొంటారు లేదా స్వీకరిస్తారు.
  • ఆలోచించండి: ఏజెంట్ ఎలా ప్రతిస్పందించాలో నిర్ణయిస్తాడు (అంశాలను సేకరించడం తగినంత సురక్షితమేనా లేదా అతను మొదట పోరాడాలా/దాచుకోవాలా అని పరిగణనలోకి తీసుకుంటాడు).
  • చట్టం: ఏజెంట్ మునుపటి నిర్ణయాన్ని అమలు చేయడానికి చర్యలు తీసుకుంటాడు (శత్రువు లేదా వస్తువు వైపు వెళ్లడం ప్రారంభమవుతుంది).
  • ... ఇప్పుడు పాత్రల చర్యల కారణంగా పరిస్థితి మారింది, కాబట్టి చక్రం కొత్త డేటాతో పునరావృతమవుతుంది.

AI లూప్ యొక్క సెన్స్ భాగంపై దృష్టి పెడుతుంది. ఉదాహరణకు, స్వయంప్రతిపత్తమైన కార్లు రహదారి చిత్రాలను తీస్తాయి, వాటిని రాడార్ మరియు లిడార్ డేటాతో కలిపి, వాటిని అర్థం చేసుకుంటాయి. ఇది సాధారణంగా మెషీన్ లెర్నింగ్ ద్వారా చేయబడుతుంది, ఇది ఇన్‌కమింగ్ డేటాను ప్రాసెస్ చేస్తుంది మరియు దానికి అర్థాన్ని ఇస్తుంది, "మీ కంటే 20 గజాల ముందు మరో కారు ఉంది" వంటి సెమాంటిక్ సమాచారాన్ని సంగ్రహిస్తుంది. ఇవి వర్గీకరణ సమస్యలు అని పిలవబడేవి.

చాలా డేటా ఇప్పటికే దానిలో అంతర్భాగంగా ఉన్నందున సమాచారాన్ని సేకరించేందుకు గేమ్‌లకు సంక్లిష్టమైన సిస్టమ్ అవసరం లేదు. ముందు శత్రువు ఉన్నారో లేదో తెలుసుకోవడానికి ఇమేజ్ రికగ్నిషన్ అల్గారిథమ్‌లను అమలు చేయవలసిన అవసరం లేదు- గేమ్ ఇప్పటికే తెలుసుకుని, నిర్ణయాత్మక ప్రక్రియలో నేరుగా సమాచారాన్ని అందిస్తుంది. అందువల్ల, చక్రం యొక్క సెన్స్ భాగం థింక్ అండ్ యాక్ట్ భాగం కంటే చాలా సరళంగా ఉంటుంది.

గేమ్ AI పరిమితులు

AIకి అనేక పరిమితులు ఉన్నాయి, వీటిని తప్పనిసరిగా గమనించాలి:

  • మెషీన్ లెర్నింగ్ అల్గారిథమ్ లాగా AIకి ముందుగానే శిక్షణ ఇవ్వాల్సిన అవసరం లేదు. పదివేల మంది ఆటగాళ్లను పర్యవేక్షించడానికి మరియు వారికి వ్యతిరేకంగా ఆడటానికి ఉత్తమమైన మార్గాన్ని తెలుసుకోవడానికి అభివృద్ధి సమయంలో న్యూరల్ నెట్‌వర్క్‌ను వ్రాయడంలో అర్ధమే లేదు. ఎందుకు? ఎందుకంటే గేమ్ విడుదల కాలేదు మరియు ఆటగాళ్ళు లేరు.
  • గేమ్ సరదాగా మరియు సవాలుగా ఉండాలి, కాబట్టి ఏజెంట్లు వ్యక్తులకు వ్యతిరేకంగా ఉత్తమమైన విధానాన్ని కనుగొనకూడదు.
  • ఏజెంట్లు వాస్తవికంగా కనిపించాలి, తద్వారా ఆటగాళ్ళు నిజమైన వ్యక్తులకు వ్యతిరేకంగా ఆడినట్లు భావిస్తారు. AlphaGo ప్రోగ్రామ్ మానవులను అధిగమించింది, కానీ ఎంచుకున్న దశలు ఆట యొక్క సాంప్రదాయ అవగాహనకు చాలా దూరంగా ఉన్నాయి. ఆట మానవ ప్రత్యర్థిని అనుకరిస్తే, ఈ భావన ఉండకూడదు. అల్గోరిథం మార్చబడాలి, తద్వారా ఇది ఆదర్శవంతమైన వాటి కంటే ఆమోదయోగ్యమైన నిర్ణయాలు తీసుకుంటుంది.
  • AI నిజ సమయంలో పని చేయాలి. దీనర్థం అల్గారిథమ్ నిర్ణయాలు తీసుకోవడానికి చాలా కాలం పాటు CPU వినియోగాన్ని గుత్తాధిపత్యం చేయదు. 10 మిల్లీసెకన్లు కూడా చాలా పొడవుగా ఉన్నాయి, ఎందుకంటే అన్ని ప్రాసెసింగ్‌లను పూర్తి చేయడానికి మరియు తదుపరి గ్రాఫిక్స్ ఫ్రేమ్‌కి వెళ్లడానికి చాలా గేమ్‌లకు 16 నుండి 33 మిల్లీసెకన్లు మాత్రమే అవసరం.
  • ఆదర్శవంతంగా, సిస్టమ్‌లో కనీసం భాగమైనా డేటా ఆధారితంగా ఉండాలి, తద్వారా కోడర్లు కానివారు మార్పులు చేయగలరు మరియు సర్దుబాట్లు మరింత త్వరగా జరుగుతాయి.

మొత్తం సెన్స్/థింక్/యాక్ట్ సైకిల్‌ను కవర్ చేసే AI విధానాలను చూద్దాం.

ప్రాథమిక నిర్ణయాలు తీసుకోవడం

సరళమైన ఆటతో ప్రారంభిద్దాం - పాంగ్. లక్ష్యం: తెడ్డును కదిలించండి, తద్వారా బంతి దానిని దాటి ఎగరడం కంటే బౌన్స్ అవుతుంది. ఇది టెన్నిస్ లాంటిది, మీరు బంతిని కొట్టకపోతే మీరు ఓడిపోతారు. ఇక్కడ AIకి చాలా సులభమైన పని ఉంది - ప్లాట్‌ఫారమ్‌ను ఏ దిశలో తరలించాలో నిర్ణయించడం.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

షరతులతో కూడిన ప్రకటనలు

పాంగ్‌లోని AI కోసం, ఎల్లప్పుడూ బంతి కింద ప్లాట్‌ఫారమ్‌ను ఉంచడానికి ప్రయత్నించడం అత్యంత స్పష్టమైన పరిష్కారం.

దీని కోసం ఒక సాధారణ అల్గోరిథం, సూడోకోడ్‌లో వ్రాయబడింది:

గేమ్ నడుస్తున్నప్పుడు ప్రతి ఫ్రేమ్/నవీకరణ:
బంతి తెడ్డుకు ఎడమవైపు ఉంటే:
తెడ్డును ఎడమకు తరలించు
ఒకవేళ బంతి తెడ్డుకు కుడివైపున ఉంటే:
తెడ్డును కుడికి తరలించు

ప్లాట్‌ఫారమ్ బంతి వేగంతో కదులుతున్నట్లయితే, ఇది పాంగ్‌లోని AIకి అనువైన అల్గోరిథం. ఏజెంట్ కోసం చాలా డేటా మరియు సాధ్యం చర్యలు లేనట్లయితే ఏదైనా క్లిష్టతరం చేయవలసిన అవసరం లేదు.

ఈ విధానం చాలా సరళమైనది కాబట్టి మొత్తం సెన్స్/థింక్/యాక్ట్ సైకిల్ గుర్తించదగినది కాదు. కానీ అది ఉంది:

  • సెన్స్ భాగం రెండు ఇఫ్ స్టేట్‌మెంట్‌లలో ఉంటుంది. బంతి ఎక్కడ ఉందో మరియు ప్లాట్‌ఫారమ్ ఎక్కడ ఉందో గేమ్‌కు తెలుసు, కాబట్టి ఆ సమాచారం కోసం AI దాని వైపు చూస్తుంది.
  • రెండు if స్టేట్‌మెంట్‌లలో థింక్ భాగం కూడా చేర్చబడింది. అవి రెండు పరిష్కారాలను కలిగి ఉంటాయి, ఈ సందర్భంలో పరస్పరం ప్రత్యేకమైనవి. ఫలితంగా, మూడు చర్యలలో ఒకటి ఎంపిక చేయబడింది - ప్లాట్‌ఫారమ్‌ను ఎడమ వైపుకు తరలించండి, కుడి వైపుకు తరలించండి లేదా ఇది ఇప్పటికే సరిగ్గా ఉంచబడితే ఏమీ చేయవద్దు.
  • మూవ్ ప్యాడిల్ లెఫ్ట్ మరియు మూవ్ ప్యాడిల్ రైట్ స్టేట్‌మెంట్‌లలో చట్టం భాగం కనుగొనబడింది. గేమ్ డిజైన్‌పై ఆధారపడి, వారు ప్లాట్‌ఫారమ్‌ను తక్షణమే లేదా నిర్దిష్ట వేగంతో తరలించగలరు.

ఇటువంటి విధానాలను రియాక్టివ్ అని పిలుస్తారు - ప్రపంచంలోని ప్రస్తుత స్థితికి ప్రతిస్పందించే మరియు చర్య తీసుకునే సాధారణ నియమాలు (ఈ సందర్భంలో కోడ్‌లోని స్టేట్‌మెంట్‌లు ఉంటే) ఉన్నాయి.

నిర్ణయ చెట్టు

పాంగ్ ఉదాహరణ వాస్తవానికి డెసిషన్ ట్రీ అని పిలువబడే అధికారిక AI భావనకు సమానం. "ఆకు"ని చేరుకోవడానికి అల్గారిథమ్ దాని గుండా వెళుతుంది-ఏ చర్య తీసుకోవాలనే దానిపై నిర్ణయం.

మన ప్లాట్‌ఫారమ్ యొక్క అల్గోరిథం కోసం నిర్ణయం చెట్టు యొక్క బ్లాక్ రేఖాచిత్రాన్ని తయారు చేద్దాం:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

చెట్టు యొక్క ప్రతి భాగాన్ని నోడ్ అంటారు - AI అటువంటి నిర్మాణాలను వివరించడానికి గ్రాఫ్ సిద్ధాంతాన్ని ఉపయోగిస్తుంది. రెండు రకాల నోడ్స్ ఉన్నాయి:

  • డెసిషన్ నోడ్‌లు: కొన్ని షరతులను పరీక్షించడం ఆధారంగా రెండు ప్రత్యామ్నాయాల మధ్య ఎంచుకోవడం, ఇక్కడ ప్రతి ప్రత్యామ్నాయం ప్రత్యేక నోడ్‌గా సూచించబడుతుంది.
  • ముగింపు నోడ్‌లు: తుది నిర్ణయాన్ని సూచించే చర్య.

అల్గోరిథం మొదటి నోడ్ (చెట్టు యొక్క "రూట్") నుండి ప్రారంభమవుతుంది. ఇది ఏ చైల్డ్ నోడ్‌కి వెళ్లాలనే దాని గురించి నిర్ణయం తీసుకుంటుంది లేదా నోడ్‌లో నిల్వ చేయబడిన చర్యను అమలు చేసి నిష్క్రమిస్తుంది.

మునుపటి విభాగంలో if స్టేట్‌మెంట్‌ల మాదిరిగానే నిర్ణయం చెట్టును కలిగి ఉండటం వల్ల ప్రయోజనం ఏమిటి? ఇక్కడ ఒక సాధారణ వ్యవస్థ ఉంది, ఇక్కడ ప్రతి నిర్ణయానికి ఒక షరతు మరియు రెండు సాధ్యమయ్యే ఫలితాలు ఉంటాయి. ఇది హార్డ్-కోడ్ చేయకుండా ట్రీలోని నిర్ణయాలను సూచించే డేటా నుండి AIని సృష్టించడానికి డెవలపర్‌ని అనుమతిస్తుంది. దానిని పట్టిక రూపంలో అందజేద్దాం:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

కోడ్ వైపు మీరు స్ట్రింగ్‌లను చదవడానికి సిస్టమ్‌ను పొందుతారు. వాటిలో ప్రతిదానికి ఒక నోడ్‌ను సృష్టించండి, రెండవ నిలువు వరుస ఆధారంగా నిర్ణయ తర్కాన్ని మరియు మూడవ మరియు నాల్గవ నిలువు వరుసల ఆధారంగా చైల్డ్ నోడ్‌లను కనెక్ట్ చేయండి. మీరు ఇప్పటికీ పరిస్థితులు మరియు చర్యలను ప్రోగ్రామ్ చేయాలి, కానీ ఇప్పుడు ఆట యొక్క నిర్మాణం మరింత క్లిష్టంగా ఉంటుంది. ఇక్కడ మీరు అదనపు నిర్ణయాలు మరియు చర్యలను జోడించి, ఆపై ట్రీ డెఫినిషన్ టెక్స్ట్ ఫైల్‌ను సవరించడం ద్వారా మొత్తం AIని అనుకూలీకరించండి. తర్వాత, మీరు గేమ్ డిజైనర్‌కు ఫైల్‌ను బదిలీ చేస్తారు, అతను గేమ్‌ను రీకంపైల్ చేయకుండా లేదా కోడ్‌ను మార్చకుండా ప్రవర్తనను మార్చగలడు.

పెద్ద ఉదాహరణల నుండి స్వయంచాలకంగా నిర్మించబడినప్పుడు డెసిషన్ ట్రీలు చాలా ఉపయోగకరంగా ఉంటాయి (ఉదాహరణకు, ID3 అల్గోరిథం ఉపయోగించి). ఇది పొందిన డేటా ఆధారంగా పరిస్థితులను వర్గీకరించడానికి వాటిని సమర్థవంతమైన మరియు అధిక-పనితీరు సాధనంగా చేస్తుంది. అయినప్పటికీ, ఏజెంట్‌లు చర్యలను ఎంచుకోవడానికి మేము సాధారణ వ్యవస్థను దాటి వెళ్తాము.

దృశ్యాలు

మేము ముందుగా రూపొందించిన పరిస్థితులు మరియు చర్యలను ఉపయోగించిన నిర్ణయం చెట్టు వ్యవస్థను విశ్లేషించాము. AI రూపకల్పన చేసే వ్యక్తి తనకు నచ్చిన విధంగా చెట్టును నిర్వహించగలడు, కానీ అతను ఇప్పటికీ అన్నింటినీ ప్రోగ్రామ్ చేసిన కోడర్‌పై ఆధారపడవలసి ఉంటుంది. మేము డిజైనర్‌కు వారి స్వంత పరిస్థితులు లేదా చర్యలను రూపొందించడానికి సాధనాలను అందించగలిగితే?

కాబట్టి ప్రోగ్రామర్ ఈజ్ బాల్ లెఫ్ట్ ఆఫ్ పాడిల్ మరియు ఈజ్ బాల్ రైట్ ఆఫ్ పాడిల్ అనే షరతుల కోసం కోడ్ రాయాల్సిన అవసరం లేదు, అతను ఈ విలువలను తనిఖీ చేయడానికి డిజైనర్ షరతులను వ్రాసే వ్యవస్థను సృష్టించవచ్చు. అప్పుడు నిర్ణయం చెట్టు డేటా ఇలా కనిపిస్తుంది:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ఇది తప్పనిసరిగా మొదటి పట్టికలో వలెనే ఉంటుంది, అయితే వాటి లోపల పరిష్కారాలు వాటి స్వంత కోడ్‌ను కలిగి ఉంటాయి, ఇది if స్టేట్‌మెంట్‌లోని షరతులతో కూడిన భాగం వలె ఉంటుంది. కోడ్ వైపు, ఇది డెసిషన్ నోడ్‌ల కోసం రెండవ కాలమ్‌లో చదవబడుతుంది, కానీ అమలు చేయడానికి నిర్దిష్ట షరతు కోసం వెతకడానికి బదులుగా (పాడిల్‌లో బాల్ మిగిలి ఉందా), ఇది షరతులతో కూడిన వ్యక్తీకరణను మూల్యాంకనం చేస్తుంది మరియు తదనుగుణంగా నిజం లేదా తప్పుని అందిస్తుంది. ఇది లువా లేదా ఏంజెల్‌స్క్రిప్ట్ స్క్రిప్టింగ్ భాషని ఉపయోగించి చేయబడుతుంది. వాటిని ఉపయోగించి, డెవలపర్ తన గేమ్ (బాల్ మరియు తెడ్డు)లోని వస్తువులను తీసుకోవచ్చు మరియు స్క్రిప్ట్‌లో (ball.position) అందుబాటులో ఉండే వేరియబుల్‌లను సృష్టించవచ్చు. అలాగే, స్క్రిప్టింగ్ భాష C++ కంటే సరళమైనది. దీనికి పూర్తి సంకలన దశ అవసరం లేదు, కాబట్టి ఇది గేమ్ లాజిక్‌ను త్వరగా సర్దుబాటు చేయడానికి అనువైనది మరియు అవసరమైన ఫంక్షన్‌లను సృష్టించడానికి “కోడర్లు కానివారు” అనుమతిస్తుంది.

ఎగువ ఉదాహరణలో, స్క్రిప్టింగ్ భాష షరతులతో కూడిన వ్యక్తీకరణను అంచనా వేయడానికి మాత్రమే ఉపయోగించబడుతుంది, అయితే ఇది చర్యలకు కూడా ఉపయోగించబడుతుంది. ఉదాహరణకు, డేటా మూవ్ ప్యాడిల్ రైట్ అనేది స్క్రిప్ట్ స్టేట్‌మెంట్‌గా మారవచ్చు (ball.position.x += 10). మూవ్ పాడిల్ రైట్‌ని ప్రోగ్రామ్ చేయాల్సిన అవసరం లేకుండా, స్క్రిప్ట్‌లో చర్య కూడా నిర్వచించబడుతుంది.

మీరు మరింత ముందుకు వెళ్లి స్క్రిప్టింగ్ భాషలో మొత్తం నిర్ణయం ట్రీని వ్రాయవచ్చు. ఇది హార్డ్‌కోడెడ్ షరతులతో కూడిన స్టేట్‌మెంట్‌ల రూపంలో కోడ్ అవుతుంది, కానీ అవి బాహ్య స్క్రిప్ట్ ఫైల్‌లలో ఉంటాయి, అంటే మొత్తం ప్రోగ్రామ్‌ను తిరిగి కంపైల్ చేయకుండానే వాటిని మార్చవచ్చు. వివిధ AI ప్రతిచర్యలను త్వరగా పరీక్షించడానికి మీరు గేమ్‌ప్లే సమయంలో స్క్రిప్ట్ ఫైల్‌ను తరచుగా సవరించవచ్చు.

ఈవెంట్ ప్రతిస్పందన

పై ఉదాహరణలు పాంగ్ కోసం ఖచ్చితంగా సరిపోతాయి. వారు నిరంతరం సెన్స్/థింక్/యాక్ట్ సైకిల్‌ను అమలు చేస్తారు మరియు ప్రపంచంలోని తాజా స్థితి ఆధారంగా పని చేస్తారు. కానీ మరింత సంక్లిష్టమైన ఆటలలో మీరు వ్యక్తిగత ఈవెంట్‌లకు ప్రతిస్పందించాలి మరియు అన్నింటినీ ఒకేసారి అంచనా వేయకూడదు. ఈ సందర్భంలో పాంగ్ ఇప్పటికే ఒక చెడ్డ ఉదాహరణ. మరొకటి ఎంచుకుందాం.

ఆటగాడిని గుర్తించే వరకు శత్రువులు కదలకుండా ఉండే షూటర్‌ని ఊహించుకోండి, ఆ తర్వాత వారు వారి "స్పెషలైజేషన్" ఆధారంగా పని చేస్తారు: ఎవరైనా "రష్" చేయడానికి పరిగెత్తుతారు, ఎవరైనా దూరం నుండి దాడి చేస్తారు. ఇది ఇప్పటికీ ప్రాథమిక రియాక్టివ్ సిస్టమ్ - "ఆటగాడు గుర్తించబడితే, ఏదైనా చేయండి" - కానీ దానిని తార్కికంగా ప్లేయర్ సీన్ ఈవెంట్ మరియు రియాక్షన్‌గా విభజించవచ్చు (ప్రతిస్పందనను ఎంచుకుని దాన్ని అమలు చేయండి).

ఇది మనల్ని సెన్స్/థింక్/యాక్ట్ సైకిల్‌కి తిరిగి తీసుకువస్తుంది. AI ప్లేయర్‌ని చూస్తుందో లేదో ప్రతి ఫ్రేమ్‌ను తనిఖీ చేసే సెన్స్ భాగాన్ని మేము కోడ్ చేయవచ్చు. కాకపోతే, ఏమీ జరగదు, కానీ అది చూస్తే, ప్లేయర్ సీన్ ఈవెంట్ సృష్టించబడుతుంది. కోడ్‌లో "ప్లేయర్ సీన్ ఈవెంట్ సంభవించినప్పుడు, చేయండి" అని చెప్పే ప్రత్యేక విభాగాన్ని కలిగి ఉంటుంది, మీరు థింక్ అండ్ యాక్ట్ భాగాలను పరిష్కరించాల్సిన ప్రతిస్పందన ఎక్కడ ఉంటుంది. ఆ విధంగా, మీరు ప్లేయర్ సీన్ ఈవెంట్‌కి ప్రతిచర్యలను సెటప్ చేస్తారు: “రషింగ్” క్యారెక్టర్ కోసం - ఛార్జ్‌అండ్‌అటాక్ మరియు స్నిపర్ కోసం - హైడ్‌అండ్‌స్నిప్. ఈ సంబంధాలు మళ్లీ కంపైల్ చేయకుండానే శీఘ్ర సవరణ కోసం డేటా ఫైల్‌లో సృష్టించబడతాయి. స్క్రిప్టింగ్ భాషను ఇక్కడ కూడా ఉపయోగించవచ్చు.

కష్టమైన నిర్ణయాలు తీసుకోవడం

సాధారణ ప్రతిచర్య వ్యవస్థలు చాలా శక్తివంతమైనవి అయినప్పటికీ, అవి సరిపోని అనేక పరిస్థితులు ఉన్నాయి. కొన్నిసార్లు మీరు ఏజెంట్ ప్రస్తుతం చేస్తున్న దాని ఆధారంగా వేర్వేరు నిర్ణయాలు తీసుకోవలసి ఉంటుంది, కానీ ఇది ఒక షరతుగా ఊహించడం కష్టం. కొన్నిసార్లు వాటిని డెసిషన్ ట్రీ లేదా స్క్రిప్ట్‌లో సమర్థవంతంగా సూచించడానికి చాలా షరతులు ఉంటాయి. కొన్నిసార్లు మీరు తదుపరి దశను నిర్ణయించే ముందు పరిస్థితి ఎలా మారుతుందో ముందుగానే అంచనా వేయాలి. ఈ సమస్యలను పరిష్కరించడానికి మరింత అధునాతన విధానాలు అవసరం.

పరిమిత రాష్ట్ర యంత్రం

పరిమిత స్థితి యంత్రం లేదా FSM (పరిమిత స్థితి యంత్రం) అనేది మా ఏజెంట్ ప్రస్తుతం సాధ్యమయ్యే అనేక రాష్ట్రాల్లో ఒకదానిలో ఉందని మరియు అది ఒక రాష్ట్రం నుండి మరొక స్థితికి మారగలదని చెప్పే మార్గం. అటువంటి రాష్ట్రాలు నిర్దిష్ట సంఖ్యలో ఉన్నాయి-అందుకే పేరు. జీవితం నుండి ఉత్తమ ఉదాహరణ ట్రాఫిక్ లైట్. వేర్వేరు ప్రదేశాలలో లైట్ల యొక్క విభిన్న శ్రేణులు ఉన్నాయి, కానీ సూత్రం ఒకే విధంగా ఉంటుంది - ప్రతి రాష్ట్రం దేనినైనా సూచిస్తుంది (స్టాప్, నడక, మొదలైనవి). ట్రాఫిక్ లైట్ ఏ సమయంలోనైనా ఒక స్థితిలో మాత్రమే ఉంటుంది మరియు సాధారణ నియమాల ఆధారంగా ఒకదాని నుండి మరొకదానికి మారుతుంది.

గేమ్‌లలోని NPCల విషయంలోనూ ఇదే కథనం. ఉదాహరణకు, కింది రాష్ట్రాలతో గార్డును తీసుకుందాం:

  • పెట్రోలింగ్.
  • దాడి చేస్తోంది.
  • పారిపోతున్నారు.

మరియు దాని స్థితిని మార్చడానికి ఈ పరిస్థితులు:

  • గార్డు శత్రువును చూస్తే, అతను దాడి చేస్తాడు.
  • గార్డు దాడి చేసినా శత్రువును చూడకపోతే, అతను గస్తీకి తిరిగి వస్తాడు.
  • ఒక గార్డు దాడి చేసినప్పటికీ తీవ్రంగా గాయపడినట్లయితే, అతను పారిపోతాడు.

మీరు గార్డియన్ స్టేట్ వేరియబుల్ మరియు వివిధ తనిఖీలతో if-స్టేట్‌మెంట్‌లను కూడా వ్రాయవచ్చు: సమీపంలో శత్రువు ఉన్నారా, NPC యొక్క ఆరోగ్య స్థాయి ఏమిటి మొదలైనవి. మరికొన్ని రాష్ట్రాలను జోడిద్దాం:

  • నిష్క్రియ - గస్తీ మధ్య.
  • శోధించడం - గమనించిన శత్రువు అదృశ్యమైనప్పుడు.
  • సహాయాన్ని కనుగొనడం - శత్రువును గుర్తించినప్పుడు, ఒంటరిగా పోరాడటానికి చాలా బలంగా ఉన్నప్పుడు.

వాటిలో ప్రతి ఒక్కరికి ఎంపిక పరిమితం - ఉదాహరణకు, గార్డు తక్కువ ఆరోగ్యం కలిగి ఉంటే దాచిన శత్రువు కోసం వెతకడు.

అన్నింటికంటే, "ifs" యొక్క భారీ జాబితా ఉంది , ఆ " చాలా గజిబిజిగా మారవచ్చు, కాబట్టి రాష్ట్రాల మధ్య రాష్ట్రాలు మరియు పరివర్తనలను దృష్టిలో ఉంచుకోవడానికి అనుమతించే పద్ధతిని మనం అధికారికం చేయాలి. దీన్ని చేయడానికి, మేము అన్ని రాష్ట్రాలను పరిగణనలోకి తీసుకుంటాము మరియు ప్రతి రాష్ట్రం కింద మేము ఇతర రాష్ట్రాలకు అన్ని పరివర్తనలను, వాటికి అవసరమైన పరిస్థితులతో పాటు జాబితాలో వ్రాస్తాము.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ఇది రాష్ట్ర పరివర్తన పట్టిక - FSMని సూచించడానికి ఒక సమగ్ర మార్గం. ఒక రేఖాచిత్రాన్ని గీయండి మరియు NPC ప్రవర్తన ఎలా మారుతుందో పూర్తి అవలోకనాన్ని పొందండి.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

రేఖాచిత్రం ప్రస్తుత పరిస్థితి ఆధారంగా ఈ ఏజెంట్ కోసం నిర్ణయం తీసుకోవడం యొక్క సారాంశాన్ని ప్రతిబింబిస్తుంది. అంతేకాకుండా, ప్రతి బాణం దాని ప్రక్కన ఉన్న పరిస్థితి నిజమైతే రాష్ట్రాల మధ్య పరివర్తనను చూపుతుంది.

ప్రతి అప్‌డేట్ మేము ఏజెంట్ యొక్క ప్రస్తుత స్థితిని తనిఖీ చేస్తాము, పరివర్తనల జాబితాను పరిశీలిస్తాము మరియు పరివర్తన కోసం షరతులు నెరవేరినట్లయితే, అది కొత్త స్థితిని అంగీకరిస్తుంది. ఉదాహరణకు, ప్రతి ఫ్రేమ్ 10-సెకన్ల టైమర్ గడువు ముగిసిందో లేదో తనిఖీ చేస్తుంది మరియు అలా అయితే, గార్డు ఇడ్లింగ్ స్థితి నుండి పెట్రోలింగ్‌కు వెళ్తాడు. అదే విధంగా, అటాకింగ్ స్టేట్ ఏజెంట్ యొక్క ఆరోగ్యాన్ని తనిఖీ చేస్తుంది - అది తక్కువగా ఉంటే, అది పారిపోయే స్థితికి వెళుతుంది.

ఇది రాష్ట్రాల మధ్య పరివర్తనలను నిర్వహిస్తోంది, అయితే రాష్ట్రాలతో సంబంధం ఉన్న ప్రవర్తన గురించి ఏమిటి? ఒక నిర్దిష్ట రాష్ట్రం కోసం వాస్తవ ప్రవర్తనను అమలు చేసే విషయంలో, మేము FSMకి చర్యలను కేటాయించే రెండు రకాల "హుక్" ఉన్నాయి:

  • ప్రస్తుత స్థితి కోసం మేము క్రమానుగతంగా చేసే చర్యలు.
  • ఒక రాష్ట్రం నుండి మరొక రాష్ట్రానికి మారేటప్పుడు మనం తీసుకునే చర్యలు.

మొదటి రకానికి ఉదాహరణలు. పెట్రోలింగ్ రాష్ట్రం ప్రతి ఫ్రేమ్‌ను పెట్రోల్ మార్గంలో ఏజెంట్‌ను తరలిస్తుంది. దాడి చేసే స్థితి ప్రతి ఫ్రేమ్‌పై దాడిని ప్రారంభించడానికి ప్రయత్నిస్తుంది లేదా ఇది సాధ్యమయ్యే స్థితికి మారుతుంది.

రెండవ రకం కోసం, పరివర్తనను పరిగణించండి “శత్రువు కనిపిస్తే మరియు శత్రువు చాలా బలంగా ఉంటే, ఆపై ఫైండింగ్ హెల్ప్ స్థితికి వెళ్లండి. ఏజెంట్ సహాయం కోసం ఎక్కడికి వెళ్లాలో ఎంచుకోవాలి మరియు ఈ సమాచారాన్ని నిల్వ చేయాలి, తద్వారా ఫైండింగ్ హెల్ప్ స్టేట్‌కు ఎక్కడికి వెళ్లాలో తెలుస్తుంది. సహాయం కనుగొనబడిన తర్వాత, ఏజెంట్ దాడి చేసే స్థితికి తిరిగి వెళ్తాడు. ఈ సమయంలో, అతను ముప్పు గురించి మిత్రదేశానికి చెప్పాలనుకుంటాడు, కాబట్టి NotifyFriendOfThreat చర్య సంభవించవచ్చు.

మరోసారి, మనం ఈ వ్యవస్థను సెన్స్/థింక్/యాక్ట్ సైకిల్ లెన్స్ ద్వారా చూడవచ్చు. పరివర్తన తర్కం ఉపయోగించిన డేటాలో సెన్స్ పొందుపరచబడింది. ఆలోచించండి - ప్రతి రాష్ట్రంలో పరివర్తనాలు అందుబాటులో ఉన్నాయి. మరియు చట్టం ఒక రాష్ట్రంలో లేదా రాష్ట్రాల మధ్య పరివర్తన సమయంలో క్రమానుగతంగా చేసే చర్యల ద్వారా నిర్వహించబడుతుంది.

కొన్నిసార్లు నిరంతర పోలింగ్ పరివర్తన పరిస్థితులు ఖరీదైనవి కావచ్చు. ఉదాహరణకు, ప్రతి ఏజెంట్ శత్రువులను చూడగలడా మరియు అది పెట్రోలింగ్ నుండి అటాకింగ్ స్థితికి మారగలదో లేదో తెలుసుకోవడానికి ప్రతి ఫ్రేమ్‌కు సంక్లిష్టమైన గణనలను చేస్తే, దీనికి చాలా CPU సమయం పడుతుంది.

ప్రపంచంలోని స్థితిలో ముఖ్యమైన మార్పులను అవి సంభవించినప్పుడు ప్రాసెస్ చేసే సంఘటనలుగా భావించవచ్చు. FSM పరివర్తన స్థితిని తనిఖీ చేయడానికి బదులుగా "నా ఏజెంట్ ప్లేయర్‌ని చూడగలడా?" ప్రతి ఫ్రేమ్, తక్కువ తరచుగా తనిఖీ చేయడానికి ప్రత్యేక సిస్టమ్‌ను కాన్ఫిగర్ చేయవచ్చు (ఉదా. సెకనుకు 5 సార్లు). మరియు చెక్ పాస్ అయినప్పుడు ప్లేయర్ సీన్‌ని జారీ చేయడం ఫలితం.

ఇది FSMకి పంపబడింది, ఇది ఇప్పుడు ప్లేయర్ సీన్ ఈవెంట్‌ని స్వీకరించిన స్థితికి వెళ్లి తదనుగుణంగా ప్రతిస్పందించాలి. ప్రతిస్పందించడానికి ముందు దాదాపుగా కనిపించని జాప్యం మినహా ఫలిత ప్రవర్తన అదే విధంగా ఉంటుంది. కానీ సెన్స్ భాగాన్ని ప్రోగ్రామ్‌లోని ప్రత్యేక భాగంగా వేరు చేయడం వల్ల పనితీరు మెరుగుపడింది.

క్రమానుగత పరిమిత స్థితి యంత్రం

అయినప్పటికీ, పెద్ద FSMలతో పనిచేయడం ఎల్లప్పుడూ అనుకూలమైనది కాదు. మేము దాడి స్థితిని కొట్లాట మరియు రేంజ్డ్ అటాకింగ్‌లను వేరు చేయడానికి విస్తరించాలనుకుంటే, అటాకింగ్ స్థితికి (ప్రస్తుత మరియు భవిష్యత్తు) దారితీసే అన్ని ఇతర రాష్ట్రాల నుండి మార్పులను మార్చాలి.

మా ఉదాహరణలో చాలా నకిలీ పరివర్తనాలు ఉన్నాయని మీరు బహుశా గమనించవచ్చు. నిష్క్రియ స్థితిలో చాలా పరివర్తనాలు పెట్రోలింగ్ స్థితిలో పరివర్తనలకు సమానంగా ఉంటాయి. మనం పునరావృతం కాకుండా ఉండటం మంచిది, ప్రత్యేకించి మనం ఇలాంటి రాష్ట్రాలను జోడించినట్లయితే. "నాన్-కాంబాట్" అనే సాధారణ లేబుల్ క్రింద ఇడ్లింగ్ మరియు పెట్రోలింగ్‌ను సమూహపరచడం అర్ధమే, ఇక్కడ పోరాట స్థితులకు ఒకే ఒక సాధారణ పరివర్తన ఉంటుంది. మేము ఈ లేబుల్‌ని రాష్ట్రంగా భావిస్తే, ఇడ్లింగ్ మరియు పెట్రోలింగ్ సబ్‌స్టేట్‌లుగా మారతాయి. కొత్త నాన్-కాంబాట్ సబ్‌స్టేట్ కోసం ప్రత్యేక పరివర్తన పట్టికను ఉపయోగించే ఉదాహరణ:

ప్రధాన రాష్ట్రాలు:
గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

పోరాట స్థితి లేదు:
గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

మరియు రేఖాచిత్రం రూపంలో:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ఇది అదే వ్యవస్థ, కానీ ఇడ్లింగ్ మరియు పెట్రోలింగ్‌తో కూడిన కొత్త నాన్-కాంబాట్ స్టేట్‌తో. సబ్‌స్టేట్‌లతో కూడిన FSMని కలిగి ఉన్న ప్రతి రాష్ట్రం (మరియు ఈ సబ్‌స్టేట్‌లు, వాటి స్వంత FSMలను కలిగి ఉంటాయి - మరియు మీకు అవసరమైనంత వరకు), మేము క్రమానుగత పరిమిత స్థితి యంత్రం లేదా HFSM (క్రమానుగత పరిమిత స్థితి యంత్రం)ని పొందుతాము. పోరాట రహిత స్థితిని సమూహపరచడం ద్వారా, మేము అనవసరమైన పరివర్తనాల సమూహాన్ని కత్తిరించాము. సాధారణ పరివర్తనలు ఉన్న ఏవైనా కొత్త రాష్ట్రాలకు మేము అదే విధంగా చేయవచ్చు. ఉదాహరణకు, భవిష్యత్తులో మేము దాడి చేసే స్థితిని కొట్లాట మరియు క్షిపణి దాడి చేసే రాష్ట్రాలకు విస్తరింపజేస్తే, అవి శత్రువుకు దూరం మరియు మందు సామగ్రి సరఫరా లభ్యత ఆధారంగా ఒకదానికొకటి పరివర్తన చెందే ఉపరాష్ట్రాలుగా ఉంటాయి. ఫలితంగా, సంక్లిష్టమైన ప్రవర్తనలు మరియు ఉప-ప్రవర్తనలను కనీసం నకిలీ పరివర్తనలతో సూచించవచ్చు.

ప్రవర్తన చెట్టు

HFSMతో, ప్రవర్తనల సంక్లిష్ట కలయికలు సరళమైన మార్గంలో సృష్టించబడతాయి. అయితే, పరివర్తన నియమాల రూపంలో నిర్ణయం తీసుకోవడం ప్రస్తుత స్థితికి దగ్గరి సంబంధం కలిగి ఉండటం వలన కొంచెం ఇబ్బంది ఉంది. మరియు అనేక ఆటలలో ఇది ఖచ్చితంగా అవసరం. మరియు రాష్ట్ర సోపానక్రమాన్ని జాగ్రత్తగా ఉపయోగించడం వలన పరివర్తన పునరావృతాల సంఖ్యను తగ్గించవచ్చు. కానీ కొన్నిసార్లు మీరు ఏ రాష్ట్రంలో ఉన్నా లేదా దాదాపు ఏ రాష్ట్రంలోనైనా వర్తించే నియమాలు అవసరం. ఉదాహరణకు, ఏజెంట్ ఆరోగ్యం 25%కి పడిపోతే, అతను పోరాటంలో ఉన్నాడా, పనిలేకుండా ఉన్నాడా లేదా మాట్లాడుతున్నాడా అనే దానితో సంబంధం లేకుండా అతను పారిపోవాలని మీరు కోరుకుంటారు - మీరు ప్రతి రాష్ట్రానికి ఈ పరిస్థితిని జోడించాలి. మరియు మీ డిజైనర్ తర్వాత తక్కువ ఆరోగ్య థ్రెషోల్డ్‌ని 25% నుండి 10%కి మార్చాలనుకుంటే, దీన్ని మళ్లీ చేయాల్సి ఉంటుంది.

ఆదర్శవంతంగా, ఈ పరిస్థితికి ఒక చోట మాత్రమే మార్పులు చేయడానికి మరియు పరివర్తన పరిస్థితులను తాకకుండా ఉండటానికి "ఏ స్థితిలో ఉండాలి" అనే దాని గురించి నిర్ణయాలు రాష్ట్రాల వెలుపల ఉండే వ్యవస్థ అవసరం. ప్రవర్తన చెట్లు ఇక్కడ కనిపిస్తాయి.

వాటిని అమలు చేయడానికి అనేక మార్గాలు ఉన్నాయి, కానీ సారాంశం దాదాపు అందరికీ ఒకే విధంగా ఉంటుంది మరియు నిర్ణయ వృక్షాన్ని పోలి ఉంటుంది: అల్గోరిథం "రూట్" నోడ్‌తో ప్రారంభమవుతుంది మరియు చెట్టు నిర్ణయాలు లేదా చర్యలను సూచించే నోడ్‌లను కలిగి ఉంటుంది. అయితే కొన్ని కీలక వ్యత్యాసాలు ఉన్నాయి:

  • నోడ్‌లు ఇప్పుడు మూడు విలువలలో ఒకదానిని అందిస్తాయి: విజయవంతమైతే (పని పూర్తయితే), విఫలమైంది (ఇది ప్రారంభించలేకపోతే) లేదా రన్ అవుతోంది (అది ఇప్పటికీ అమలులో ఉంటే మరియు తుది ఫలితం లేనట్లయితే).
  • రెండు ప్రత్యామ్నాయాల మధ్య ఎంచుకోవడానికి మరిన్ని నిర్ణయ నోడ్‌లు లేవు. బదులుగా, అవి డెకరేటర్ నోడ్‌లు, వీటిలో ఒక చైల్డ్ నోడ్ ఉంటుంది. వారు విజయవంతమైతే, వారు తమ ఏకైక చైల్డ్ నోడ్‌ను అమలు చేస్తారు.
  • చర్యలను చేసే నోడ్‌లు అమలు చేస్తున్న చర్యలను సూచించడానికి రన్నింగ్ విలువను అందిస్తాయి.

పెద్ద సంఖ్యలో సంక్లిష్ట ప్రవర్తనలను సృష్టించడానికి ఈ చిన్న నోడ్‌లను కలపవచ్చు. మునుపటి ఉదాహరణ నుండి HFSM గార్డును ప్రవర్తన చెట్టుగా ఊహించుకుందాం:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ఈ నిర్మాణంతో ఐడ్లింగ్/పెట్రోలింగ్ స్టేట్స్ నుండి అటాకింగ్ లేదా మరే ఇతర రాష్ట్రాలకు స్పష్టమైన మార్పు ఉండకూడదు. శత్రువు కనిపిస్తే మరియు పాత్ర ఆరోగ్యం తక్కువగా ఉంటే, అది గతంలో ఏ నోడ్‌ని అమలు చేసినప్పటికీ - పెట్రోలింగ్, ఐడ్లింగ్, అటాకింగ్ లేదా మరేదైనా దానితో సంబంధం లేకుండా ఫ్లీయింగ్ నోడ్ వద్ద అమలు ఆగిపోతుంది.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ప్రవర్తన చెట్లు సంక్లిష్టంగా ఉంటాయి-వాటిని కంపోజ్ చేయడానికి అనేక మార్గాలు ఉన్నాయి మరియు డెకరేటర్లు మరియు సమ్మేళనం నోడ్‌ల సరైన కలయికను కనుగొనడం సవాలుగా ఉంటుంది. చెట్టును ఎంత తరచుగా తనిఖీ చేయాలనే దాని గురించి కూడా ప్రశ్నలు ఉన్నాయి - మేము దానిలోని ప్రతి భాగాన్ని చూడాలనుకుంటున్నారా లేదా పరిస్థితుల్లో ఒకటి మారినప్పుడు మాత్రమే వెళ్లాలనుకుంటున్నారా? మేము నోడ్‌లకు సంబంధించిన స్థితిని ఎలా నిల్వ చేస్తాము - మనం 10 సెకన్లపాటు నిష్క్రియంగా ఉన్నప్పుడు మనకు ఎలా తెలుస్తుంది లేదా చివరిసారి ఏ నోడ్‌లు అమలు చేస్తున్నాయో మనకు ఎలా తెలుసు కాబట్టి మనం క్రమాన్ని సరిగ్గా ప్రాసెస్ చేయగలము?

అందుకే అనేక అమలులు ఉన్నాయి. ఉదాహరణకు, కొన్ని సిస్టమ్‌లు డెకరేటర్ నోడ్‌లను ఇన్‌లైన్ డెకరేటర్‌లతో భర్తీ చేశాయి. డెకరేటర్ పరిస్థితులు మారినప్పుడు వారు చెట్టును తిరిగి మూల్యాంకనం చేస్తారు, నోడ్‌లలో చేరడంలో సహాయపడతారు మరియు కాలానుగుణ నవీకరణలను అందిస్తారు.

యుటిలిటీ ఆధారిత వ్యవస్థ

కొన్ని గేమ్‌లు అనేక రకాల మెకానిక్‌లను కలిగి ఉంటాయి. వారు సాధారణ మరియు సాధారణ పరివర్తన నియమాల యొక్క అన్ని ప్రయోజనాలను పొందడం మంచిది, కానీ ప్రవర్తన యొక్క పూర్తి చెట్టు రూపంలో అవసరం లేదు. స్పష్టమైన ఎంపికలు లేదా సాధ్యమయ్యే చర్యల వృక్షాన్ని కలిగి ఉండటానికి బదులుగా, అన్ని చర్యలను పరిశీలించడం మరియు ప్రస్తుతానికి అత్యంత సముచితమైనదాన్ని ఎంచుకోవడం సులభం.

యుటిలిటీ-ఆధారిత సిస్టమ్ దీనికి సహాయం చేస్తుంది. ఇది ఏజెంట్ వివిధ రకాల చర్యలను కలిగి ఉండే వ్యవస్థ మరియు ప్రతిదాని యొక్క సాపేక్ష యుటిలిటీ ఆధారంగా ఏది నిర్వహించాలో ఎంచుకుంటుంది. ఇక్కడ ప్రయోజనం అనేది ఏజెంట్ ఈ చర్యను చేయడం ఎంత ముఖ్యమైనది లేదా కావాల్సినది అనే దాని యొక్క ఏకపక్ష కొలత.

ప్రస్తుత స్థితి మరియు పర్యావరణం ఆధారంగా చర్య యొక్క లెక్కించబడిన ప్రయోజనం, ఏజెంట్ ఏ సమయంలోనైనా తనిఖీ చేసి, అత్యంత సముచితమైన ఇతర స్థితిని ఎంచుకోవచ్చు. ఇది FSM మాదిరిగానే ఉంటుంది, పరివర్తనాలు ప్రస్తుత స్థితితో సహా ప్రతి సంభావ్య స్థితికి అంచనా ద్వారా నిర్ణయించబడతాయి. మేము ముందుకు సాగడానికి అత్యంత ఉపయోగకరమైన చర్యను ఎంచుకున్నామని దయచేసి గమనించండి (లేదా మేము ఇప్పటికే పూర్తి చేసి ఉంటే అలాగే ఉండండి). మరింత వైవిధ్యం కోసం, ఇది చిన్న జాబితా నుండి సమతుల్య కానీ యాదృచ్ఛిక ఎంపిక కావచ్చు.

సిస్టమ్ యుటిలిటీ విలువల యొక్క ఏకపక్ష శ్రేణిని కేటాయిస్తుంది-ఉదాహరణకు, 0 (పూర్తిగా అవాంఛనీయమైనది) నుండి 100 వరకు (పూర్తిగా కోరదగినది). ప్రతి చర్య ఈ విలువ యొక్క గణనను ప్రభావితం చేసే అనేక పారామితులను కలిగి ఉంటుంది. మా సంరక్షకుని ఉదాహరణకి తిరిగి వస్తున్నాము:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

చర్యల మధ్య పరివర్తనాలు అస్పష్టంగా ఉంటాయి-ఏ రాష్ట్రమైనా మరేదైనా అనుసరించవచ్చు. చర్య ప్రాధాన్యతలు అందించబడిన యుటిలిటీ విలువలలో కనుగొనబడ్డాయి. శత్రువు కనిపిస్తే, ఆ శత్రువు బలంగా ఉండి, పాత్ర ఆరోగ్యం తక్కువగా ఉంటే, ఫ్లీయింగ్ మరియు ఫైండింగ్ హెల్ప్ రెండూ అధిక సున్నా-యేతర విలువలను అందిస్తాయి. ఈ సందర్భంలో, FindingHelp ఎల్లప్పుడూ ఎక్కువగా ఉంటుంది. అదేవిధంగా, నాన్-కాంబాట్ యాక్టివిటీస్ ఎప్పుడూ 50 కంటే ఎక్కువ రాబడవు, కాబట్టి అవి ఎల్లప్పుడూ పోరాటాల కంటే తక్కువగా ఉంటాయి. చర్యలను సృష్టించేటప్పుడు మరియు వాటి ప్రయోజనాన్ని లెక్కించేటప్పుడు మీరు దీన్ని పరిగణనలోకి తీసుకోవాలి.

మా ఉదాహరణలో, చర్యలు స్థిర స్థిరమైన విలువ లేదా రెండు స్థిర విలువలలో ఒకదానిని అందిస్తాయి. మరింత వాస్తవిక వ్యవస్థ విలువల యొక్క నిరంతర పరిధి నుండి అంచనాను అందిస్తుంది. ఉదాహరణకు, ఏజెంట్ ఆరోగ్యం తక్కువగా ఉంటే పారిపోయే చర్య అధిక ప్రయోజన విలువలను అందిస్తుంది మరియు శత్రువు చాలా బలంగా ఉంటే దాడి చేసే చర్య తక్కువ ప్రయోజన విలువలను అందిస్తుంది. దీని కారణంగా, శత్రువును ఓడించడానికి తనకు తగినంత ఆరోగ్యం లేదని ఏజెంట్ భావించే ఏ పరిస్థితిలోనైనా దాడి చేయడం కంటే పారిపోయే చర్య ప్రాధాన్యతనిస్తుంది. ఇది ఏవైనా ప్రమాణాల ఆధారంగా చర్యలకు ప్రాధాన్యత ఇవ్వడానికి అనుమతిస్తుంది, ఈ విధానాన్ని ప్రవర్తన చెట్టు లేదా FSM కంటే మరింత సరళంగా మరియు వేరియబుల్‌గా చేస్తుంది.

ప్రతి చర్యకు ప్రోగ్రామ్ గణన కోసం అనేక షరతులు ఉన్నాయి. వాటిని స్క్రిప్టింగ్ భాషలో లేదా గణిత సూత్రాల శ్రేణిలో వ్రాయవచ్చు. పాత్ర యొక్క దినచర్యను అనుకరించే సిమ్స్, గణన యొక్క అదనపు పొరను జోడిస్తుంది - ఏజెంట్ యుటిలిటీ రేటింగ్‌లను ప్రభావితం చేసే "ప్రేరణల" శ్రేణిని అందుకుంటుంది. ఒక పాత్ర ఆకలితో ఉంటే, వారు కాలక్రమేణా మరింత ఆకలితో ఉంటారు మరియు పాత్ర దానిని ప్రదర్శించే వరకు ఈట్‌ఫుడ్ చర్య యొక్క యుటిలిటీ విలువ పెరుగుతుంది, ఆకలి స్థాయిని తగ్గిస్తుంది మరియు ఈట్‌ఫుడ్ విలువను సున్నాకి తిరిగి ఇస్తుంది.

రేటింగ్ సిస్టమ్ ఆధారంగా చర్యలను ఎంచుకునే ఆలోచన చాలా సులభం, కాబట్టి యుటిలిటీ-ఆధారిత వ్యవస్థను వాటికి పూర్తి ప్రత్యామ్నాయంగా కాకుండా AI నిర్ణయం తీసుకునే ప్రక్రియల్లో భాగంగా ఉపయోగించవచ్చు. డెసిషన్ ట్రీ రెండు చైల్డ్ నోడ్‌ల యుటిలిటీ రేటింగ్‌ని అడగవచ్చు మరియు అధికమైనది ఎంచుకోవచ్చు. అదేవిధంగా, ప్రవర్తన చెట్టు ఏ బిడ్డను అమలు చేయాలో నిర్ణయించడానికి చర్యల ప్రయోజనాన్ని అంచనా వేయడానికి మిశ్రమ యుటిలిటీ నోడ్‌ను కలిగి ఉంటుంది.

కదలిక మరియు నావిగేషన్

మునుపటి ఉదాహరణలలో, మేము ఎడమ లేదా కుడికి తరలించిన ప్లాట్‌ఫారమ్‌ను మరియు పెట్రోలింగ్ లేదా దాడి చేసే గార్డును కలిగి ఉన్నాము. అయితే నిర్దిష్ట కాల వ్యవధిలో ఏజెంట్ కదలికను సరిగ్గా ఎలా నిర్వహించాలి? మేము వేగాన్ని ఎలా సెట్ చేస్తాము, అడ్డంకులను ఎలా నివారిస్తాము మరియు సరళ రేఖలో కదలడం కంటే గమ్యాన్ని చేరుకోవడం చాలా కష్టంగా ఉన్నప్పుడు మార్గాన్ని ఎలా ప్లాన్ చేయాలి? దీనిని చూద్దాం.

నిర్వహణ

ప్రారంభ దశలో, ప్రతి ఏజెంట్ స్పీడ్ విలువను కలిగి ఉన్నారని మేము ఊహిస్తాము, ఇది ఎంత వేగంగా కదులుతుంది మరియు ఏ దిశలో ఉంటుంది. దీనిని సెకనుకు మీటర్లు, గంటకు కిలోమీటర్లు, సెకనుకు పిక్సెల్‌లు మొదలైనవాటిలో కొలవవచ్చు. సెన్స్/థింక్/యాక్ట్ లూప్‌ను గుర్తుచేసుకుంటే, థింక్ భాగం వేగాన్ని ఎంచుకుంటుంది మరియు యాక్ట్ భాగం ఆ వేగాన్ని ఏజెంట్‌కు వర్తింపజేస్తుందని మనం ఊహించవచ్చు. సాధారణంగా గేమ్‌లు ఫిజిక్స్ సిస్టమ్‌ని కలిగి ఉంటాయి, అది మీ కోసం ఈ పనిని చేస్తుంది, ప్రతి వస్తువు యొక్క వేగ విలువను నేర్చుకుని దాన్ని సర్దుబాటు చేస్తుంది. అందువల్ల, మీరు AIని ఒక పనితో వదిలివేయవచ్చు - ఏజెంట్ ఏ వేగంతో ఉండాలో నిర్ణయించడానికి. ఏజెంట్ ఎక్కడ ఉండాలో మీకు తెలిస్తే, మీరు దానిని నిర్ణీత వేగంతో సరైన దిశలో తరలించాలి. చాలా అల్పమైన సమీకరణం:

desired_travel = destination_position – agent_position

2D ప్రపంచాన్ని ఊహించుకోండి. ఏజెంట్ పాయింట్ (-2,-2) వద్ద ఉంది, గమ్యం ఈశాన్యంలో ఎక్కడో పాయింట్ వద్ద ఉంది (30, 20), మరియు ఏజెంట్ అక్కడికి చేరుకోవడానికి అవసరమైన మార్గం (32, 22). ఈ స్థానాలను మీటర్లలో కొలుస్తామని అనుకుందాం - మేము ఏజెంట్ యొక్క వేగాన్ని సెకనుకు 5 మీటర్లుగా తీసుకుంటే, మన స్థానభ్రంశం వెక్టర్‌ను స్కేల్ చేస్తాము మరియు సుమారుగా (4.12, 2.83) వేగాన్ని పొందుతాము. ఈ పారామితులతో, ఏజెంట్ దాదాపు 8 సెకన్లలో దాని గమ్యస్థానానికి చేరుకుంటారు.

మీరు ఎప్పుడైనా విలువలను తిరిగి లెక్కించవచ్చు. ఏజెంట్ లక్ష్యానికి సగం దూరంలో ఉన్నట్లయితే, కదలిక సగం పొడవు ఉంటుంది, కానీ ఏజెంట్ గరిష్ట వేగం 5 మీ/సె (మేము దీన్ని పైన నిర్ణయించాము) కాబట్టి వేగం అదే విధంగా ఉంటుంది. ఇది కదిలే లక్ష్యాల కోసం కూడా పని చేస్తుంది, ఏజెంట్ కదులుతున్నప్పుడు చిన్న మార్పులు చేయడానికి అనుమతిస్తుంది.

కానీ మాకు మరింత వైవిధ్యం కావాలి - ఉదాహరణకు, నిలబడి నుండి పరుగు వైపు కదులుతున్న పాత్రను అనుకరించడానికి నెమ్మదిగా వేగాన్ని పెంచడం. ఆపే ముందు చివరలో కూడా ఇలాగే చేయవచ్చు. ఈ లక్షణాలను స్టీరింగ్ బిహేవియర్‌లుగా పిలుస్తారు, వీటిలో ప్రతి ఒక్కటి నిర్దిష్ట పేర్లను కలిగి ఉంటాయి: సీక్, ఫ్లీ, అరైవల్ మొదలైనవి. ఏజెంట్ యొక్క స్థానం మరియు ప్రస్తుత వేగాన్ని గమ్యస్థానంతో పోల్చడం ఆధారంగా ఏజెంట్ వేగంపై త్వరణం శక్తులను వర్తింపజేయవచ్చు. లక్ష్యాన్ని చేరుకోవడానికి వివిధ పద్ధతులను ఉపయోగించడానికి.

ప్రతి ప్రవర్తనకు కొద్దిగా భిన్నమైన ప్రయోజనం ఉంటుంది. సీక్ మరియు అరైవల్ అనేది ఏజెంట్‌ను గమ్యస్థానానికి తరలించే మార్గాలు. అడ్డంకిని నివారించడం మరియు వేరు చేయడం లక్ష్యానికి వెళ్లే మార్గంలో అడ్డంకులను నివారించడానికి ఏజెంట్ యొక్క కదలికను సర్దుబాటు చేస్తుంది. సమలేఖనం మరియు సమన్వయం ఏజెంట్లను కలిసి కదులుతూ ఉంటాయి. అన్ని కారకాలను పరిగణనలోకి తీసుకుని ఒకే పాత్ వెక్టర్‌ను ఉత్పత్తి చేయడానికి ఎన్ని విభిన్న స్టీరింగ్ ప్రవర్తనలనైనా సంగ్రహించవచ్చు. గోడలు మరియు ఇతర ఏజెంట్ల నుండి దూరంగా ఉండటానికి రాక, విభజన మరియు అడ్డంకి నివారణ ప్రవర్తనలను ఉపయోగించే ఏజెంట్. ఈ విధానం అనవసరమైన వివరాలు లేకుండా బహిరంగ ప్రదేశాలలో బాగా పనిచేస్తుంది.

మరింత క్లిష్ట పరిస్థితుల్లో, విభిన్న ప్రవర్తనల జోడింపు అధ్వాన్నంగా పని చేస్తుంది - ఉదాహరణకు, ఏజెంట్ రాక మరియు అడ్డంకిని నివారించడం మధ్య వైరుధ్యం కారణంగా గోడలో ఇరుక్కోవచ్చు. అందువల్ల, మీరు అన్ని విలువలను జోడించడం కంటే సంక్లిష్టమైన ఎంపికలను పరిగణించాలి. మార్గం ఇది: ప్రతి ప్రవర్తన యొక్క ఫలితాలను జోడించే బదులు, మీరు వేర్వేరు దిశల్లో కదలికను పరిగణించవచ్చు మరియు ఉత్తమ ఎంపికను ఎంచుకోవచ్చు.

అయినప్పటికీ, డెడ్ ఎండ్‌లు మరియు ఏ మార్గంలో వెళ్లాలనే ఎంపికలతో కూడిన సంక్లిష్ట వాతావరణంలో, మనకు మరింత అధునాతనమైనది అవసరం.

ఒక మార్గం కోసం శోధించండి

స్టీరింగ్ ప్రవర్తనలు బహిరంగ ప్రదేశంలో (ఫుట్‌బాల్ మైదానం లేదా అరేనా) సాధారణ కదలికకు గొప్పగా ఉంటాయి, ఇక్కడ A నుండి Bకి వెళ్లడం అనేది అడ్డంకుల చుట్టూ చిన్న మలుపులతో సరళమైన మార్గం. సంక్లిష్ట మార్గాల కోసం, మనకు పాత్‌ఫైండింగ్ అవసరం, ఇది ప్రపంచాన్ని అన్వేషించడానికి మరియు దాని గుండా మార్గాన్ని నిర్ణయించడానికి ఒక మార్గం.

ఏజెంట్ పక్కన ఉన్న ప్రతి స్క్వేర్‌కు గ్రిడ్‌ను వర్తింపజేయడం మరియు వాటిలో ఏది తరలించడానికి అనుమతించబడుతుందో విశ్లేషించడం చాలా సరళమైనది. వాటిలో ఒకటి గమ్యస్థానం అయితే, మీరు ప్రారంభానికి చేరుకునే వరకు ప్రతి స్క్వేర్ నుండి మునుపటి మార్గాన్ని అనుసరించండి. ఇది మార్గం. లేకపోతే, మీరు మీ గమ్యాన్ని కనుగొనే వరకు లేదా మీ స్క్వేర్‌లు అయిపోయే వరకు సమీపంలోని ఇతర స్క్వేర్‌లతో ప్రక్రియను పునరావృతం చేయండి (అంటే సాధ్యమయ్యే మార్గం లేదు). దీనినే అధికారికంగా బ్రెడ్త్-ఫస్ట్ సెర్చ్ లేదా BFS (వెడల్పు-మొదటి శోధన అల్గోరిథం) అని పిలుస్తారు. అడుగడుగునా అతను అన్ని దిశలలో చూస్తాడు (అందుకే వెడల్పు, "వెడల్పు"). శోధన స్థలం అది కోరుకున్న ప్రదేశానికి చేరుకునే వరకు కదిలే వేవ్‌ఫ్రంట్ లాగా ఉంటుంది - ముగింపు బిందువును చేర్చే వరకు శోధన స్థలం ప్రతి దశలో విస్తరిస్తుంది, ఆ తర్వాత దానిని మొదటి నుండి గుర్తించవచ్చు.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ఫలితంగా, మీరు కోరుకున్న మార్గం సంకలనం చేయబడిన స్క్వేర్‌ల జాబితాను అందుకుంటారు. ఇది మార్గం (అందుకే, పాత్‌ఫైండింగ్) - గమ్యాన్ని అనుసరించేటప్పుడు ఏజెంట్ సందర్శించే స్థలాల జాబితా.

ప్రపంచంలోని ప్రతి చతురస్రం యొక్క స్థానం మనకు తెలిసినందున, మేము మార్గంలో కదలడానికి స్టీరింగ్ ప్రవర్తనలను ఉపయోగించవచ్చు - నోడ్ 1 నుండి నోడ్ 2 వరకు, ఆపై నోడ్ 2 నుండి నోడ్ 3 వరకు మరియు మొదలైనవి. సరళమైన ఎంపిక తదుపరి చతురస్రం మధ్యలోకి వెళ్లడం, అయితే ప్రస్తుత చతురస్రం మరియు తదుపరి స్క్వేర్ మధ్య అంచు మధ్యలో ఆపడం మరింత మెరుగైన ఎంపిక. దీని కారణంగా, ఏజెంట్ పదునైన మలుపులలో మూలలను కత్తిరించగలడు.

BFS అల్గోరిథం కూడా నష్టాలను కలిగి ఉంది - ఇది "సరైన" దిశలో వలె "తప్పు" దిశలో అనేక చతురస్రాలను అన్వేషిస్తుంది. ఇక్కడే A* (A star) అనే మరింత సంక్లిష్టమైన అల్గోరిథం అమలులోకి వస్తుంది. ఇది అదే విధంగా పనిచేస్తుంది, కానీ పొరుగు చతురస్రాలను గుడ్డిగా పరిశీలించే బదులు (అప్పుడు పొరుగువారి పొరుగువారు, ఆపై పొరుగువారి పొరుగువారి పొరుగువారు మరియు మొదలైనవి), ఇది నోడ్‌లను జాబితాగా సేకరించి వాటిని క్రమబద్ధీకరిస్తుంది, తద్వారా పరిశీలించిన తదుపరి నోడ్ ఎల్లప్పుడూ ఉంటుంది చిన్న మార్గానికి దారితీసే ఒకటి. నోడ్‌లు రెండు అంశాలను పరిగణనలోకి తీసుకునే హ్యూరిస్టిక్ ఆధారంగా క్రమబద్ధీకరించబడతాయి-కావలసిన స్క్వేర్‌కి ఊహాత్మక మార్గం యొక్క “ఖర్చు” (ఏదైనా ప్రయాణ ఖర్చులతో సహా) మరియు ఆ చతురస్రం గమ్యం నుండి ఎంత దూరంలో ఉందో అంచనా వేయబడుతుంది (శోధనలో పక్షపాతం సరైన దిశ).

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ఏజెంట్ ఒక సమయంలో ఒక చతురస్రాన్ని అన్వేషిస్తారని ఈ ఉదాహరణ చూపిస్తుంది, ప్రతిసారీ అత్యంత ఆశాజనకంగా ప్రక్కనే ఉన్నదాన్ని ఎంచుకుంటుంది. ఫలిత మార్గం BFS వలె ఉంటుంది, కానీ ప్రక్రియలో తక్కువ చతురస్రాలు పరిగణించబడ్డాయి - ఇది గేమ్ పనితీరుపై పెద్ద ప్రభావాన్ని చూపుతుంది.

గ్రిడ్ లేకుండా ఉద్యమం

కానీ చాలా గేమ్‌లు గ్రిడ్‌లో వేయబడవు మరియు వాస్తవికతను త్యాగం చేయకుండా చేయడం తరచుగా అసాధ్యం. రాజీలు కావాలి. చతురస్రాలు ఏ పరిమాణంలో ఉండాలి? చాలా పెద్దది మరియు అవి చిన్న కారిడార్లు లేదా మలుపులను సరిగ్గా సూచించలేవు, చాలా చిన్నవి మరియు వెతకడానికి చాలా చతురస్రాలు ఉంటాయి, చివరికి చాలా సమయం పడుతుంది.

అర్థం చేసుకోవలసిన మొదటి విషయం ఏమిటంటే, మెష్ మనకు కనెక్ట్ చేయబడిన నోడ్‌ల గ్రాఫ్‌ను ఇస్తుంది. A* మరియు BFS అల్గారిథమ్‌లు వాస్తవానికి గ్రాఫ్‌లపై పని చేస్తాయి మరియు మా మెష్ గురించి అస్సలు పట్టించుకోవు. మేము గేమ్ ప్రపంచంలో ఎక్కడైనా నోడ్‌లను ఉంచవచ్చు: కనెక్ట్ చేయబడిన ఏవైనా రెండు నోడ్‌ల మధ్య, అలాగే ప్రారంభ మరియు ముగింపు పాయింట్ల మధ్య మరియు కనీసం ఒక నోడ్‌ల మధ్య కనెక్షన్ ఉన్నంత వరకు, అల్గోరిథం మునుపటిలాగే పని చేస్తుంది. ఇది తరచుగా వే పాయింట్ సిస్టమ్ అని పిలువబడుతుంది, ఎందుకంటే ప్రతి నోడ్ ప్రపంచంలోని అనేక ఊహాజనిత మార్గాలలో భాగమైన ముఖ్యమైన స్థానాన్ని సూచిస్తుంది.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం
ఉదాహరణ 1: ప్రతి చతురస్రంలో ఒక ముడి. శోధన ఏజెంట్ ఉన్న నోడ్ నుండి ప్రారంభమవుతుంది మరియు కావలసిన స్క్వేర్ యొక్క నోడ్ వద్ద ముగుస్తుంది.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం
ఉదాహరణ 2: నోడ్‌ల యొక్క చిన్న సెట్ (వే పాయింట్‌లు). శోధన ఏజెంట్ స్క్వేర్ వద్ద ప్రారంభమవుతుంది, అవసరమైన నోడ్‌ల సంఖ్య ద్వారా వెళ్లి, ఆపై గమ్యస్థానానికి కొనసాగుతుంది.

ఇది పూర్తిగా సౌకర్యవంతమైన మరియు శక్తివంతమైన వ్యవస్థ. అయితే వే పాయింట్‌ను ఎక్కడ మరియు ఎలా ఉంచాలో నిర్ణయించడంలో కొంత జాగ్రత్త అవసరం, లేకుంటే ఏజెంట్లు కేవలం సమీప బిందువును చూడలేరు మరియు మార్గాన్ని ప్రారంభించలేరు. ప్రపంచంలోని జ్యామితి ఆధారంగా మనం స్వయంచాలకంగా వే పాయింట్‌లను ఉంచగలిగితే అది సులభం అవుతుంది.

ఇక్కడే నావిగేషన్ మెష్ లేదా నవమేష్ (నావిగేషన్ మెష్) కనిపిస్తుంది. ఇది సాధారణంగా త్రిభుజాల 2D మెష్, ఇది ప్రపంచంలోని జ్యామితిపై కప్పబడి ఉంటుంది - ఏజెంట్ నడవడానికి అనుమతించబడిన చోట. మెష్‌లోని ప్రతి త్రిభుజం గ్రాఫ్‌లో నోడ్‌గా మారుతుంది మరియు గ్రాఫ్‌లో ప్రక్కనే ఉన్న మూడు త్రిభుజాలు వరకు ఉంటాయి.

ఈ చిత్రం యూనిటీ ఇంజిన్ నుండి ఒక ఉదాహరణ - ఇది ప్రపంచంలోని జ్యామితిని విశ్లేషించింది మరియు నవమేష్‌ను (లేత నీలం రంగులో స్క్రీన్‌షాట్‌లో) సృష్టించింది. నవమేష్‌లోని ప్రతి బహుభుజి ఒక ఏజెంట్ నిలబడగల లేదా ఒక బహుభుజి నుండి మరొక బహుభుజికి మారగల ప్రాంతం. ఈ ఉదాహరణలో, బహుభుజాలు అవి ఉన్న అంతస్తుల కంటే చిన్నవిగా ఉంటాయి - ఇది ఏజెంట్ యొక్క పరిమాణాన్ని పరిగణనలోకి తీసుకోవడానికి చేయబడుతుంది, ఇది దాని నామమాత్రపు స్థానానికి మించి ఉంటుంది.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

A* అల్గారిథమ్‌ని ఉపయోగించి మనం ఈ మెష్ ద్వారా మార్గం కోసం శోధించవచ్చు. ఇది ప్రపంచంలోని దాదాపు ఖచ్చితమైన మార్గాన్ని ఇస్తుంది, ఇది అన్ని జ్యామితిని పరిగణనలోకి తీసుకుంటుంది మరియు అనవసరమైన నోడ్లు మరియు వే పాయింట్ల సృష్టి అవసరం లేదు.

పాత్‌ఫైండింగ్ అనేది చాలా విస్తృతమైన అంశం, దీనికి వ్యాసంలోని ఒక విభాగం సరిపోదు. మీరు దీన్ని మరింత వివరంగా అధ్యయనం చేయాలనుకుంటే, ఇది సహాయపడుతుంది అమిత్ పటేల్ వెబ్‌సైట్.

ప్రణాళిక

మేము పాత్‌ఫైండింగ్‌తో నేర్చుకున్నాము, కొన్నిసార్లు కేవలం ఒక దిశను ఎంచుకుని తరలించడం మాత్రమే సరిపోదు - మనం కోరుకున్న గమ్యాన్ని చేరుకోవడానికి ఒక మార్గాన్ని ఎంచుకుని కొన్ని మలుపులు తిరగాలి. మేము ఈ ఆలోచనను సాధారణీకరించవచ్చు: లక్ష్యాన్ని సాధించడం అనేది తదుపరి దశ మాత్రమే కాదు, అయితే మొత్తం క్రమం, కొన్నిసార్లు మీరు మొదటిది ఏమిటో తెలుసుకోవడానికి అనేక దశలను ముందుకు చూడవలసి ఉంటుంది. దీనినే ప్లానింగ్ అంటారు. పాత్‌ఫైండింగ్ అనేది ప్రణాళికకు సంబంధించిన అనేక పొడిగింపులలో ఒకటిగా భావించవచ్చు. మా సెన్స్/థింక్/యాక్ట్ సైకిల్ పరంగా, ఇక్కడే థింక్ పార్ట్ భవిష్యత్తు కోసం బహుళ యాక్ట్ భాగాలను ప్లాన్ చేస్తుంది.

బోర్డ్ గేమ్ మ్యాజిక్: ది గాదరింగ్ యొక్క ఉదాహరణను చూద్దాం. మేము మా చేతుల్లో క్రింది కార్డ్‌ల సెట్‌తో మొదట వెళ్తాము:

  • చిత్తడి నేల - 1 నల్ల మనా (ల్యాండ్ కార్డ్) ఇస్తుంది.
  • ఫారెస్ట్ - 1 గ్రీన్ మనా (ల్యాండ్ కార్డ్) ఇస్తుంది.
  • ఫ్యుజిటివ్ విజార్డ్ - సమన్ చేయడానికి 1 బ్లూ మనా అవసరం.
  • ఎల్విష్ మిస్టిక్ - పిలవడానికి 1 గ్రీన్ మనా అవసరం.

మేము సులభతరం చేయడానికి మిగిలిన మూడు కార్డ్‌లను విస్మరిస్తాము. నిబంధనల ప్రకారం, ఒక ఆటగాడు ప్రతి మలుపుకు 1 ల్యాండ్ కార్డ్‌ని ప్లే చేయడానికి అనుమతించబడతాడు, అతను ఈ కార్డ్‌లో మనాను తీయడానికి "ట్యాప్" చేయవచ్చు, ఆపై మనా మొత్తాన్ని బట్టి మంత్రాలను (ఒక జీవిని పిలవడంతో సహా) వేయవచ్చు. ఈ పరిస్థితిలో, మానవ ఆటగాడికి ఫారెస్ట్ ఆడటం, 1 గ్రీన్ మనాను నొక్కడం, ఆపై ఎల్విష్ మిస్టిక్‌ని పిలవడం తెలుసు. అయితే గేమ్ AI దీన్ని ఎలా గుర్తించగలదు?

సులభమైన ప్రణాళిక

పనికిమాలిన విధానం ఏమిటంటే, తగినవి మిగిలిపోయే వరకు ప్రతి చర్యను క్రమంగా ప్రయత్నించడం. కార్డ్‌లను చూడటం ద్వారా, స్వాంప్ ఏమి ప్లే చేయగలదో AI చూస్తుంది. మరియు అతను ఆడతాడు. ఈ మలుపులో ఏవైనా ఇతర చర్యలు మిగిలి ఉన్నాయా? ఇది ఎల్విష్ మిస్టిక్ లేదా ఫ్యుజిటివ్ విజార్డ్‌ని పిలవదు, ఎందుకంటే వారిని పిలవడానికి వరుసగా ఆకుపచ్చ మరియు నీలం మనా అవసరం, అయితే స్వాంప్ బ్లాక్ మనాను మాత్రమే అందిస్తుంది. మరియు అతను ఇకపై ఫారెస్ట్ ఆడలేడు, ఎందుకంటే అతను ఇప్పటికే స్వాంప్ ఆడాడు. అందువలన, గేమ్ AI నియమాలను అనుసరించింది, కానీ అది పేలవంగా చేసింది. మెరుగుపరచవచ్చు.

ప్లానింగ్ గేమ్‌ను కావలసిన స్థితికి తీసుకువచ్చే చర్యల జాబితాను కనుగొనగలదు. మార్గంలోని ప్రతి స్క్వేర్‌కు పొరుగువారు (పాత్‌ఫైండింగ్‌లో) ఉన్నట్లే, ప్లాన్‌లోని ప్రతి చర్యకు పొరుగువారు లేదా వారసులు ఉంటారు. మనం కోరుకున్న స్థితికి చేరుకునే వరకు ఈ చర్యలు మరియు తదుపరి చర్యల కోసం వెతకవచ్చు.

మా ఉదాహరణలో, కావలసిన ఫలితం "వీలైతే ఒక జీవిని పిలవండి." మలుపు ప్రారంభంలో, ఆట నియమాల ద్వారా అనుమతించబడిన రెండు చర్యలను మాత్రమే మేము చూస్తాము:

1. స్వాంప్ ఆడండి (ఫలితం: గేమ్‌లో చిత్తడి)
2. ప్లే ఫారెస్ట్ (ఫలితం: ఆటలో ఫారెస్ట్)

తీసుకున్న ప్రతి చర్య తదుపరి చర్యలకు దారి తీస్తుంది మరియు ఆట నియమాలను బట్టి మళ్లీ ఇతరులను మూసివేయవచ్చు. మేము స్వాంప్‌ని ఆడినట్లు ఊహించుకోండి - ఇది తదుపరి దశగా చిత్తడిని తీసివేస్తుంది (మేము ఇప్పటికే దీన్ని ప్లే చేసాము), మరియు ఇది ఫారెస్ట్‌ను కూడా తొలగిస్తుంది (ఎందుకంటే నియమాల ప్రకారం మీరు ప్రతి మలుపుకు ఒక ల్యాండ్ కార్డ్ ప్లే చేయవచ్చు). దీని తర్వాత, ఇతర ఎంపికలు లేనందున AI తదుపరి దశగా 1 బ్లాక్ మనాను పొందడాన్ని జోడిస్తుంది. అతను ముందుకు వెళ్లి ట్యాప్ ది స్వాంప్‌ని ఎంచుకుంటే, అతను 1 యూనిట్ బ్లాక్ మనాను అందుకుంటాడు మరియు దానితో ఏమీ చేయలేడు.

1. స్వాంప్ ఆడండి (ఫలితం: గేమ్‌లో చిత్తడి)
1.1 “ట్యాప్” స్వాంప్ (ఫలితం: స్వాంప్ “ట్యాప్డ్”, బ్లాక్ మనా యొక్క +1 యూనిట్)
చర్యలు ఏవీ అందుబాటులో లేవు - END
2. ప్లే ఫారెస్ట్ (ఫలితం: ఆటలో ఫారెస్ట్)

చర్యల జాబితా చిన్నది, మేము చివరి దశకు చేరుకున్నాము. మేము తదుపరి దశ కోసం విధానాన్ని పునరావృతం చేస్తాము. మేము ఫారెస్ట్ ఆడతాము, “1 గ్రీన్ మనాను పొందండి” అనే చర్యను తెరవండి, ఇది మూడవ చర్యను తెరుస్తుంది - ఎల్విష్ మిస్టిక్‌ని పిలవండి.

1. స్వాంప్ ఆడండి (ఫలితం: గేమ్‌లో చిత్తడి)
1.1 “ట్యాప్” స్వాంప్ (ఫలితం: స్వాంప్ “ట్యాప్డ్”, బ్లాక్ మనా యొక్క +1 యూనిట్)
చర్యలు ఏవీ అందుబాటులో లేవు - END
2. ప్లే ఫారెస్ట్ (ఫలితం: ఆటలో ఫారెస్ట్)
2.1 “ట్యాప్” ఫారెస్ట్ (ఫలితం: ఫారెస్ట్ “ట్యాప్ చేయబడింది”, గ్రీన్ మనా యొక్క +1 యూనిట్)
2.1.1 ఎల్విష్ మిస్టిక్‌ని పిలవండి (ఫలితం: ఎల్విష్ మిస్టిక్ ఇన్ ప్లే, -1 గ్రీన్ మన)
చర్యలు ఏవీ అందుబాటులో లేవు - END

చివరగా, మేము సాధ్యమయ్యే అన్ని చర్యలను అన్వేషించాము మరియు జీవిని పిలిపించే ప్రణాళికను కనుగొన్నాము.

ఇది చాలా సరళమైన ఉదాహరణ. కొన్ని ప్రమాణాలకు అనుగుణంగా ఏదైనా ప్లాన్ కాకుండా, సాధ్యమైనంత ఉత్తమమైన ప్లాన్‌ను ఎంచుకోవడం మంచిది. సంభావ్య ప్రణాళికలను వాటి అమలు యొక్క ఫలితం లేదా మొత్తం ప్రయోజనం ఆధారంగా అంచనా వేయడం సాధారణంగా సాధ్యమవుతుంది. ల్యాండ్ కార్డ్ ఆడినందుకు 1 పాయింట్ మరియు జీవిని పిలిపించినందుకు 3 పాయింట్‌లను మీరే స్కోర్ చేసుకోవచ్చు. స్వాంప్ ఆడటం అనేది 1 పాయింట్ ప్లాన్. మరియు ఫారెస్ట్ → ట్యాప్ ది ఫారెస్ట్ → సమన్ ఎల్విష్ మిస్టిక్ ప్లే చేస్తే వెంటనే 4 పాయింట్లు వస్తాయి.

మ్యాజిక్: ది గాదరింగ్‌లో ప్లానింగ్ ఈ విధంగా పనిచేస్తుంది, కానీ అదే లాజిక్ ఇతర పరిస్థితులలో కూడా వర్తిస్తుంది. ఉదాహరణకు, చదరంగంలో బిషప్‌కు చోటు కల్పించేందుకు బంటును తరలించడం. లేదా ఇలా XCOMలో సురక్షితంగా షూట్ చేయడానికి గోడ వెనుక కవర్ తీసుకోండి. సాధారణంగా, మీకు ఆలోచన వస్తుంది.

మెరుగైన ప్రణాళిక

కొన్నిసార్లు సాధ్యమయ్యే ప్రతి ఎంపికను పరిగణించడానికి చాలా సంభావ్య చర్యలు ఉన్నాయి. మ్యాజిక్‌తో ఉదాహరణకి తిరిగి రావడం: ది గాదరింగ్: గేమ్‌లో మరియు మీ చేతిలో అనేక భూమి మరియు జీవి కార్డులు ఉన్నాయని చెప్పండి - కదలికల కలయికల సంఖ్య డజన్ల కొద్దీ ఉండవచ్చు. సమస్యకు అనేక పరిష్కారాలు ఉన్నాయి.

మొదటి పద్ధతి వెనుకకు చైనింగ్. అన్ని కాంబినేషన్‌లను ప్రయత్నించే బదులు, తుది ఫలితంతో ప్రారంభించి, ప్రత్యక్ష మార్గాన్ని కనుగొనడానికి ప్రయత్నించడం మంచిది. చెట్టు యొక్క మూలం నుండి ఒక నిర్దిష్ట ఆకుకు వెళ్ళే బదులు, మనం వ్యతిరేక దిశలో - ఆకు నుండి వేరుకు వెళ్తాము. ఈ పద్ధతి సులభంగా మరియు వేగంగా ఉంటుంది.

శత్రువుకు 1 ఆరోగ్యం ఉంటే, మీరు "డీల్ 1 లేదా అంతకంటే ఎక్కువ నష్టం" ప్లాన్‌ను కనుగొనవచ్చు. దీన్ని సాధించడానికి, అనేక షరతులను నెరవేర్చాలి:

1. స్పెల్ వల్ల నష్టం జరగవచ్చు - అది చేతిలో ఉండాలి.
2. మంత్రం వేయడానికి, మీకు మన అవసరం.
3. మనా పొందడానికి, మీరు ల్యాండ్ కార్డ్ ప్లే చేయాలి.
4. ల్యాండ్ కార్డ్ ప్లే చేయడానికి, అది మీ చేతిలో ఉండాలి.

మరొక మార్గం ఉత్తమ-మొదటి శోధన. అన్ని మార్గాలను ప్రయత్నించే బదులు, మేము చాలా సరిఅయినదాన్ని ఎంచుకుంటాము. చాలా తరచుగా, ఈ పద్ధతి అనవసరమైన శోధన ఖర్చులు లేకుండా సరైన ప్రణాళికను ఇస్తుంది. A* అనేది ఉత్తమమైన మొదటి శోధన యొక్క ఒక రూపం - ప్రారంభం నుండి అత్యంత ఆశాజనకమైన మార్గాలను పరిశీలించడం ద్వారా, ఇతర ఎంపికలను తనిఖీ చేయకుండానే ఇది ఇప్పటికే ఉత్తమమైన మార్గాన్ని కనుగొనవచ్చు.

మోంటే కార్లో ట్రీ సెర్చ్ అనేది ఆసక్తికరమైన మరియు పెరుగుతున్న జనాదరణ పొందిన ఉత్తమ-మొదటి శోధన ఎంపిక. ప్రతి తదుపరి చర్యను ఎంచుకునేటప్పుడు ఏ ప్రణాళికలు ఇతరులకన్నా మెరుగ్గా ఉంటాయో ఊహించే బదులు, అల్గారిథం ముగింపుకు చేరుకునే వరకు (ప్రణాళిక విజయం లేదా ఓటమికి దారితీసినప్పుడు) ప్రతి దశలో యాదృచ్ఛిక వారసులను ఎంపిక చేస్తుంది. అంతిమ ఫలితం మునుపటి ఎంపికల బరువును పెంచడానికి లేదా తగ్గించడానికి ఉపయోగించబడుతుంది. ఈ ప్రక్రియను వరుసగా అనేకసార్లు పునరావృతం చేయడం ద్వారా, పరిస్థితి మారినప్పటికీ (శత్రువు ఆటగాడితో జోక్యం చేసుకునేలా చర్య తీసుకుంటే) ఉత్తమ తదుపరి కదలిక ఏమిటో అల్గోరిథం మంచి అంచనాను ఇస్తుంది.

గోల్-ఓరియెంటెడ్ యాక్షన్ ప్లానింగ్ లేదా GOAP (గోల్-ఓరియెంటెడ్ యాక్షన్ ప్లానింగ్) లేకుండా గేమ్‌లలో ప్లానింగ్ గురించి ఏ కథనం పూర్తి కాదు. ఇది విస్తృతంగా ఉపయోగించబడే మరియు చర్చించబడిన పద్ధతి, కానీ కొన్ని ప్రత్యేక వివరాలు కాకుండా, ఇది తప్పనిసరిగా మనం ఇంతకు ముందు మాట్లాడిన వెనుకకు చైనింగ్ పద్ధతి. "ప్లేయర్‌ను నాశనం చేయడం" లక్ష్యం అయితే మరియు ప్లేయర్ కవర్ వెనుక ఉంటే, ప్లాన్ ఇలా ఉండవచ్చు: గ్రెనేడ్‌తో నాశనం చేయండి → దాన్ని పొందండి → విసిరేయండి.

సాధారణంగా అనేక లక్ష్యాలు ఉంటాయి, ఒక్కొక్కటి దాని స్వంత ప్రాధాన్యతతో ఉంటాయి. అత్యధిక ప్రాధాన్యత లక్ష్యం పూర్తి చేయలేకపోతే (ఆటగాడు కనిపించనందున చర్యల కలయిక "ఆటగాడిని చంపు" ప్రణాళికను రూపొందించదు), AI తక్కువ ప్రాధాన్యత గల లక్ష్యాలకు తిరిగి వస్తుంది.

శిక్షణ మరియు అనుసరణ

గేమ్ AI సాధారణంగా మెషిన్ లెర్నింగ్‌ని ఉపయోగించదని మేము ఇప్పటికే చెప్పాము ఎందుకంటే ఇది నిజ సమయంలో ఏజెంట్‌లను నిర్వహించడానికి తగినది కాదు. కానీ మీరు ఈ ప్రాంతం నుండి ఏదైనా రుణం తీసుకోలేరని దీని అర్థం కాదు. మనకు షూటర్‌లో ప్రత్యర్థి కావాలి, దాని నుండి మనం ఏదైనా నేర్చుకోవచ్చు. ఉదాహరణకు, మ్యాప్‌లోని ఉత్తమ స్థానాల గురించి తెలుసుకోండి. లేదా ఫైటింగ్ గేమ్‌లో ప్రత్యర్థి ఆటగాడు తరచుగా ఉపయోగించే కాంబో కదలికలను నిరోధించి, ఇతరులను ఉపయోగించుకునేలా అతనిని ప్రేరేపిస్తాడు. కాబట్టి అలాంటి పరిస్థితుల్లో మెషిన్ లెర్నింగ్ చాలా ఉపయోగకరంగా ఉంటుంది.

గణాంకాలు మరియు సంభావ్యతలు

మేము సంక్లిష్ట ఉదాహరణలలోకి ప్రవేశించే ముందు, కొన్ని సాధారణ కొలతలు తీసుకోవడం మరియు నిర్ణయాలు తీసుకోవడానికి వాటిని ఉపయోగించడం ద్వారా మనం ఎంత దూరం వెళ్లగలమో చూద్దాం. ఉదాహరణకు, నిజ-సమయ వ్యూహం - ఆట యొక్క మొదటి కొన్ని నిమిషాల్లో ఒక ఆటగాడు దాడిని ప్రారంభించవచ్చో లేదో మరియు దీనికి వ్యతిరేకంగా ఎలాంటి రక్షణను సిద్ధం చేయాలో మనం ఎలా నిర్ణయిస్తాము? భవిష్యత్ ప్రతిచర్యలు ఎలా ఉండవచ్చో అర్థం చేసుకోవడానికి మేము ఆటగాడి గత అనుభవాలను అధ్యయనం చేయవచ్చు. ప్రారంభించడానికి, మా వద్ద అటువంటి ముడి డేటా లేదు, కానీ మేము దానిని సేకరించగలము - AI మానవునికి వ్యతిరేకంగా ఆడిన ప్రతిసారీ, అది మొదటి దాడి సమయాన్ని రికార్డ్ చేయగలదు. కొన్ని సెషన్‌ల తర్వాత, భవిష్యత్తులో ఆటగాడు దాడి చేయడానికి పట్టే సగటు సమయాన్ని మేము పొందుతాము.

సగటు విలువలతో సమస్య కూడా ఉంది: ఒక ఆటగాడు 20 సార్లు పరుగెత్తి, నెమ్మదిగా 20 సార్లు ఆడినట్లయితే, అవసరమైన విలువలు మధ్యలో ఎక్కడో ఉంటాయి మరియు ఇది మాకు ఉపయోగకరమైనది ఏమీ ఇవ్వదు. ఇన్‌పుట్ డేటాను పరిమితం చేయడం ఒక పరిష్కారం - చివరి 20 ముక్కలను పరిగణనలోకి తీసుకోవచ్చు.

భవిష్యత్తులో ఆటగాడి గత ప్రాధాన్యతలు అలాగే ఉంటాయని భావించడం ద్వారా నిర్దిష్ట చర్యల సంభావ్యతను అంచనా వేసేటప్పుడు ఇదే విధమైన విధానం ఉపయోగించబడుతుంది. ఒక ఆటగాడు ఫైర్‌బాల్‌తో ఐదుసార్లు, రెండుసార్లు మెరుపుతో, ఒకసారి కొట్లాటతో మనపై దాడి చేస్తే, అతను ఫైర్‌బాల్‌ను ఇష్టపడతాడని స్పష్టంగా తెలుస్తుంది. వివిధ ఆయుధాలను ఉపయోగించే సంభావ్యతను ఎక్స్‌ట్రాపోలేట్ చేసి చూద్దాం: ఫైర్‌బాల్=62,5%, మెరుపు=25% మరియు కొట్లాట=12,5%. మా గేమ్ AI అగ్ని నుండి తనను తాను రక్షించుకోవడానికి సిద్ధం కావాలి.

మరొక ఆసక్తికరమైన పద్ధతి ఏమిటంటే, పెద్ద మొత్తంలో ఇన్‌పుట్ డేటాను అధ్యయనం చేయడానికి మరియు పరిస్థితిని వర్గీకరించడానికి Naive Bayes వర్గీకరణను ఉపయోగించడం, తద్వారా AI కోరుకున్న విధంగా ప్రతిస్పందిస్తుంది. బయేసియన్ వర్గీకరణలు ఇమెయిల్ స్పామ్ ఫిల్టర్‌లలో వాటి వినియోగానికి బాగా ప్రసిద్ధి చెందాయి. అక్కడ వారు పదాలను పరిశీలిస్తారు, ఆ పదాలు ఇంతకు ముందు ఎక్కడ కనిపించాయో (స్పామ్‌లో లేదా కాకపోయినా) వాటిని సరిపోల్చండి మరియు ఇన్‌కమింగ్ ఇమెయిల్‌ల గురించి తీర్మానాలు చేస్తారు. మేము తక్కువ ఇన్‌పుట్‌లతో కూడా అదే పనిని చేయగలము. AI చూసే అన్ని ఉపయోగకరమైన సమాచారం (ఎలాంటి శత్రు యూనిట్లు సృష్టించబడ్డాయి, లేదా వారు ఉపయోగించే మంత్రాలు లేదా వారు ఏ సాంకేతిక పరిజ్ఞానాన్ని పరిశోధించారు) మరియు తుది ఫలితం (యుద్ధం లేదా శాంతి, రష్ లేదా డిఫెన్స్ మొదలైనవి) ఆధారంగా. - మేము కావలసిన AI ప్రవర్తనను ఎంచుకుంటాము.

ఈ శిక్షణా పద్ధతులన్నీ సరిపోతాయి, కానీ పరీక్ష డేటా ఆధారంగా వాటిని ఉపయోగించడం మంచిది. మీ ప్లేటెస్టర్‌లు ఉపయోగించిన విభిన్న వ్యూహాలకు అనుగుణంగా AI నేర్చుకుంటుంది. విడుదలైన తర్వాత ప్లేయర్‌కు అనుగుణంగా ఉండే AI చాలా ఊహించదగినదిగా లేదా ఓడించడం చాలా కష్టంగా మారవచ్చు.

విలువ ఆధారిత అనుసరణ

మా గేమ్ ప్రపంచంలోని కంటెంట్ మరియు నియమాల దృష్ట్యా, మేము ఇన్‌పుట్ డేటాను ఉపయోగించడం కంటే నిర్ణయం తీసుకోవడంపై ప్రభావం చూపే విలువల సెట్‌ను మార్చవచ్చు. మేము ఇలా చేస్తాము:

  • AI ప్రపంచంలోని స్థితి మరియు గేమ్ సమయంలో (పైన ఉన్న విధంగా) కీలక సంఘటనలపై డేటాను సేకరించనివ్వండి.
  • ఈ డేటా ఆధారంగా కొన్ని ముఖ్యమైన విలువలను మారుద్దాం.
  • ఈ విలువలను ప్రాసెస్ చేయడం లేదా మూల్యాంకనం చేయడం ఆధారంగా మేము మా నిర్ణయాలను అమలు చేస్తాము.

ఉదాహరణకు, ఒక ఏజెంట్‌కు ఫస్ట్-పర్సన్ షూటర్ మ్యాప్‌లో ఎంచుకోవడానికి అనేక గదులు ఉన్నాయి. ప్రతి గదికి దాని స్వంత విలువ ఉంది, ఇది సందర్శించడం ఎంత కావాలో నిర్ణయిస్తుంది. విలువ ఆధారంగా ఏ గదికి వెళ్లాలో AI యాదృచ్ఛికంగా ఎంచుకుంటుంది. ఏజెంట్ అతను ఏ గదిలో చంపబడ్డాడో గుర్తుంచుకుంటాడు మరియు దాని విలువను తగ్గిస్తుంది (అతను అక్కడికి తిరిగి వచ్చే సంభావ్యత). అదేవిధంగా రివర్స్ పరిస్థితికి - ఏజెంట్ చాలా మంది ప్రత్యర్థులను నాశనం చేస్తే, అప్పుడు గది విలువ పెరుగుతుంది.

మార్కోవ్ మోడల్

మేము సేకరించిన డేటాను అంచనా వేయడానికి ఉపయోగిస్తే? మనం ఆటగాడిని చూసే ప్రతి గదిని నిర్దిష్ట సమయం వరకు గుర్తుంచుకుంటే, ఆటగాడు ఏ గదికి వెళ్లవచ్చో అంచనా వేస్తాము. గదులు (విలువలు) అంతటా ప్లేయర్ కదలికలను ట్రాక్ చేయడం మరియు రికార్డ్ చేయడం ద్వారా, మేము వాటిని అంచనా వేయవచ్చు.

ఎరుపు, ఆకుపచ్చ మరియు నీలం అనే మూడు గదులను తీసుకుందాం. మరియు గేమ్ సెషన్‌ను చూస్తున్నప్పుడు మేము రికార్డ్ చేసిన పరిశీలనలు:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ప్రతి గదిలోని పరిశీలనల సంఖ్య దాదాపు సమానంగా ఉంటుంది - ఆకస్మిక దాడికి సరైన స్థలాన్ని ఎక్కడ తయారు చేయాలో మాకు ఇంకా తెలియదు. మ్యాప్ అంతటా సమానంగా కనిపించే ఆటగాళ్ల పునరుజ్జీవనం ద్వారా గణాంకాలను సేకరించడం కూడా సంక్లిష్టంగా ఉంటుంది. కానీ మ్యాప్‌లో కనిపించిన తర్వాత వారు ప్రవేశించే తదుపరి గదికి సంబంధించిన డేటా ఇప్పటికే ఉపయోగకరంగా ఉంది.

గ్రీన్ రూమ్ ప్లేయర్‌లకు సరిపోతుందని చూడవచ్చు - చాలా మంది ప్రజలు రెడ్ రూమ్ నుండి దానికి వెళతారు, వీరిలో 50% మంది అక్కడే ఉంటారు. నీలం గది, దీనికి విరుద్ధంగా, ప్రజాదరణ పొందలేదు; దాదాపు ఎవరూ దాని వద్దకు వెళ్లరు, మరియు వారు అలా చేస్తే, వారు ఎక్కువసేపు ఉండరు.

కానీ డేటా మాకు మరింత ముఖ్యమైనది చెబుతుంది - ఆటగాడు నీలిరంగు గదిలో ఉన్నప్పుడు, మనం అతనిని చూసే తదుపరి గది ఎరుపు రంగులో ఉంటుంది, ఆకుపచ్చ రంగులో ఉండదు. రెడ్‌రూమ్‌ కంటే గ్రీన్‌రూమ్‌కు ఎక్కువ ఆదరణ ఉన్నప్పటికీ, ప్లేయర్ బ్లూ రూమ్‌లో ఉంటే పరిస్థితి మారుతుంది. తదుపరి స్థితి (అంటే ఆటగాడు వెళ్లే గది) మునుపటి స్థితిపై ఆధారపడి ఉంటుంది (అంటే ప్రస్తుతం ఆటగాడు ఉన్న గది). మేము డిపెండెన్సీలను అన్వేషిస్తున్నందున, మేము స్వతంత్రంగా పరిశీలనలను లెక్కించడం కంటే మరింత ఖచ్చితమైన అంచనాలను చేస్తాము.

గత స్థితి నుండి డేటా ఆధారంగా భవిష్యత్ స్థితిని అంచనా వేయడాన్ని మార్కోవ్ మోడల్ అని పిలుస్తారు మరియు అటువంటి ఉదాహరణలను (గదులతో) మార్కోవ్ గొలుసులు అంటారు. నమూనాలు వరుస రాష్ట్రాల మధ్య మార్పుల సంభావ్యతను సూచిస్తాయి కాబట్టి, ప్రతి పరివర్తన చుట్టూ సంభావ్యతతో అవి దృశ్యమానంగా FSMలుగా ప్రదర్శించబడతాయి. మునుపు, మేము ఏజెంట్ ఉన్న ప్రవర్తనా స్థితిని సూచించడానికి FSMని ఉపయోగించాము, కానీ ఈ భావన ఏజెంట్‌తో అనుబంధించబడినా లేదా ఏ స్థితికి అయినా విస్తరించబడుతుంది. ఈ సందర్భంలో, ఏజెంట్ ఆక్రమించిన గదిని రాష్ట్రాలు సూచిస్తాయి:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

ఇది రాష్ట్ర మార్పుల సాపేక్ష సంభావ్యతను సూచించే సులభమైన మార్గం, తదుపరి స్థితిని అంచనా వేయడానికి AIకి కొంత సామర్థ్యాన్ని అందిస్తుంది. మీరు ముందుకు అనేక దశలను ఊహించవచ్చు.

ఒక ఆటగాడు గ్రీన్ రూమ్‌లో ఉంటే, తదుపరిసారి గమనించినప్పుడు అతను అక్కడే ఉండే అవకాశం 50% ఉంటుంది. అయితే ఆ తర్వాత కూడా ఆయన ఉండే అవకాశాలు ఎలా ఉన్నాయి? రెండుసార్లు పరిశీలించిన తర్వాత ఆటగాడు గ్రీన్ రూమ్‌లో ఉండిపోవడమే కాకుండా, అతను వెళ్లి తిరిగి వచ్చే అవకాశం కూడా ఉంది. కొత్త డేటాను పరిగణనలోకి తీసుకుని కొత్త పట్టిక ఇక్కడ ఉంది:

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం

రెండు పరిశీలనల తర్వాత గ్రీన్ రూమ్‌లో ప్లేయర్‌ను చూసే అవకాశం 51% - 21%కి సమానం అని ఇది చూపిస్తుంది, అతను రెడ్ రూమ్ నుండి వచ్చినవాడు అని, వారిలో 5% ఆటగాడు వారి మధ్య ఉన్న బ్లూ రూమ్‌ని సందర్శిస్తాడని, మరియు 25% ఆటగాడు గ్రీన్ రూమ్ వదిలి వెళ్ళడు.

పట్టిక కేవలం దృశ్య సాధనం - ప్రక్రియకు ప్రతి దశలో సంభావ్యతలను గుణించడం మాత్రమే అవసరం. దీనర్థం మీరు ఒక హెచ్చరికతో భవిష్యత్తులో చాలా దూరం చూడవచ్చు: గదిలోకి ప్రవేశించే అవకాశం పూర్తిగా ప్రస్తుత గదిపై ఆధారపడి ఉంటుందని మేము అనుకుంటాము. దీనిని మార్కోవ్ ప్రాపర్టీ అంటారు - భవిష్యత్ స్థితి వర్తమానంపై మాత్రమే ఆధారపడి ఉంటుంది. అయితే ఇది నూటికి నూరు శాతం నిజం కాదు. ఆటగాళ్ళు ఇతర కారకాలపై ఆధారపడి నిర్ణయాలను మార్చవచ్చు: ఆరోగ్య స్థాయి లేదా మందుగుండు సామగ్రి మొత్తం. మేము ఈ విలువలను రికార్డ్ చేయనందున, మా అంచనాలు తక్కువ ఖచ్చితమైనవిగా ఉంటాయి.

N-గ్రాములు

పోరాట ఆట యొక్క ఉదాహరణ మరియు ఆటగాడి కాంబో కదలికలను అంచనా వేయడం గురించి ఏమిటి? అదే! కానీ ఒక రాష్ట్రం లేదా ఈవెంట్‌కు బదులుగా, మేము కాంబో స్ట్రైక్‌ను రూపొందించే మొత్తం సీక్వెన్స్‌లను పరిశీలిస్తాము.

దీన్ని చేయడానికి ఒక మార్గం ఏమిటంటే, ప్రతి ఇన్‌పుట్‌ను (కిక్, పంచ్ లేదా బ్లాక్ వంటివి) బఫర్‌లో నిల్వ చేయడం మరియు మొత్తం బఫర్‌ను ఈవెంట్‌గా వ్రాయడం. కాబట్టి ప్లేయర్ సూపర్‌డెత్‌ఫిస్ట్ దాడిని ఉపయోగించడానికి కిక్, కిక్, పంచ్‌లను పదేపదే నొక్కినప్పుడు, AI సిస్టమ్ అన్ని ఇన్‌పుట్‌లను బఫర్‌లో నిల్వ చేస్తుంది మరియు ప్రతి దశలో ఉపయోగించిన చివరి మూడింటిని గుర్తుంచుకుంటుంది.

గేమింగ్ AIని ఎలా సృష్టించాలి: ప్రారంభకులకు మార్గదర్శకం
(ఆటగాడు SuperDeathFist దాడిని ప్రారంభించినప్పుడు బోల్డ్‌లో ఉన్న పంక్తులు.)

ప్లేయర్ కిక్‌ని ఎంచుకున్నప్పుడు, మరొక కిక్‌ని ఎంచుకున్నప్పుడు AI అన్ని ఎంపికలను చూస్తుంది, ఆపై తదుపరి ఇన్‌పుట్ ఎల్లప్పుడూ పంచ్ అని గమనించవచ్చు. ఇది SuperDeathFist యొక్క కాంబో కదలికను అంచనా వేయడానికి మరియు వీలైతే దాన్ని నిరోధించడానికి ఏజెంట్‌ని అనుమతిస్తుంది.

ఈ సంఘటనల క్రమాలను N-గ్రాములు అంటారు, ఇక్కడ N అనేది నిల్వ చేయబడిన మూలకాల సంఖ్య. మునుపటి ఉదాహరణలో ఇది 3-గ్రామ్ (ట్రిగ్రామ్), అంటే: మొదటి రెండు ఎంట్రీలు మూడవదాన్ని అంచనా వేయడానికి ఉపయోగించబడతాయి. దీని ప్రకారం, 5-గ్రాములలో, మొదటి నాలుగు ఎంట్రీలు ఐదవ మరియు మొదలైన వాటిని అంచనా వేస్తాయి.

డిజైనర్ N-గ్రాముల పరిమాణాన్ని జాగ్రత్తగా ఎంచుకోవాలి. చిన్న N కి తక్కువ మెమరీ అవసరం కానీ తక్కువ చరిత్రను కూడా నిల్వ చేస్తుంది. ఉదాహరణకు, 2-గ్రాముల (బిగ్రామ్) కిక్, కిక్ లేదా కిక్, పంచ్‌లను రికార్డ్ చేస్తుంది, కానీ కిక్, కిక్, పంచ్‌లను నిల్వ చేయలేరు, కాబట్టి AI సూపర్‌డెత్‌ఫిస్ట్ కాంబోకు ప్రతిస్పందించదు.

మరోవైపు, పెద్ద సంఖ్యలకు ఎక్కువ మెమరీ అవసరం మరియు AIకి శిక్షణ ఇవ్వడం చాలా కష్టమవుతుంది, ఎందుకంటే మరిన్ని సాధ్యమైన ఎంపికలు ఉన్నాయి. మీరు కిక్, పంచ్ లేదా బ్లాక్ యొక్క మూడు సాధ్యమైన ఇన్‌పుట్‌లను కలిగి ఉంటే మరియు మేము 10-గ్రాములను ఉపయోగించినట్లయితే, అది దాదాపు 60 వేల విభిన్న ఎంపికలు అవుతుంది.

బిగ్రామ్ మోడల్ సాధారణ మార్కోవ్ చైన్ - ప్రతి గత స్థితి/ప్రస్తుత స్థితి జత ఒక బిగ్రామ్, మరియు మీరు మొదటి స్థితి ఆధారంగా రెండవ స్థితిని అంచనా వేయవచ్చు. 3-గ్రామ్ మరియు పెద్ద N-గ్రాములను మార్కోవ్ గొలుసులుగా కూడా భావించవచ్చు, ఇక్కడ అన్ని మూలకాలు (N-గ్రామ్‌లో చివరిది తప్ప) కలిసి మొదటి స్థితిని మరియు చివరి మూలకం రెండవ స్థితిని ఏర్పరుస్తాయి. ఫైటింగ్ గేమ్ ఉదాహరణ కిక్ మరియు కిక్ స్థితి నుండి కిక్ మరియు పంచ్ స్థితికి మారే అవకాశాన్ని చూపుతుంది. బహుళ ఇన్‌పుట్ చరిత్ర నమోదులను ఒకే యూనిట్‌గా పరిగణించడం ద్వారా, మేము తప్పనిసరిగా ఇన్‌పుట్ క్రమాన్ని మొత్తం రాష్ట్రంలో భాగంగా మారుస్తున్నాము. ఇది మాకు మార్కోవ్ ప్రాపర్టీని ఇస్తుంది, ఇది తదుపరి ఇన్‌పుట్‌ను అంచనా వేయడానికి మరియు తదుపరి ఏ కాంబో తరలింపును అంచనా వేయడానికి మార్కోవ్ గొలుసులను ఉపయోగించడానికి అనుమతిస్తుంది.

తీర్మానం

మేము కృత్రిమ మేధస్సు అభివృద్ధిలో అత్యంత సాధారణ సాధనాలు మరియు విధానాల గురించి మాట్లాడాము. మేము వాటిని ఉపయోగించాల్సిన పరిస్థితులను మరియు అవి ప్రత్యేకంగా ఎక్కడ ఉపయోగపడతాయో కూడా చూశాము.

గేమ్ AI యొక్క ప్రాథమికాలను అర్థం చేసుకోవడానికి ఇది సరిపోతుంది. కానీ, వాస్తవానికి, ఇవి అన్ని పద్ధతులు కాదు. తక్కువ జనాదరణ పొందినది, కానీ తక్కువ ప్రభావవంతమైనవి కాదు:

  • హిల్ క్లైంబింగ్, గ్రేడియంట్ డిసెంట్ మరియు జెనెటిక్ అల్గారిథమ్‌లతో సహా ఆప్టిమైజేషన్ అల్గారిథమ్‌లు
  • వ్యతిరేక శోధన/షెడ్యూలింగ్ అల్గారిథమ్‌లు (మినిమాక్స్ మరియు ఆల్ఫా-బీటా కత్తిరింపు)
  • వర్గీకరణ పద్ధతులు (పర్సెప్ట్రాన్లు, న్యూరల్ నెట్‌వర్క్‌లు మరియు సపోర్ట్ వెక్టర్ మెషీన్‌లు)
  • ప్రాసెసింగ్ ఏజెంట్ల అవగాహన మరియు జ్ఞాపకశక్తి కోసం వ్యవస్థలు
  • AIకి నిర్మాణ విధానాలు (హైబ్రిడ్ సిస్టమ్స్, సబ్‌సెట్ ఆర్కిటెక్చర్‌లు మరియు AI సిస్టమ్‌లను అతివ్యాప్తి చేసే ఇతర మార్గాలు)
  • యానిమేషన్ సాధనాలు (ప్లానింగ్ మరియు మోషన్ కోఆర్డినేషన్)
  • పనితీరు కారకాలు (వివరాల స్థాయి, ఎప్పుడైనా మరియు టైమ్‌లైసింగ్ అల్గారిథమ్‌లు)

అంశంపై ఆన్‌లైన్ వనరులు:

1. GameDev.net ఉంది AI పై కథనాలు మరియు ట్యుటోరియల్‌లతో కూడిన విభాగంమరియు ఫోరమ్.
2. AiGameDev.com గేమ్ AI డెవలప్‌మెంట్‌కు సంబంధించిన విస్తృత శ్రేణి అంశాలపై అనేక ప్రదర్శనలు మరియు కథనాలను కలిగి ఉంది.
3. GDC వాల్ట్ GDC AI సమ్మిట్ నుండి అంశాలను కలిగి ఉంటుంది, వీటిలో చాలా ఉచితంగా అందుబాటులో ఉన్నాయి.
4. వెబ్‌సైట్‌లో ఉపయోగకరమైన పదార్థాలను కూడా చూడవచ్చు AI గేమ్ ప్రోగ్రామర్స్ గిల్డ్.
5. టామీ థాంప్సన్, AI పరిశోధకుడు మరియు గేమ్ డెవలపర్, YouTubeలో వీడియోలను రూపొందించారు AI మరియు ఆటలు వాణిజ్య గేమ్‌లలో AI యొక్క వివరణ మరియు అధ్యయనంతో.

అంశంపై పుస్తకాలు:

1. గేమ్ AI ప్రో బుక్ సిరీస్ అనేది నిర్దిష్ట ఫీచర్‌లను ఎలా అమలు చేయాలి లేదా నిర్దిష్ట సమస్యలను ఎలా పరిష్కరించాలో వివరించే చిన్న కథనాల సమాహారం.

గేమ్ AI ప్రో: కలెక్టెడ్ విజ్డమ్ ఆఫ్ గేమ్ AI ప్రొఫెషనల్స్
గేమ్ AI ప్రో 2: కలెక్టెడ్ విజ్డమ్ ఆఫ్ గేమ్ AI ప్రొఫెషనల్స్
గేమ్ AI ప్రో 3: కలెక్టెడ్ విజ్డమ్ ఆఫ్ గేమ్ AI ప్రొఫెషనల్స్

2. AI గేమ్ ప్రోగ్రామింగ్ విజ్డమ్ సిరీస్ గేమ్ AI ప్రో సిరీస్‌కి ముందున్నది. ఇది పాత పద్ధతులను కలిగి ఉంది, కానీ దాదాపు అన్ని నేటికీ సంబంధితంగా ఉంటాయి.

AI గేమ్ ప్రోగ్రామింగ్ విజ్డమ్ 1
AI గేమ్ ప్రోగ్రామింగ్ విజ్డమ్ 2
AI గేమ్ ప్రోగ్రామింగ్ విజ్డమ్ 3
AI గేమ్ ప్రోగ్రామింగ్ విజ్డమ్ 4

3. ఆర్టిఫిషియల్ ఇంటెలిజెన్స్: ఎ మోడర్న్ అప్రోచ్ కృత్రిమ మేధస్సు యొక్క సాధారణ రంగాన్ని అర్థం చేసుకోవాలనుకునే ప్రతి ఒక్కరికీ ప్రాథమిక గ్రంథాలలో ఒకటి. ఇది గేమ్ డెవలప్‌మెంట్ గురించిన పుస్తకం కాదు - ఇది AI యొక్క ప్రాథమికాలను బోధిస్తుంది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి