கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

விளையாட்டுகளில் செயற்கை நுண்ணறிவு பற்றிய சில சுவாரஸ்யமான விஷயங்களைக் கண்டேன். எளிய எடுத்துக்காட்டுகளைப் பயன்படுத்தி AI பற்றிய அடிப்படை விஷயங்களின் விளக்கத்துடன், அதன் வசதியான வளர்ச்சி மற்றும் வடிவமைப்பிற்கான பல பயனுள்ள கருவிகள் மற்றும் முறைகள் உள்ளன. எப்படி, எங்கு, எப்போது பயன்படுத்த வேண்டும் என்பதும் உள்ளது.

பெரும்பாலான எடுத்துக்காட்டுகள் சூடோகோடில் எழுதப்பட்டுள்ளன, எனவே மேம்பட்ட நிரலாக்க அறிவு தேவையில்லை. வெட்டுக்குக் கீழே படங்கள் மற்றும் ஜிஃப்களுடன் 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 அறிக்கையின் நிபந்தனைப் பகுதியைப் போன்றது. குறியீட்டுப் பக்கத்தில், இது முடிவு முனைகளுக்கான இரண்டாவது நெடுவரிசையில் படிக்கும், ஆனால் செயல்படுத்துவதற்கு ஒரு குறிப்பிட்ட நிபந்தனையைத் தேடுவதற்குப் பதிலாக (துடுப்பிலிருந்து பந்து எஞ்சியிருக்கிறதா), அது நிபந்தனை வெளிப்பாட்டை மதிப்பிட்டு அதற்கேற்ப சரி அல்லது தவறு என்று திரும்பும். இது Lua அல்லது Angelscript ஸ்கிரிப்டிங் மொழியைப் பயன்படுத்தி செய்யப்படுகிறது. அவற்றைப் பயன்படுத்தி, ஒரு டெவலப்பர் தனது விளையாட்டில் உள்ள பொருட்களை எடுத்து (பந்து மற்றும் துடுப்பு) மற்றும் ஸ்கிரிப்ட்டில் (ball.position) கிடைக்கும் மாறிகளை உருவாக்கலாம். மேலும், ஸ்கிரிப்டிங் மொழி C++ ஐ விட எளிமையானது. இதற்கு முழு தொகுப்பு நிலை தேவையில்லை, எனவே விளையாட்டு தர்க்கத்தை விரைவாக சரிசெய்வதற்கு இது சிறந்தது மற்றும் "குறியீடுகள் அல்லாதவர்கள்" தேவையான செயல்பாடுகளை தாங்களாகவே உருவாக்க அனுமதிக்கிறது.

மேலே உள்ள எடுத்துக்காட்டில், நிபந்தனை வெளிப்பாட்டை மதிப்பிடுவதற்கு மட்டுமே ஸ்கிரிப்டிங் மொழி பயன்படுத்தப்படுகிறது, ஆனால் இது செயல்களுக்கும் பயன்படுத்தப்படலாம். எடுத்துக்காட்டாக, துடுப்பை வலது நகர்த்தும் தரவு ஸ்கிரிப்ட் அறிக்கையாக மாறலாம் (ball.position.x += 10). துடுப்பை வலதுபுறமாக நகர்த்த வேண்டிய அவசியமின்றி, செயல் ஸ்கிரிப்ட்டில் வரையறுக்கப்படுகிறது.

நீங்கள் இன்னும் மேலே சென்று முழு முடிவு மரத்தையும் ஸ்கிரிப்டிங் மொழியில் எழுதலாம். இது ஹார்ட்கோட் செய்யப்பட்ட நிபந்தனை அறிக்கைகளின் வடிவத்தில் குறியீடாக இருக்கும், ஆனால் அவை வெளிப்புற ஸ்கிரிப்ட் கோப்புகளில் இருக்கும், அதாவது முழு நிரலையும் மீண்டும் தொகுக்காமல் மாற்றலாம். வெவ்வேறு AI பதில்களை விரைவாகச் சோதிக்க, கேம்ப்ளேயின் போது ஸ்கிரிப்ட் கோப்பை அடிக்கடி திருத்தலாம்.

நிகழ்வு பதில்

மேலே உள்ள எடுத்துக்காட்டுகள் பாங்கிற்கு சரியானவை. அவை தொடர்ந்து உணர்வு/சிந்தனை/செயல் சுழற்சியை இயக்குகின்றன மற்றும் உலகின் சமீபத்திய நிலையை அடிப்படையாகக் கொண்டு செயல்படுகின்றன. ஆனால் மிகவும் சிக்கலான விளையாட்டுகளில் நீங்கள் தனிப்பட்ட நிகழ்வுகளுக்கு எதிர்வினையாற்ற வேண்டும், எல்லாவற்றையும் ஒரே நேரத்தில் மதிப்பீடு செய்யக்கூடாது. இந்த வழக்கில் பாங் ஏற்கனவே ஒரு மோசமான உதாரணம். இன்னொன்றைத் தேர்ந்தெடுப்போம்.

வீரரைக் கண்டுபிடிக்கும் வரை எதிரிகள் அசைவில்லாமல் இருக்கும் ஒரு துப்பாக்கி சுடும் வீரரை கற்பனை செய்து பாருங்கள், அதன் பிறகு அவர்கள் தங்கள் “நிபுணத்துவத்தை” பொறுத்து செயல்படுவார்கள்: யாரோ ஒருவர் “அவசரமாக” ஓடுவார்கள், யாரோ தூரத்திலிருந்து தாக்குவார்கள். இது இன்னும் ஒரு அடிப்படை வினைத்திறன் அமைப்பு - "ஒரு வீரர் கண்டுபிடிக்கப்பட்டால், ஏதாவது செய்யுங்கள்" - ஆனால் அதை தர்க்கரீதியாக பிளேயர் சீன் நிகழ்வு மற்றும் ஒரு எதிர்வினை (பதிலைத் தேர்ந்தெடுத்து அதை இயக்கவும்) என பிரிக்கலாம்.

இது நம்மை உணர்வு/சிந்தனை/செயல் சுழற்சிக்கு மீண்டும் கொண்டுவருகிறது. AI பிளேயரைப் பார்க்கிறதா என்பதை ஒவ்வொரு ஃப்ரேமையும் சரிபார்க்கும் ஒரு சென்ஸ் பகுதியை நாம் குறியிடலாம். இல்லையென்றால், எதுவும் நடக்காது, ஆனால் அது பார்த்தால், பிளேயர் சீன் நிகழ்வு உருவாக்கப்பட்டது. குறியீட்டில் "பிளேயர் சீன் நிகழ்வு நிகழும்போது, ​​செய்" என்று கூறும் ஒரு தனிப் பகுதி இருக்கும், அதில் நீங்கள் திங்க் அண்ட் ஆக்ட் பகுதிகளுக்கு பதிலளிக்க வேண்டும். எனவே, பிளேயர் சீன் நிகழ்வுக்கு நீங்கள் எதிர்வினைகளை அமைப்பீர்கள்: "விரைவாக" பாத்திரம் - ChargeAndAttack மற்றும் துப்பாக்கி சுடும் வீரர் - HideAndSnipe. இந்த உறவுகளை மீண்டும் தொகுக்காமல் விரைவான திருத்தத்திற்காக தரவுக் கோப்பில் உருவாக்கலாம். ஸ்கிரிப்டிங் மொழியையும் இங்கே பயன்படுத்தலாம்.

கடினமான முடிவுகளை எடுப்பது

எளிமையான எதிர்வினை அமைப்புகள் மிகவும் சக்திவாய்ந்தவை என்றாலும், அவை போதுமானதாக இல்லாத பல சூழ்நிலைகள் உள்ளன. சில நேரங்களில் நீங்கள் முகவர் தற்போது என்ன செய்கிறார் என்பதன் அடிப்படையில் வெவ்வேறு முடிவுகளை எடுக்க வேண்டும், ஆனால் இதை ஒரு நிபந்தனையாக கற்பனை செய்வது கடினம். சில நேரங்களில் அவற்றை ஒரு முடிவு மரம் அல்லது ஸ்கிரிப்ட்டில் திறம்பட பிரதிநிதித்துவப்படுத்த பல நிபந்தனைகள் உள்ளன. சில சமயங்களில் அடுத்த கட்டத்தை தீர்மானிப்பதற்கு முன் நிலைமை எவ்வாறு மாறும் என்பதை முன்கூட்டியே மதிப்பீடு செய்ய வேண்டும். இந்த பிரச்சனைகளை தீர்க்க இன்னும் நுட்பமான அணுகுமுறைகள் தேவை.

வரையறுக்கப்பட்ட நிலை இயந்திரம்

Finite state machine அல்லது FSM (finite state machine) என்பது எங்கள் ஏஜென்ட் தற்போது பல சாத்தியமான நிலைகளில் ஒன்றில் இருப்பதாகவும், அது ஒரு மாநிலத்திலிருந்து மற்றொரு மாநிலத்திற்கு மாறலாம் என்றும் கூறுவது. ஒரு குறிப்பிட்ட எண்ணிக்கையிலான மாநிலங்கள் உள்ளன - எனவே பெயர். வாழ்க்கையின் சிறந்த உதாரணம் போக்குவரத்து விளக்கு. வெவ்வேறு இடங்களில் விளக்குகளின் வெவ்வேறு வரிசைகள் உள்ளன, ஆனால் கொள்கை ஒன்றுதான் - ஒவ்வொரு மாநிலமும் எதையாவது பிரதிபலிக்கிறது (நிறுத்து, நடை, முதலியன). ஒரு போக்குவரத்து விளக்கு எந்த நேரத்திலும் ஒரு நிலையில் மட்டுமே இருக்கும், மேலும் எளிய விதிகளின் அடிப்படையில் ஒன்றிலிருந்து மற்றொன்றுக்கு நகரும்.

கேம்களில் உள்ள NPCகளுடன் இதே போன்ற கதைதான். எடுத்துக்காட்டாக, பின்வரும் நிலைகளுடன் ஒரு காவலரை எடுத்துக் கொள்வோம்:

  • ரோந்து.
  • தாக்குதல்.
  • தப்பி ஓடுதல்.

அதன் நிலையை மாற்றுவதற்கான இந்த நிபந்தனைகள்:

  • காவலர் எதிரியைக் கண்டால், அவர் தாக்குகிறார்.
  • பாதுகாவலர் தாக்கினாலும் எதிரியைக் காணவில்லை என்றால், அவர் ரோந்துக்குத் திரும்புகிறார்.
  • ஒரு காவலர் தாக்கினாலும் பலத்த காயம் ஏற்பட்டால், அவர் ஓடிவிடுவார்.

நீங்கள் if-ஸ்டேட்மெண்ட்டுகளை ஒரு பாதுகாவலர் நிலை மாறி மற்றும் பல்வேறு காசோலைகள் மூலம் எழுதலாம்: அருகில் எதிரி இருக்கிறாரா, NPC இன் ஆரோக்கிய நிலை என்ன, மேலும் சில மாநிலங்களைச் சேர்ப்போம்:

  • சும்மா - ரோந்துக்கு இடையில்.
  • தேடுதல் - கவனிக்கப்பட்ட எதிரி காணாமல் போனபோது.
  • உதவியைக் கண்டறிதல் - ஒரு எதிரி காணப்பட்டாலும், தனித்துச் சண்டையிட முடியாத அளவுக்கு வலிமையானவர்.

அவர்கள் ஒவ்வொருவருக்கும் தேர்வு குறைவாக உள்ளது - எடுத்துக்காட்டாக, காவலர் உடல்நிலை குறைவாக இருந்தால் மறைந்திருக்கும் எதிரியைத் தேட மாட்டார்.

எல்லாவற்றிற்கும் மேலாக, "ifs" இன் பெரிய பட்டியல் உள்ளது , அந்த "மிகவும் சிக்கலானதாக ஆகலாம், எனவே மாநிலங்களுக்கிடையேயான நிலைகளையும் மாற்றங்களையும் மனதில் வைத்துக்கொள்ள அனுமதிக்கும் முறையை நாம் முறைப்படுத்த வேண்டும். இதைச் செய்ய, நாங்கள் அனைத்து மாநிலங்களையும் கணக்கில் எடுத்துக்கொள்கிறோம், மேலும் ஒவ்வொரு மாநிலத்தின் கீழும் மற்ற மாநிலங்களுக்கான அனைத்து மாற்றங்களையும், அவற்றுக்குத் தேவையான நிபந்தனைகளுடன் ஒரு பட்டியலில் எழுதுகிறோம்.

கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

இது ஒரு நிலை மாற்றம் அட்டவணை - FSM ஐப் பிரதிநிதித்துவப்படுத்துவதற்கான ஒரு விரிவான வழி. ஒரு வரைபடத்தை வரைந்து, NPC நடத்தை எவ்வாறு மாறுகிறது என்பதைப் பற்றிய முழுமையான கண்ணோட்டத்தைப் பெறுவோம்.

கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

தற்போதைய சூழ்நிலையின் அடிப்படையில் இந்த முகவருக்காக முடிவெடுப்பதன் சாரத்தை வரைபடம் பிரதிபலிக்கிறது. மேலும், ஒவ்வொரு அம்புக்குறியும் அதற்கு அடுத்த நிலை உண்மையாக இருந்தால் மாநிலங்களுக்கு இடையே ஒரு மாற்றத்தைக் காட்டுகிறது.

ஒவ்வொரு புதுப்பிப்பும் ஏஜெண்டின் தற்போதைய நிலையைச் சரிபார்த்து, மாற்றங்களின் பட்டியலைப் பார்க்கவும், மாற்றத்திற்கான நிபந்தனைகள் பூர்த்தி செய்யப்பட்டால், அது புதிய நிலையை ஏற்றுக்கொள்கிறது. எடுத்துக்காட்டாக, ஒவ்வொரு சட்டகமும் 10-வினாடி டைமர் காலாவதியாகிவிட்டதா என்பதைச் சரிபார்க்கிறது, அப்படியானால், காவலாளி ஐட்லிங் நிலையில் இருந்து ரோந்துக்கு செல்கிறார். அதே வழியில், தாக்குதல் நிலை முகவரின் ஆரோக்கியத்தை சரிபார்க்கிறது - அது குறைவாக இருந்தால், அது தப்பிக்கும் நிலைக்குச் செல்கிறது.

இது மாநிலங்களுக்கிடையேயான மாற்றங்களைக் கையாள்கிறது, ஆனால் மாநிலங்களோடு தொடர்புடைய நடத்தை பற்றி என்ன? ஒரு குறிப்பிட்ட மாநிலத்திற்கான உண்மையான நடத்தையை செயல்படுத்தும் வகையில், பொதுவாக இரண்டு வகையான "ஹூக்" உள்ளன, அங்கு நாம் FSM க்கு செயல்களை ஒதுக்குகிறோம்:

  • தற்போதைய நிலைக்கு நாம் அவ்வப்போது செய்யும் செயல்கள்.
  • ஒரு மாநிலத்தில் இருந்து மற்றொரு மாநிலத்திற்கு மாறும்போது நாம் செய்யும் செயல்கள்.

முதல் வகைக்கான எடுத்துக்காட்டுகள். ரோந்து மாநிலம் ஒவ்வொரு சட்டகத்தின் ரோந்து பாதையிலும் முகவரை நகர்த்தும். தாக்குதல் நிலை ஒவ்வொரு சட்டகத்திலும் ஒரு தாக்குதலைத் தொடங்க முயற்சிக்கும் அல்லது இது சாத்தியமான ஒரு மாநிலத்திற்கு மாறுகிறது.

இரண்டாவது வகைக்கு, "எதிரி தெரியும் மற்றும் எதிரி மிகவும் வலுவாக இருந்தால், "கண்டுபிடிப்பு உதவி நிலைக்குச் செல்லவும்" என்ற மாற்றத்தைக் கவனியுங்கள். உதவிக்கு எங்கு செல்ல வேண்டும் என்பதை முகவர் தேர்வு செய்து இந்தத் தகவலைச் சேமித்து வைக்க வேண்டும், இதன் மூலம் எங்கு செல்ல வேண்டும் என்பதை ஃபைண்டிங் ஹெல்ப் மாநிலத்திற்குத் தெரியும். உதவி கிடைத்தவுடன், முகவர் மீண்டும் தாக்கும் நிலைக்குச் செல்கிறார். இந்த கட்டத்தில், அவர் அச்சுறுத்தலைப் பற்றி கூட்டாளியிடம் சொல்ல விரும்புவார், எனவே NotifyFriendOfThreat நடவடிக்கை ஏற்படலாம்.

மீண்டும் ஒருமுறை, இந்த அமைப்பை நாம் உணர்வு/சிந்தனை/செயல் சுழற்சியின் லென்ஸ் மூலம் பார்க்கலாம். மாற்றம் தர்க்கத்தால் பயன்படுத்தப்படும் தரவுகளில் உணர்வு பொதிந்துள்ளது. சிந்தியுங்கள் - ஒவ்வொரு மாநிலத்திலும் மாற்றங்கள் கிடைக்கின்றன. மேலும் ஒரு மாநிலத்திற்குள் அல்லது மாநிலங்களுக்கு இடையேயான மாற்றங்களில் அவ்வப்போது செய்யப்படும் செயல்களால் சட்டம் மேற்கொள்ளப்படுகிறது.

சில நேரங்களில் தொடர்ந்து வாக்குப்பதிவு நிலைமாறும் நிலைமைகள் விலை உயர்ந்ததாக இருக்கும். எடுத்துக்காட்டாக, ஒவ்வொரு முகவரும் சிக்கலான கணக்கீடுகளைச் செய்தால், எதிரிகளைப் பார்க்க முடியுமா என்பதைத் தீர்மானிக்கவும், ரோந்து செய்வதிலிருந்து தாக்கும் நிலைக்கு மாற முடியுமா என்பதைப் புரிந்து கொள்ளவும், இதற்கு நிறைய CPU நேரம் எடுக்கும்.

உலகின் நிலையில் ஏற்படும் முக்கியமான மாற்றங்களை, அவை நிகழும்போது செயலாக்கப்படும் நிகழ்வுகளாகக் கருதலாம். FSM ஆனது "எனது முகவர் பிளேயரைப் பார்க்க முடியுமா?" என்ற நிலைமாற்ற நிலையைச் சரிபார்ப்பதற்குப் பதிலாக, ஒவ்வொரு ஃப்ரேமிலும் ஒரு தனி அமைப்பைக் கட்டமைக்க முடியும். இதன் விளைவாக காசோலை கடந்து செல்லும் போது பிளேயர் சீன் வழங்க வேண்டும்.

இது FSM க்கு அனுப்பப்பட்டது, இது இப்போது Player Seen நிகழ்வைப் பெற்ற நிபந்தனைக்குச் சென்று அதற்கேற்ப பதிலளிக்க வேண்டும். பதிலளிப்பதற்கு முன் கிட்டத்தட்ட புரிந்துகொள்ள முடியாத தாமதத்தைத் தவிர, விளைவான நடத்தை ஒரே மாதிரியாக இருக்கும். ஆனால் Sense பகுதியை நிரலின் தனி பகுதியாக பிரித்ததன் விளைவாக செயல்திறன் மேம்பட்டுள்ளது.

படிநிலை வரையறுக்கப்பட்ட நிலை இயந்திரம்

இருப்பினும், பெரிய FSM களுடன் பணிபுரிவது எப்போதும் வசதியானது அல்ல. நாம் தாக்குதல் நிலையை விரிவுபடுத்தி கைகலப்பு மற்றும் ரேஞ்ச் அட்டாக்கிங் என பிரிக்க விரும்பினால், தாக்கும் நிலைக்கு (தற்போதைய மற்றும் எதிர்காலம்) வழிவகுக்கும் மற்ற எல்லா நிலைகளிலிருந்தும் மாற்றங்களை மாற்ற வேண்டும்.

எங்கள் எடுத்துக்காட்டில் நிறைய நகல் மாற்றங்கள் இருப்பதை நீங்கள் கவனித்திருக்கலாம். செயலற்ற நிலையில் உள்ள பெரும்பாலான மாற்றங்கள் ரோந்து நிலையின் மாற்றங்களுக்கு ஒத்ததாக இருக்கும். குறிப்பாக இதே போன்ற நிலைகளைச் சேர்த்தால், மீண்டும் மீண்டும் செய்யாமல் இருப்பது நல்லது. "போர் அல்லாத" என்ற பொது லேபிளின் கீழ் ஐட்லிங் மற்றும் ரோந்துப் பணியை குழுவாக்குவது அர்த்தமுள்ளதாக இருக்கிறது, அங்கு ஒரே ஒரு பொதுவான நிலைமாற்றம் மட்டுமே மாநிலங்களை எதிர்த்துப் போராடுகிறது. இந்த லேபிளை ஒரு மாநிலமாக நாம் நினைத்தால், சும்மா இருப்பதும் ரோந்து செல்வதும் துணை நிலைகளாக மாறும். ஒரு புதிய போர் அல்லாத துணைநிலைக்கு தனி மாற்றம் அட்டவணையைப் பயன்படுத்துவதற்கான எடுத்துக்காட்டு:

முக்கிய மாநிலங்கள்:
கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

போர் நிலை இல்லை:
கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

மற்றும் வரைபட வடிவில்:

கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

இது அதே அமைப்பு, ஆனால் இட்லிங் மற்றும் ரோந்து ஆகியவற்றை உள்ளடக்கிய புதிய போர் அல்லாத நிலை. துணை நிலைகளுடன் கூடிய எஃப்எஸ்எம் கொண்டிருக்கும் ஒவ்வொரு மாநிலத்திலும் (இந்த துணை நிலைகள், அவற்றின் சொந்த எஃப்எஸ்எம்களைக் கொண்டிருக்கும் - மற்றும் உங்களுக்குத் தேவைப்படும் வரை), நாங்கள் ஒரு படிநிலை வரையறுக்கப்பட்ட நிலை இயந்திரம் அல்லது HFSM (படிநிலை வரையறுக்கப்பட்ட நிலை இயந்திரம்) பெறுகிறோம். போரிடாத நிலையைத் தொகுப்பதன் மூலம், தேவையற்ற மாற்றங்களை நாங்கள் வெட்டுகிறோம். பொதுவான மாற்றங்களைக் கொண்ட எந்தப் புதிய மாநிலங்களுக்கும் நாம் இதைச் செய்யலாம். எடுத்துக்காட்டாக, எதிர்காலத்தில் நாம் தாக்கும் நிலையைக் கைகலப்பு மற்றும் ஏவுகணைத் தாக்குதல் மாநிலங்களுக்கு விரிவுபடுத்தினால், அவை எதிரிக்கான தூரம் மற்றும் வெடிமருந்துகள் கிடைப்பதன் அடிப்படையில் ஒருவருக்கொருவர் மாறக்கூடிய துணை நிலைகளாக இருக்கும். இதன் விளைவாக, சிக்கலான நடத்தைகள் மற்றும் துணை நடத்தைகள் குறைந்தபட்ச நகல் மாற்றங்களுடன் குறிப்பிடப்படலாம்.

நடத்தை மரம்

HFSM உடன், நடத்தைகளின் சிக்கலான சேர்க்கைகள் எளிமையான முறையில் உருவாக்கப்படுகின்றன. இருப்பினும், மாற்றம் விதிகள் வடிவில் முடிவெடுப்பது தற்போதைய நிலையுடன் நெருக்கமாக தொடர்புடையது என்பதில் சிறிய சிரமம் உள்ளது. மேலும் பல விளையாட்டுகளில் இதுவே தேவை. மேலும் மாநில வரிசைமுறையை கவனமாகப் பயன்படுத்துவது, மாறுதல் மறுநிகழ்வுகளின் எண்ணிக்கையைக் குறைக்கலாம். ஆனால் சில சமயங்களில் நீங்கள் எந்த மாநிலத்தில் இருந்தாலும் செயல்படும் அல்லது எந்த மாநிலத்திலும் பொருந்தக்கூடிய விதிகள் தேவை. எடுத்துக்காட்டாக, ஒரு முகவரின் உடல்நிலை 25% ஆகக் குறைந்தால், அவர் சண்டையில் இருந்தாரா, சும்மா இருந்தாரா அல்லது பேசுகிறாரா என்பதைப் பொருட்படுத்தாமல் அவர் ஓடிவிட வேண்டும் என்று நீங்கள் விரும்புவீர்கள் - ஒவ்வொரு மாநிலத்திலும் இந்த நிலையை நீங்கள் சேர்க்க வேண்டும். உங்கள் வடிவமைப்பாளர் பின்னர் குறைந்த சுகாதார வரம்பை 25% இலிருந்து 10% ஆக மாற்ற விரும்பினால், இதை மீண்டும் செய்ய வேண்டும்.

வெறுமனே, இந்த சூழ்நிலைக்கு ஒரு இடத்தில் மட்டுமே மாற்றங்களைச் செய்வதற்கும், மாறுதல் நிலைமைகளைத் தொடாததற்கும், "எந்த நிலையில் இருக்க வேண்டும்" என்பது பற்றிய முடிவுகள் மாநிலங்களுக்கு வெளியே இருக்கும் ஒரு அமைப்பு தேவைப்படுகிறது. நடத்தை மரங்கள் இங்கே தோன்றும்.

அவற்றைச் செயல்படுத்த பல வழிகள் உள்ளன, ஆனால் சாராம்சம் அனைவருக்கும் ஒரே மாதிரியானது மற்றும் முடிவு மரத்தைப் போன்றது: அல்காரிதம் ஒரு "ரூட்" முனையுடன் தொடங்குகிறது, மேலும் மரத்தில் முடிவுகள் அல்லது செயல்களைக் குறிக்கும் முனைகள் உள்ளன. இருப்பினும் சில முக்கிய வேறுபாடுகள் உள்ளன:

  • முனைகள் இப்போது மூன்று மதிப்புகளில் ஒன்றை வழங்கும்: வெற்றியடைந்தது (வேலை முடிந்தால்), தோல்வியடைந்தது (அதைத் தொடங்க முடியாவிட்டால்) அல்லது இயங்குகிறது (அது இன்னும் இயங்கிக் கொண்டிருந்தாலும், இறுதி முடிவு இல்லை என்றால்).
  • இரண்டு மாற்றுகளுக்கு இடையே தேர்வு செய்ய முடிவெடுக்கும் முனைகள் எதுவும் இல்லை. அதற்கு பதிலாக, அவை டெக்கரேட்டர் முனைகளாகும், இதில் ஒரு குழந்தை முனை உள்ளது. அவர்கள் வெற்றி பெற்றால், அவர்கள் தங்கள் ஒரே குழந்தை முனையை இயக்குகிறார்கள்.
  • செயல்களைச் செய்யும் முனைகள், நிகழ்த்தப்படும் செயல்களைக் குறிக்க, இயங்கும் மதிப்பை வழங்கும்.

இந்த சிறிய கணுக்களின் தொகுப்பை ஒன்றிணைத்து அதிக எண்ணிக்கையிலான சிக்கலான நடத்தைகளை உருவாக்க முடியும். முந்தைய எடுத்துக்காட்டில் இருந்து HFSM காவலரை ஒரு நடத்தை மரமாக கற்பனை செய்வோம்:

கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

இந்தக் கட்டமைப்பின் மூலம் செயலற்ற நிலை/ ரோந்து நிலைகளில் இருந்து தாக்குதல் அல்லது வேறு எந்த மாநிலங்களுக்கும் வெளிப்படையான மாற்றம் இருக்கக்கூடாது. ஒரு எதிரி தெரியும் மற்றும் பாத்திரத்தின் உடல்நிலை குறைவாக இருந்தால், அது எந்த முனையை முன்பு இயக்கியிருந்தாலும் - ரோந்து, செயலற்ற நிலை, தாக்குதல் அல்லது வேறு ஏதேனும் ஒன்றைப் பொருட்படுத்தாமல், ஃப்ளீயிங் முனையில் மரணதண்டனை நிறுத்தப்படும்.

கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

நடத்தை மரங்கள் சிக்கலானவை - அவற்றை உருவாக்க பல வழிகள் உள்ளன, மேலும் அலங்காரங்கள் மற்றும் கலவை முனைகளின் சரியான கலவையைக் கண்டறிவது சவாலானது. மரத்தை எவ்வளவு அடிக்கடி சரிபார்ப்பது என்பது பற்றிய கேள்விகளும் உள்ளன - அதன் ஒவ்வொரு பகுதியையும் நாம் பார்க்க விரும்புகிறோமா அல்லது நிபந்தனைகளில் ஒன்று மாறும்போது மட்டும் செல்ல வேண்டுமா? கணுக்கள் தொடர்பான நிலையை எவ்வாறு சேமிப்பது - நாம் 10 வினாடிகள் செயலற்ற நிலையில் இருந்ததை எவ்வாறு அறிவது அல்லது கடைசியாக எந்த முனைகளை இயக்குகிறது என்பதை எவ்வாறு அறிவது, அதனால் வரிசையை சரியாகச் செயல்படுத்த முடியும்?

அதனால்தான் பல நடைமுறைகள் உள்ளன. எடுத்துக்காட்டாக, சில அமைப்புகள் டெக்கரேட்டர் நோட்களை இன்லைன் டெக்கரேட்டர்களுடன் மாற்றியுள்ளன. அலங்கார நிலைமைகள் மாறும்போது அவை மரத்தை மறு மதிப்பீடு செய்கின்றன, முனைகளில் சேர உதவுகின்றன, மேலும் அவ்வப்போது புதுப்பிப்புகளை வழங்குகின்றன.

பயன்பாட்டு அடிப்படையிலான அமைப்பு

சில விளையாட்டுகளில் பலவிதமான இயக்கவியல் உள்ளது. எளிய மற்றும் பொதுவான மாறுதல் விதிகளின் அனைத்து நன்மைகளையும் அவர்கள் பெறுவது விரும்பத்தக்கது, ஆனால் முழுமையான நடத்தை மரத்தின் வடிவத்தில் அவசியமில்லை. தெளிவான தேர்வுகள் அல்லது சாத்தியமான செயல்களின் மரத்தை வைத்திருப்பதற்குப் பதிலாக, எல்லா செயல்களையும் ஆராய்ந்து, இந்த நேரத்தில் மிகவும் பொருத்தமான ஒன்றைத் தேர்ந்தெடுப்பது எளிது.

பயன்பாட்டு அடிப்படையிலான அமைப்பு இதற்கு உதவும். இது ஒரு அமைப்பாகும், இதில் முகவர் பல்வேறு செயல்களைக் கொண்டுள்ளார் மற்றும் ஒவ்வொன்றின் ஒப்பீட்டு பயன்பாட்டின் அடிப்படையில் எதைச் செய்ய வேண்டும் என்பதைத் தேர்ந்தெடுக்கிறார். இந்தச் செயலைச் செய்வது முகவருக்கு எவ்வளவு முக்கியமானது அல்லது விரும்பத்தக்கது என்பதற்கான தன்னிச்சையான அளவீடு பயன்பாடு.

தற்போதைய நிலை மற்றும் சூழலின் அடிப்படையில் ஒரு செயலின் கணக்கிடப்பட்ட பயன்பாடு, முகவர் எந்த நேரத்திலும் சரிபார்த்து மிகவும் பொருத்தமான பிற நிலையைத் தேர்ந்தெடுக்கலாம். தற்போதைய நிலை உட்பட, ஒவ்வொரு சாத்தியமான நிலைக்கான மதிப்பீட்டின் மூலம் மாற்றங்கள் தீர்மானிக்கப்படுவதைத் தவிர, இது FSM போன்றது. நகர்த்துவதற்கு மிகவும் பயனுள்ள செயலை நாங்கள் தேர்வு செய்கிறோம் என்பதை நினைவில் கொள்ளவும் (அல்லது நாங்கள் ஏற்கனவே அதை முடித்திருந்தால் தொடரவும்). அதிக வகைகளுக்கு, இது ஒரு சிறிய பட்டியலில் இருந்து சீரான ஆனால் சீரற்ற தேர்வாக இருக்கலாம்.

கணினி தன்னிச்சையான பயன்பாட்டு மதிப்புகளை வழங்குகிறது - எடுத்துக்காட்டாக, 0 (முற்றிலும் விரும்பத்தகாதது) முதல் 100 (முற்றிலும் விரும்பத்தக்கது). ஒவ்வொரு செயலும் இந்த மதிப்பின் கணக்கீட்டை பாதிக்கும் பல அளவுருக்கள் உள்ளன. எங்கள் பாதுகாவலர் உதாரணத்திற்குத் திரும்புகிறோம்:

கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

செயல்களுக்கு இடையிலான மாற்றங்கள் தெளிவற்றவை-எந்தவொரு மாநிலமும் வேறு எதையும் பின்பற்றலாம். திரும்பிய பயன்பாட்டு மதிப்புகளில் செயல் முன்னுரிமைகள் காணப்படுகின்றன. ஒரு எதிரி தெரிந்தால், அந்த எதிரி பலமாக இருந்தால், மற்றும் கதாபாத்திரத்தின் ஆரோக்கியம் குறைவாக இருந்தால், Fleeing மற்றும் FindingHelp இரண்டும் அதிக பூஜ்ஜியமற்ற மதிப்புகளை வழங்கும். இந்த வழக்கில், FindingHelp எப்போதும் அதிகமாக இருக்கும். அதேபோல், போர் அல்லாத செயல்பாடுகள் 50க்கு மேல் திரும்பப் பெறுவதில்லை, எனவே அவை எப்போதும் போர்களை விட குறைவாகவே இருக்கும். செயல்களை உருவாக்கி அவற்றின் பயன்பாட்டைக் கணக்கிடும்போது இதை நீங்கள் கணக்கில் எடுத்துக்கொள்ள வேண்டும்.

எங்கள் எடுத்துக்காட்டில், செயல்கள் நிலையான நிலையான மதிப்பை அல்லது இரண்டு நிலையான மதிப்புகளில் ஒன்றை வழங்கும். மிகவும் யதார்த்தமான அமைப்பு மதிப்புகளின் தொடர்ச்சியான வரம்பிலிருந்து மதிப்பீட்டை வழங்கும். எடுத்துக்காட்டாக, முகவரின் உடல்நிலை குறைவாக இருந்தால் தப்பிக்கும் நடவடிக்கை அதிக பயன்பாட்டு மதிப்புகளை வழங்குகிறது, மேலும் எதிரி மிகவும் வலிமையாக இருந்தால் தாக்குதல் நடவடிக்கை குறைந்த பயன்பாட்டு மதிப்புகளை வழங்குகிறது. இதன் காரணமாக, எதிரியை தோற்கடிக்க போதுமான உடல்நிலை தனக்கு இல்லை என்று முகவர் உணரும் எந்த சூழ்நிலையிலும் தாக்குதலை விட தப்பி ஓடுதல் நடவடிக்கை முதன்மை பெறுகிறது. இது எந்த அளவுகோல்களின் அடிப்படையில் செயல்களுக்கு முன்னுரிமை அளிக்க அனுமதிக்கிறது, இந்த அணுகுமுறையை நடத்தை மரம் அல்லது FSM ஐ விட நெகிழ்வானதாகவும் மாறக்கூடியதாகவும் ஆக்குகிறது.

ஒவ்வொரு செயலுக்கும் நிரல் கணக்கீட்டிற்கு பல நிபந்தனைகள் உள்ளன. அவை ஸ்கிரிப்டிங் மொழியில் அல்லது கணித சூத்திரங்களின் வரிசையாக எழுதப்படலாம். ஒரு கதாபாத்திரத்தின் தினசரி வழக்கத்தை உருவகப்படுத்தும் சிம்ஸ், கணக்கீட்டின் கூடுதல் அடுக்கைச் சேர்க்கிறது - ஏஜென்ட் பயன்பாட்டு மதிப்பீடுகளை பாதிக்கும் தொடர்ச்சியான "உந்துதல்களை" பெறுகிறது. ஒரு பாத்திரம் பசியுடன் இருந்தால், அவர்கள் காலப்போக்கில் இன்னும் பசியுடன் இருப்பார்கள், மேலும் பாத்திரம் அதைச் செய்யும் வரை EatFood செயலின் பயன்பாட்டு மதிப்பு அதிகரிக்கும், பசியின் அளவைக் குறைத்து, EatFood மதிப்பை பூஜ்ஜியமாக மாற்றும்.

மதிப்பீட்டு முறையின் அடிப்படையில் செயல்களைத் தேர்ந்தெடுக்கும் யோசனை மிகவும் எளிமையானது, எனவே பயன்பாட்டு அடிப்படையிலான அமைப்பை AI முடிவெடுக்கும் செயல்முறைகளின் ஒரு பகுதியாகப் பயன்படுத்தலாம், அவற்றுக்கான முழுமையான மாற்றாக அல்ல. முடிவு மரம் இரண்டு குழந்தை முனைகளின் பயன்பாட்டு மதிப்பீட்டைக் கேட்கலாம் மற்றும் உயர்ந்ததைத் தேர்ந்தெடுக்கலாம். இதேபோல், ஒரு நடத்தை மரமானது, எந்தக் குழந்தையைச் செயல்படுத்த வேண்டும் என்பதைத் தீர்மானிப்பதற்கான செயல்களின் பயன்பாட்டை மதிப்பிடுவதற்கு ஒரு கூட்டு பயன்பாட்டு முனையைக் கொண்டிருக்கலாம்.

இயக்கம் மற்றும் வழிசெலுத்தல்

முந்தைய எடுத்துக்காட்டுகளில், எங்களிடம் ஒரு தளம் இருந்தது, அது இடது அல்லது வலதுபுறமாக நகர்த்தப்பட்டது, மேலும் ரோந்து அல்லது தாக்கும் காவலாளி. ஆனால் ஒரு குறிப்பிட்ட காலத்திற்கு முகவர் இயக்கத்தை எவ்வாறு சரியாகக் கையாள்வது? நாம் எப்படி வேகத்தை அமைப்பது, தடைகளைத் தவிர்ப்பது எப்படி, இலக்கை அடைவது ஒரு நேர்கோட்டில் செல்வதை விட கடினமானதாக இருக்கும் போது எப்படி ஒரு வழியை திட்டமிடுவது? இதைப் பார்ப்போம்.

மேலாண்மை

ஆரம்ப கட்டத்தில், ஒவ்வொரு முகவருக்கும் ஒரு வேக மதிப்பு உள்ளது, அது எவ்வளவு வேகமாக நகர்கிறது மற்றும் எந்த திசையில் செல்கிறது என்பதை உள்ளடக்கியது. இது ஒரு வினாடிக்கு மீட்டர், ஒரு மணி நேரத்திற்கு கிலோமீட்டர்கள், வினாடிக்கு பிக்சல்கள் போன்றவற்றில் அளவிடப்படலாம். சென்ஸ்/திங்க்/ஆக்ட் லூப்பை நினைவுபடுத்தினால், திங்க் பகுதி ஒரு வேகத்தைத் தேர்ந்தெடுக்கிறது, மேலும் செயல் பகுதி அந்த வேகத்தை முகவருக்குப் பயன்படுத்துகிறது என்று நாம் கற்பனை செய்யலாம். பொதுவாக விளையாட்டுகளில் இயற்பியல் அமைப்பு உள்ளது, அது உங்களுக்காக இந்தப் பணியைச் செய்கிறது, ஒவ்வொரு பொருளின் வேக மதிப்பைக் கற்று அதைச் சரிசெய்கிறது. எனவே, நீங்கள் ஒரு பணியுடன் AI ஐ விட்டுவிடலாம் - முகவர் எந்த வேகத்தில் இருக்க வேண்டும் என்பதை தீர்மானிக்க. முகவர் எங்கு இருக்க வேண்டும் என்பது உங்களுக்குத் தெரிந்தால், நீங்கள் அதை சரியான திசையில் ஒரு குறிப்பிட்ட வேகத்தில் நகர்த்த வேண்டும். மிகவும் அற்பமான சமன்பாடு:

விரும்பிய_பயணம் = destination_position – agent_position

2டி உலகத்தை கற்பனை செய்து பாருங்கள். முகவர் புள்ளியில் (-2,-2), இலக்கு வடகிழக்கில் எங்காவது புள்ளியில் (30, 20) உள்ளது, மேலும் முகவர் அங்கு செல்வதற்கு தேவையான பாதை (32, 22). இந்த நிலைகள் மீட்டரில் அளவிடப்படுகின்றன என்று வைத்துக் கொள்வோம் - ஏஜெண்டின் வேகத்தை வினாடிக்கு 5 மீட்டர் என்று எடுத்துக் கொண்டால், நமது இடப்பெயர்ச்சி வெக்டரை அளந்து தோராயமாக (4.12, 2.83) வேகத்தைப் பெறுவோம். இந்த அளவுருக்கள் மூலம், முகவர் கிட்டத்தட்ட 8 வினாடிகளில் அதன் இலக்கை அடைந்துவிடுவார்.

நீங்கள் எந்த நேரத்திலும் மதிப்புகளை மீண்டும் கணக்கிடலாம். முகவர் இலக்கை அடைய பாதி தூரத்தில் இருந்தால், இயக்கம் பாதி நீளமாக இருக்கும், ஆனால் ஏஜென்ட்டின் அதிகபட்ச வேகம் 5 மீ/வி (இதை மேலே முடிவு செய்துள்ளோம்) என்பதால் வேகம் ஒரே மாதிரியாக இருக்கும். இது இலக்குகளை நகர்த்துவதற்கும் வேலை செய்கிறது, முகவர் நகரும் போது சிறிய மாற்றங்களைச் செய்ய அனுமதிக்கிறது.

ஆனால் நாம் இன்னும் மாறுபாடுகளை விரும்புகிறோம் - எடுத்துக்காட்டாக, ஒரு பாத்திரம் நிற்பதிலிருந்து இயங்குவதை உருவகப்படுத்த வேகத்தை மெதுவாக அதிகரிக்கிறது. அதையே நிறுத்தும் முன் கடைசியிலும் செய்யலாம். இந்த அம்சங்கள் திசைமாற்றி நடத்தைகள் என அறியப்படுகின்றன, ஒவ்வொன்றும் குறிப்பிட்ட பெயர்களைக் கொண்டுள்ளன: சீக், ஃப்ளீ, அரைவல், முதலியன. முகவரின் நிலை மற்றும் தற்போதைய வேகத்தை இலக்குடன் ஒப்பிடுவதன் அடிப்படையில், முகவரின் வேகத்தில் முடுக்கம் சக்திகள் பயன்படுத்தப்படலாம் என்பது கருத்து. இலக்கை நோக்கி நகரும் வெவ்வேறு முறைகளைப் பயன்படுத்துவதற்காக.

ஒவ்வொரு நடத்தைக்கும் சற்று வித்தியாசமான நோக்கம் உள்ளது. தேடுதல் மற்றும் வருகை ஆகியவை ஒரு முகவரை இலக்குக்கு நகர்த்துவதற்கான வழிகள். தடையைத் தவிர்ப்பது மற்றும் பிரித்தல் இலக்கை நோக்கிச் செல்லும் வழியில் தடைகளைத் தவிர்க்க முகவரின் இயக்கத்தைச் சரிசெய்கிறது. சீரமைப்பு மற்றும் ஒருங்கிணைப்பு முகவர்களை ஒன்றாக நகர்த்துகிறது. அனைத்து காரணிகளையும் கணக்கில் எடுத்துக்கொண்டு ஒற்றை பாதை வெக்டரை உருவாக்க பல்வேறு திசைமாற்றி நடத்தைகளின் எண்ணிக்கையை சுருக்கலாம். சுவர்கள் மற்றும் பிற முகவர்களிடமிருந்து விலகி இருக்க வருகை, பிரித்தல் மற்றும் இடையூறு தவிர்ப்பு நடத்தைகளைப் பயன்படுத்தும் முகவர். இந்த அணுகுமுறை தேவையற்ற விவரங்கள் இல்லாமல் திறந்த இடங்களில் நன்றாக வேலை செய்கிறது.

மிகவும் கடினமான சூழ்நிலைகளில், வெவ்வேறு நடத்தைகளைச் சேர்ப்பது மோசமாக வேலை செய்கிறது - எடுத்துக்காட்டாக, வருகை மற்றும் தடைகளைத் தவிர்ப்பது ஆகியவற்றுக்கு இடையேயான மோதல் காரணமாக ஒரு முகவர் சுவரில் சிக்கிக்கொள்ளலாம். எனவே, அனைத்து மதிப்புகளையும் சேர்ப்பதை விட சிக்கலான விருப்பங்களை நீங்கள் கருத்தில் கொள்ள வேண்டும். வழி இதுதான்: ஒவ்வொரு நடத்தையின் முடிவுகளைச் சேர்ப்பதற்குப் பதிலாக, நீங்கள் வெவ்வேறு திசைகளில் இயக்கத்தைக் கருத்தில் கொண்டு சிறந்த விருப்பத்தைத் தேர்வு செய்யலாம்.

எவ்வாறாயினும், முட்டுச்சந்துகள் மற்றும் எந்த வழியில் செல்ல வேண்டும் என்பது பற்றிய தேர்வுகள் கொண்ட சிக்கலான சூழலில், இன்னும் மேம்பட்ட ஒன்று நமக்குத் தேவைப்படும்.

ஒரு வழியைக் கண்டறிதல்

திசைமாற்றி நடத்தைகள் திறந்த பகுதியில் (கால்பந்து மைதானம் அல்லது அரங்கம்) எளிமையான இயக்கத்திற்கு சிறந்தது, அங்கு A இலிருந்து B க்கு செல்வது தடைகளைச் சுற்றி சிறிய மாற்றுப்பாதைகள் கொண்ட நேரான பாதையாகும். சிக்கலான பாதைகளுக்கு, உலகை ஆராய்வதற்கும் அதன் வழியாக ஒரு பாதையைத் தீர்மானிப்பதற்குமான பாதைக் கண்டுபிடிப்பு நமக்குத் தேவை.

முகவருக்கு அடுத்துள்ள ஒவ்வொரு சதுரத்திற்கும் ஒரு கட்டத்தைப் பயன்படுத்துவதும், அவற்றில் எதை நகர்த்த அனுமதிக்கப்படுகிறது என்பதை மதிப்பிடுவதும் எளிமையானது. அவற்றில் ஒன்று சேருமிடமாக இருந்தால், ஒவ்வொரு சதுரத்திலிருந்தும் முந்தைய இடத்திற்குச் செல்லும் பாதையை நீங்கள் தொடக்கத்தை அடையும் வரை பின்பற்றவும். இதுதான் பாதை. இல்லையெனில், உங்கள் இலக்கைக் கண்டறியும் வரை அல்லது உங்கள் சதுரங்கள் தீரும் வரை (சாத்தியமான வழி இல்லை என்று பொருள்) அருகிலுள்ள பிற சதுரங்களுடன் செயல்முறையை மீண்டும் செய்யவும். இது முறையாக அகலம்-முதல் தேடல் அல்லது BFS (அகலம்-முதல் தேடல் அல்காரிதம்) என அழைக்கப்படுகிறது. ஒவ்வொரு அடியிலும் அவர் எல்லா திசைகளிலும் பார்க்கிறார் (எனவே அகலம், "அகலம்"). தேடல் இடம், விரும்பிய இடத்தை அடையும் வரை நகரும் அலைமுனை போன்றது - இறுதிப் புள்ளி சேர்க்கப்படும் வரை ஒவ்வொரு படியிலும் தேடல் இடம் விரிவடைகிறது, அதன் பிறகு அதை ஆரம்பம் வரை காணலாம்.

கேமிங் AI ஐ எவ்வாறு உருவாக்குவது: ஆரம்பநிலைக்கான வழிகாட்டி

இதன் விளைவாக, விரும்பிய பாதை தொகுக்கப்பட்ட சதுரங்களின் பட்டியலைப் பெறுவீர்கள். இதுவே பாதை (எனவே, பாதை கண்டறிதல்) - இலக்கைப் பின்தொடரும் போது முகவர் பார்வையிடும் இடங்களின் பட்டியல்.

உலகில் உள்ள ஒவ்வொரு சதுரத்தின் நிலையையும் நாம் அறிந்திருப்பதால், பாதையில் செல்ல ஸ்டீயரிங் நடத்தைகளைப் பயன்படுத்தலாம் - முனை 1 முதல் முனை 2 வரை, பின்னர் முனை 2 முதல் முனை 3 வரை, மற்றும் பல. எளிமையான விருப்பம் அடுத்த சதுரத்தின் மையத்தை நோக்கிச் செல்வது, ஆனால் தற்போதைய சதுரத்திற்கும் அடுத்த சதுரத்திற்கும் இடையில் விளிம்பின் நடுவில் நிறுத்துவது இன்னும் சிறந்த விருப்பமாகும். இதன் காரணமாக, முகவர் கூர்மையான திருப்பங்களில் மூலைகளை வெட்ட முடியும்.

BFS அல்காரிதம் குறைபாடுகளையும் கொண்டுள்ளது - இது "சரியான" திசையில் உள்ள "தவறான" திசையில் பல சதுரங்களை ஆராய்கிறது. இங்குதான் A* (ஒரு நட்சத்திரம்) எனப்படும் மிகவும் சிக்கலான அல்காரிதம் செயல்பாட்டுக்கு வருகிறது. இது அதே வழியில் செயல்படுகிறது, ஆனால் அண்டை சதுரங்களை கண்மூடித்தனமாக ஆராய்வதற்குப் பதிலாக (பின்னர் அண்டை வீட்டாரின் அண்டை வீட்டார், பின்னர் அண்டை வீட்டாரின் அண்டை வீட்டாரின் அயலவர்கள், மற்றும் பல), இது முனைகளை ஒரு பட்டியலாகச் சேகரித்து அவற்றை வரிசைப்படுத்துகிறது, இதனால் ஆய்வு செய்யப்படும் அடுத்த முனை எப்போதும் இருக்கும் குறுகிய பாதையில் செல்லும் ஒன்று. கணுக்கள் இரண்டு விஷயங்களைக் கணக்கில் எடுத்துக் கொள்ளும் ஒரு ஹூரிஸ்டிக் அடிப்படையில் வரிசைப்படுத்தப்படுகின்றன - விரும்பிய சதுரத்திற்கு ஒரு அனுமான வழியின் "செலவு" (எந்தவொரு பயணச் செலவுகளும் உட்பட) மற்றும் அந்த சதுரம் இலக்கிலிருந்து எவ்வளவு தூரம் உள்ளது (தேடலில் ஒரு சார்பு சரியான திசை).

கேமிங் 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* என்பது சிறந்த முதல் தேடலின் ஒரு வடிவம் - ஆரம்பத்தில் இருந்தே மிகவும் நம்பிக்கைக்குரிய வழிகளை ஆராய்வதன் மூலம், பிற விருப்பங்களைச் சரிபார்க்காமல் ஏற்கனவே சிறந்த பாதையைக் கண்டறிய முடியும்.

ஒரு சுவாரஸ்யமான மற்றும் பெருகிய முறையில் பிரபலமான சிறந்த முதல் தேடல் விருப்பம் Monte Carlo Tree Search ஆகும். ஒவ்வொரு அடுத்தடுத்த செயலையும் தேர்ந்தெடுக்கும் போது, ​​எந்தத் திட்டங்கள் மற்றவற்றை விட சிறந்தவை என்று யூகிப்பதற்குப் பதிலாக, அல்காரிதம் முடிவடையும் வரை (திட்டம் வெற்றி அல்லது தோல்வியில் விளைந்த போது) ஒவ்வொரு படியிலும் சீரற்ற வாரிசுகளைத் தேர்ந்தெடுக்கிறது. முந்தைய விருப்பங்களின் எடையை அதிகரிக்க அல்லது குறைக்க இறுதி முடிவு பயன்படுத்தப்படுகிறது. இந்த செயல்முறையை தொடர்ச்சியாக பல முறை செய்வதன் மூலம், நிலைமை மாறினாலும் (எதிரி பிளேயரில் தலையிட நடவடிக்கை எடுத்தால்) சிறந்த அடுத்த நகர்வு என்ன என்பதை அல்காரிதம் நன்கு மதிப்பிடுகிறது.

இலக்கு சார்ந்த செயல் திட்டமிடல் அல்லது GOAP (இலக்கு சார்ந்த செயல் திட்டமிடல்) இல்லாமல் விளையாட்டுகளில் திட்டமிடல் பற்றிய எந்த கதையும் முழுமையடையாது. இது பரவலாகப் பயன்படுத்தப்படும் மற்றும் விவாதிக்கப்பட்ட முறையாகும், ஆனால் சில தனித்துவமான விவரங்களைத் தவிர, இது அடிப்படையில் நாம் முன்பு பேசிய பின்னோக்கி சங்கிலி முறை ஆகும். "பிளேயரை அழிப்பதே" குறிக்கோளாக இருந்தால், வீரர் மறைவுக்குப் பின்னால் இருந்தால், திட்டமாக இருக்கலாம்: ஒரு கையெறி குண்டு கொண்டு அழிக்கவும் → அதைப் பெறவும் → தூக்கி எறியுங்கள்.

பொதுவாக பல இலக்குகள் உள்ளன, ஒவ்வொன்றும் அதன் சொந்த முன்னுரிமையுடன். மிக உயர்ந்த முன்னுரிமை நோக்கத்தை முடிக்க முடியாவிட்டால் (எந்தவிதமான செயல்களும் "பிளயரைக் கொல்லும்" திட்டத்தை உருவாக்காது, ஏனெனில் பிளேயர் தெரியவில்லை), AI குறைந்த முன்னுரிமை நோக்கங்களுக்குத் திரும்பும்.

பயிற்சி மற்றும் தழுவல்

கேம் AI பொதுவாக இயந்திர கற்றலைப் பயன்படுத்தாது என்று நாங்கள் ஏற்கனவே கூறியுள்ளோம், ஏனெனில் இது உண்மையான நேரத்தில் முகவர்களை நிர்வகிப்பதற்கு ஏற்றது அல்ல. ஆனால் இந்த பகுதியில் இருந்து நீங்கள் ஏதாவது கடன் வாங்க முடியாது என்று அர்த்தம் இல்லை. ஒரு துப்பாக்கி சுடும் போட்டியில் எதிராளியை நாங்கள் விரும்புகிறோம், அவர்களிடமிருந்து நாம் ஏதாவது கற்றுக்கொள்ளலாம். எடுத்துக்காட்டாக, வரைபடத்தில் சிறந்த நிலைகளைப் பற்றி அறியவும். அல்லது ஒரு சண்டை விளையாட்டில் எதிராளி, ஆட்டக்காரரின் அடிக்கடி பயன்படுத்தப்படும் சேர்க்கை நகர்வுகளைத் தடுத்து, மற்றவர்களைப் பயன்படுத்த அவரைத் தூண்டுவார். எனவே இயந்திர கற்றல் இத்தகைய சூழ்நிலைகளில் மிகவும் பயனுள்ளதாக இருக்கும்.

புள்ளிவிவரங்கள் மற்றும் நிகழ்தகவுகள்

சிக்கலான எடுத்துக்காட்டுகளுக்குள் செல்வதற்கு முன், சில எளிய அளவீடுகளை எடுத்து அவற்றைப் பயன்படுத்தி முடிவுகளை எடுப்பதன் மூலம் நாம் எவ்வளவு தூரம் செல்ல முடியும் என்பதைப் பார்ப்போம். எடுத்துக்காட்டாக, நிகழ்நேர உத்தி - விளையாட்டின் முதல் சில நிமிடங்களில் ஒரு வீரர் தாக்குதலைத் தொடங்க முடியுமா என்பதை எவ்வாறு தீர்மானிப்பது மற்றும் இதற்கு எதிராக என்ன தற்காப்பு தயார் செய்வது? எதிர்கால எதிர்வினைகள் என்னவாக இருக்கும் என்பதைப் புரிந்துகொள்ள, ஒரு வீரரின் கடந்தகால அனுபவங்களை நாம் படிக்கலாம். தொடங்குவதற்கு, அத்தகைய மூல தரவு எங்களிடம் இல்லை, ஆனால் நாம் அதை சேகரிக்க முடியும் - ஒவ்வொரு முறையும் AI ஒரு மனிதனுக்கு எதிராக விளையாடும், அது முதல் தாக்குதலின் நேரத்தை பதிவு செய்யலாம். சில அமர்வுகளுக்குப் பிறகு, எதிர்காலத்தில் வீரர் தாக்குவதற்கு எடுக்கும் சராசரி நேரத்தைப் பெறுவோம்.

சராசரி மதிப்புகளில் ஒரு சிக்கல் உள்ளது: ஒரு வீரர் 20 முறை விரைந்து சென்று 20 முறை மெதுவாக விளையாடினால், தேவையான மதிப்புகள் எங்காவது நடுவில் இருக்கும், மேலும் இது எங்களுக்கு பயனுள்ள எதையும் கொடுக்காது. உள்ளீட்டுத் தரவைக் கட்டுப்படுத்துவது ஒரு தீர்வாகும் - கடைசி 20 துண்டுகளை கணக்கில் எடுத்துக்கொள்ளலாம்.

எதிர்காலத்தில் வீரரின் கடந்தகால விருப்பத்தேர்வுகள் ஒரே மாதிரியாக இருக்கும் என்று கருதி சில செயல்களின் சாத்தியக்கூறுகளை மதிப்பிடும் போது இதேபோன்ற அணுகுமுறை பயன்படுத்தப்படுகிறது. ஒரு வீரர் நம்மை ஐந்து முறை தீப்பந்தாலும், இரண்டு முறை மின்னலாலும், ஒரு முறை கைகலப்பாலும் தாக்கினால், அவர் தீப்பந்தத்தை விரும்புகிறார் என்பது வெளிப்படை. ஃபயர்பால்=62,5%, மின்னல்=25% மற்றும் கைகலப்பு=12,5% ​​என வெவ்வேறு ஆயுதங்களைப் பயன்படுத்துவதற்கான நிகழ்தகவை விரிவுபடுத்திப் பார்ப்போம். எங்கள் விளையாட்டு AI தீயில் இருந்து தன்னைப் பாதுகாத்துக் கொள்ளத் தயாராக வேண்டும்.

மற்றொரு சுவாரசியமான முறை என்னவென்றால், Naive Bayes Classifier ஐப் பயன்படுத்தி பெரிய அளவிலான உள்ளீட்டுத் தரவைப் படித்து நிலைமையை வகைப்படுத்தவும், இதனால் 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 க்கு குறைந்த நினைவகம் தேவைப்படுகிறது ஆனால் குறைந்த வரலாற்றையும் சேமிக்கிறது. எடுத்துக்காட்டாக, 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 ப்ரோ 2: கலெக்டட் விஸ்டம் ஆஃப் கேம் AI வல்லுநர்கள்
கேம் AI ப்ரோ 3: கலெக்டட் விஸ்டம் ஆஃப் கேம் AI வல்லுநர்கள்

2. AI கேம் புரோகிராமிங் விஸ்டம் தொடர் கேம் AI ப்ரோ தொடரின் முன்னோடியாகும். இது பழைய முறைகளைக் கொண்டுள்ளது, ஆனால் கிட்டத்தட்ட அனைத்தும் இன்றும் பொருத்தமானவை.

AI கேம் புரோகிராமிங் விஸ்டம் 1
AI கேம் புரோகிராமிங் விஸ்டம் 2
AI கேம் புரோகிராமிங் விஸ்டம் 3
AI கேம் புரோகிராமிங் விஸ்டம் 4

3. செயற்கை நுண்ணறிவு: ஒரு நவீன அணுகுமுறை செயற்கை நுண்ணறிவின் பொதுவான துறையைப் புரிந்துகொள்ள விரும்பும் அனைவருக்கும் அடிப்படை நூல்களில் ஒன்றாகும். இது விளையாட்டு மேம்பாடு பற்றிய புத்தகம் அல்ல - இது AI இன் அடிப்படைகளை கற்பிக்கிறது.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்