සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

ක්‍රීඩා වල කෘත්‍රිම බුද්ධිය පිළිබඳ රසවත් තොරතුරු කිහිපයක් මට හමු විය. සරල උදාහරණ භාවිතා කරමින් AI පිළිබඳ මූලික කරුණු පැහැදිලි කිරීමත් සමඟ එහි පහසු සංවර්ධනය සහ සැලසුම් කිරීම සඳහා බොහෝ ප්‍රයෝජනවත් මෙවලම් සහ ක්‍රම තිබේ. ඒවා භාවිතා කරන්නේ කෙසේද, කොතැනද සහ කවදාද යන්න ද එහි ඇත.

බොහෝ උදාහරණ ව්‍යාජ කේත වලින් ලියා ඇත, එබැවින් උසස් ක්‍රමලේඛන දැනුමක් අවශ්‍ය නොවේ. කැපීම යටතේ පින්තූර සහ gif සහිත පෙළ පත්‍ර 35 ක් ඇත, එබැවින් සූදානම් වන්න.

UPD මම සමාව ඉල්ලමි, නමුත් මම දැනටමත් Habré හි මෙම ලිපියේ මගේම පරිවර්තනය කර ඇත රෝගියා Zero. ඔබට ඔහුගේ අනුවාදය කියවිය හැකිය මෙහි, නමුත් කිසියම් හේතුවක් නිසා ලිපිය මා පසුකර ගියේය (මම සෙවුම භාවිතා කළ නමුත් යමක් වැරදී ඇත). මම ක්‍රීඩා සංවර්ධනය සඳහා කැප වූ බ්ලොග් අඩවියක ලියන බැවින්, මම මගේ පරිවර්තනයේ අනුවාදය ග්‍රාහකයින් සඳහා තැබීමට තීරණය කළෙමි (සමහර කරුණු වෙනස් ලෙස හැඩගස්වා ඇත, සමහරක් සංවර්ධකයින්ගේ උපදෙස් මත හිතාමතාම මඟ හැර ඇත).

AI යනු කුමක්ද?

Game AI අවධානය යොමු කරන්නේ වස්තුවක් එය පිහිටා ඇති කොන්දේසි මත පදනම්ව සිදු කළ යුතු ක්‍රියා මොනවාද යන්නයි. මෙය සාමාන්‍යයෙන් හඳුන්වනු ලබන්නේ "බුද්ධිමත් නියෝජිත" කළමනාකරණය ලෙසයි, එහිදී නියෝජිතයෙකු යනු ක්‍රීඩක චරිතයක්, වාහනයක්, බොට් එකක් හෝ සමහර විට වඩා වියුක්ත දෙයක් වේ: සමස්ත ආයතන සමූහයක් හෝ ශිෂ්ටාචාරයක් පවා. සෑම අවස්ථාවකදීම, එය එහි පරිසරය දැක, එය මත පදනම්ව තීරණ ගත යුතු සහ ඒවාට අනුකූලව කටයුතු කළ යුතු දෙයකි. මෙය ඉන්ද්‍රිය/චින්තන/ක්‍රියා චක්‍රය ලෙස හැඳින්වේ.

  • හැඟීම: නියෝජිතයා එහි හැසිරීමට බලපෑම් කළ හැකි (අසල තර්ජන, එකතු කිරීමට අයිතම, ගවේෂණය කිරීමට සිත්ගන්නා ස්ථාන) එහි පරිසරයේ ඇති දේවල් පිළිබඳ තොරතුරු සොයා ගනී හෝ ලබා ගනී.
  • සිතන්න: නියෝජිතයා ප්‍රතික්‍රියා කරන ආකාරය තීරණය කරයි (එය අයිතම එකතු කිරීමට ප්‍රමාණවත්ද යන්න හෝ ඔහු මුලින්ම සටන් කළ යුතු/සැඟවිය යුතුද යන්න සලකා බලයි).
  • පනත: පෙර තීරණය ක්‍රියාත්මක කිරීමට නියෝජිතයා ක්‍රියා කරයි (සතුර හෝ වස්තුව දෙසට ගමන් කිරීමට පටන් ගනී).
  • ...දැන් චරිත ක්‍රියාවන් නිසා තත්වය වෙනස් වී ඇති නිසා චක්‍රය නව දත්ත සමඟ නැවත සිදුවේ.

AI ලූපයේ සංවේදී කොටස කෙරෙහි අවධානය යොමු කරයි. උදාහරණයක් ලෙස, ස්වයංක්‍රීය මෝටර් රථ පාරේ පින්තූර ගෙන ඒවා රේඩාර් සහ ලයිඩර් දත්ත සමඟ ඒකාබද්ධ කර ඒවා අර්ථ නිරූපණය කරයි. මෙය සාමාන්‍යයෙන් සිදු කරනු ලබන්නේ යන්ත්‍ර ඉගෙනීම මගිනි, එය එන දත්ත ක්‍රියාවට නංවා එයට අර්ථයක් ලබා දෙයි, “ඔබට යාර 20ක් ඉදිරියෙන් තවත් මෝටර් රථයක් තිබේ” වැනි අර්ථකථන තොරතුරු උකහා ගැනීම. මේවා ඊනියා වර්ගීකරණ ගැටළු වේ.

බොහෝ දත්ත දැනටමත් එහි අනිවාර්ය අංගයක් බැවින් තොරතුරු උකහා ගැනීමට ක්‍රීඩා වලට සංකීර්ණ පද්ධතියක් අවශ්‍ය නොවේ. ඉදිරියෙන් සතුරෙකු සිටීදැයි තීරණය කිරීමට රූප හඳුනාගැනීමේ ඇල්ගොරිතම ක්‍රියාත්මක කිරීමට අවශ්‍ය නැත—ක්‍රීඩාව දැනටමත් දන්නා අතර තීරණ ගැනීමේ ක්‍රියාවලියට තොරතුරු කෙලින්ම පෝෂණය කරයි. එමනිසා, චක්‍රයේ ඉන්ද්‍රිය කොටස බොහෝ විට සිතන්න සහ ක්‍රියා කරන කොටසට වඩා සරල ය.

ක්‍රීඩා AI හි සීමාවන්

AI හි නිරීක්ෂණය කළ යුතු සීමාවන් ගණනාවක් ඇත:

  • යන්ත්‍ර ඉගෙනීමේ ඇල්ගොරිතමයක් මෙන් AI කල්තියා පුහුණු කිරීම අවශ්‍ය නොවේ. දස දහස් ගණනක් ක්‍රීඩකයින් නිරීක්ෂණය කිරීමට සහ ඔවුන්ට එරෙහිව ක්‍රීඩා කිරීමට හොඳම ක්‍රමය ඉගෙන ගැනීමට සංවර්ධනය අතරතුර ස්නායුක ජාලයක් ලිවීම තේරුමක් නැත. ඇයි? මොකද ගේම් එක රිලීස් වෙලා නැති නිසා.
  • ක්‍රීඩාව විනෝදජනක සහ අභියෝගාත්මක විය යුතුය, එබැවින් නියෝජිතයින් මිනිසුන්ට එරෙහිව හොඳම ප්‍රවේශය සොයා නොගත යුතුය.
  • ක්‍රීඩකයින් සැබෑ මිනිසුන්ට එරෙහිව ක්‍රීඩා කරන බවක් හැඟෙන පරිදි නියෝජිතයන් යථාර්ථවාදීව බැලිය යුතුය. AlphaGo වැඩසටහන මිනිසුන් අභිබවා ගිය නමුත් තෝරාගත් පියවර ක්‍රීඩාවේ සාම්ප්‍රදායික අවබෝධයෙන් බොහෝ දුරස් විය. ක්රීඩාව මිනිස් විරුද්ධවාදියෙකු අනුකරණය කරන්නේ නම්, මෙම හැඟීම නොතිබිය යුතුය. ඇල්ගොරිතම වෙනස් කළ යුතු අතර එමඟින් එය පරමාදර්ශී තීරණවලට වඩා පිළිගත හැකි තීරණ ගනී.
  • AI තත්‍ය කාලීනව ක්‍රියා කළ යුතුය. මෙයින් අදහස් කරන්නේ ඇල්ගොරිතමයට තීරණ ගැනීම සඳහා දිගු කාලයක් සඳහා CPU භාවිතය ඒකාධිකාරී කළ නොහැකි බවයි. මිලි තත්පර 10ක් පවා දිග වැඩියි, මන්ද බොහෝ ක්‍රීඩා වලට අවශ්‍ය වන්නේ මිලි තත්පර 16 සිට 33 දක්වා සියලු සැකසුම් කිරීමට සහ ඊළඟ චිත්‍රක රාමුව වෙත යාමටයි.
  • ඉතා මැනවින්, අවම වශයෙන් පද්ධතියේ කොටසක් දත්ත මත පදනම් විය යුතුය, එවිට කේතකයින් නොවන අයට වෙනස්කම් කළ හැකි අතර ගැලපීම් වඩා ඉක්මනින් සිදු විය හැක.

අපි බලමු සමස්ත ඉන්ද්‍රිය/චින්තන/ක්‍රියා චක්‍රය ආවරණය කරන AI ප්‍රවේශයන්.

මූලික තීරණ ගැනීම

අපි සරලම ක්‍රීඩාවෙන් පටන් ගනිමු - පොං. ඉලක්කය: පන්දුව එය පසුකර පියාසර කරනවාට වඩා පැද්දෙන සේ පැදල ගෙන යන්න. එය හරියට ටෙනිස් ක්‍රීඩාවක් වැනිය, එහිදී ඔබ පන්දුවට පහර නොදුන්නේ නම් ඔබට අහිමි වේ. මෙහිදී AI ට සාපේක්ෂව පහසු කාර්යයක් ඇත - වේදිකාව ගෙන යා යුත්තේ කුමන දිශාවටද යන්න තීරණය කිරීම.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

කොන්දේසි සහිත ප්රකාශයන්

පොං හි AI සඳහා, වඩාත්ම පැහැදිලි විසඳුම වන්නේ වේදිකාව සෑම විටම පන්දුව යට තැබීමට උත්සාහ කිරීමයි.

මේ සඳහා සරල ඇල්ගොරිතමයක්, ව්‍යාජ කේත වලින් ලියා ඇත:

ක්‍රීඩාව ක්‍රියාත්මක වන විට සෑම රාමුවක්/යාවත්කාලීනයක්ම:
පන්දුව පැඩලයේ වම් පැත්තේ නම්:
පැඩලය වමට ගෙන යන්න
එසේත් නැතිනම් පන්දුව පැඩලයේ දකුණට නම්:
පැඩලය දකුණට ගෙන යන්න

වේදිකාව පන්දුවේ වේගයෙන් ගමන් කරන්නේ නම්, මෙය පොං හි AI සඳහා කදිම ඇල්ගොරිතම වේ. නියෝජිතයා සඳහා එතරම් දත්ත සහ හැකි ක්රියාවන් නොමැති නම් කිසිවක් සංකීර්ණ කිරීම අවශ්ය නොවේ.

මෙම ප්‍රවේශය කෙතරම් සරලද යත් සමස්ත ඉන්ද්‍රිය/චින්තන/ක්‍රියා චක්‍රයම යන්තම් දැකිය නොහැක. නමුත් එය එහි ඇත:

  • ඉන්ද්‍රිය කොටස නම් ප්‍රකාශ දෙකකි. ක්‍රීඩාව දන්නේ පන්දුව කොතැනද සහ වේදිකාව කොතැනද යන්නයි, එබැවින් AI එම තොරතුරු සඳහා එය දෙස බලයි.
  • if ප්‍රකාශ දෙකෙහි Think කොටස ද ඇතුළත් වේ. ඔවුන් විසඳුම් දෙකක් මූර්තිමත් කරයි, මෙම අවස්ථාවේ දී අන්‍යෝන්‍ය වශයෙන් බැහැර වේ. ප්රතිඵලයක් වශයෙන්, ක්රියා තුනෙන් එකක් තෝරාගෙන ඇත - වේදිකාව වමට ගෙන යන්න, එය දකුණට ගෙන යන්න, නැතහොත් එය දැනටමත් නිවැරදිව ස්ථානගත කර ඇත්නම් කිසිවක් නොකරන්න.
  • පනතේ කොටස Move Paddle Left සහ Move Paddle Right ප්‍රකාශවල දක්නට ලැබේ. ක්රීඩාව සැලසුම් කිරීම අනුව, ඔවුන් වේදිකාව ක්ෂණිකව හෝ නිශ්චිත වේගයකින් ගමන් කළ හැකිය.

එවැනි ප්‍රවේශයන් ප්‍රතික්‍රියාශීලී ලෙස හැඳින්වේ - ලෝකයේ වර්තමාන තත්වයට ප්‍රතික්‍රියා කර ක්‍රියා කරන සරල නීති මාලාවක් (මෙම අවස්ථාවෙහි කේතයේ ප්‍රකාශ නම්) ඇත.

තීරණ ගස

පොං උදාහරණය ඇත්ත වශයෙන්ම තීරණ ගසක් ලෙස හැඳින්වෙන විධිමත් AI සංකල්පයකට සමාන වේ. ඇල්ගොරිතම එය හරහා "කොළ" වෙත ළඟා වේ - ගත යුතු ක්‍රියාමාර්ගය පිළිබඳ තීරණයක්.

අපගේ වේදිකාවේ ඇල්ගොරිතම සඳහා තීරණ ගසෙහි බ්ලොක් රූප සටහනක් සාදන්න:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

ගසේ සෑම කොටසක්ම නෝඩයක් ලෙස හැඳින්වේ - AI එවැනි ව්‍යුහයන් විස්තර කිරීමට ප්‍රස්ථාර න්‍යාය භාවිතා කරයි. නෝඩ් වර්ග දෙකක් තිබේ:

  • තීරණ නෝඩ්: එක් එක් විකල්පය වෙනම නෝඩයක් ලෙස නිරූපණය වන යම් කොන්දේසියක් පරීක්ෂා කිරීම මත පදනම්ව විකල්ප දෙකක් අතර තෝරා ගැනීම.
  • අවසන් නෝඩ්: අවසාන තීරණය නියෝජනය කරන සිදු කිරීමට ක්‍රියාව.

ඇල්ගොරිතම ආරම්භ වන්නේ පළමු නෝඩයෙන් (ගසෙහි "මූල") ය. එය එක්කෝ කුමන ළමා නෝඩයට යා යුතුද යන්න තීරණය කරයි, නැතහොත් එය නෝඩයේ ගබඩා කර ඇති ක්‍රියාව ක්‍රියාත්මක කර පිටවෙයි.

කලින් කොටසේ if ප්‍රකාශයන් හා සමාන කාර්යයක් තීරණ ගසක් කිරීමෙන් ඇති ප්‍රයෝජනය කුමක්ද? සෑම තීරණයකටම එක් කොන්දේසියක් සහ හැකි ප්‍රතිඵල දෙකක් පමණක් ඇති සාමාන්‍ය ක්‍රමයක් මෙහි ඇත. මෙමගින් සංවර්ධකයාට දැඩි කේත කිරීමකින් තොරව ගසක තීරණ නියෝජනය කරන දත්ත වලින් AI නිර්මාණය කිරීමට ඉඩ සලසයි. අපි එය වගු ආකාරයෙන් ඉදිරිපත් කරමු:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

කේත පැත්තේ ඔබට නූල් කියවීම සඳහා පද්ධතියක් ලැබෙනු ඇත. ඒ සෑම එකක් සඳහාම නෝඩයක් සාදන්න, දෙවන තීරුව මත පදනම්ව තීරණ තර්කනය සහ තුන්වන සහ හතරවන තීරු මත පදනම්ව ළමා නෝඩ් සම්බන්ධ කරන්න. ඔබ තවමත් කොන්දේසි සහ ක්රියාවන් වැඩසටහන්ගත කළ යුතුය, නමුත් දැන් ක්රීඩාවේ ව්යුහය වඩාත් සංකීර්ණ වනු ඇත. මෙහිදී ඔබ අමතර තීරණ සහ ක්‍රියා එකතු කර, ගස් නිර්වචන පෙළ ගොනුව සරලව සංස්කරණය කිරීමෙන් සම්පූර්ණ AI අභිරුචිකරණය කරන්න. මීලඟට, ඔබ ක්‍රීඩාව නැවත සම්පාදනය නොකර හෝ කේතය වෙනස් නොකර හැසිරීම වෙනස් කළ හැකි ක්‍රීඩා නිර්මාණකරු වෙත ගොනුව මාරු කරයි.

විශාල උදාහරණ සමූහයකින් ස්වයංක්‍රීයව ගොඩනගා ඇති විට තීරණ ගස් ඉතා ප්‍රයෝජනවත් වේ (උදාහරණයක් ලෙස, ID3 ඇල්ගොරිතම භාවිතයෙන්). මෙය ඔවුන් ලබාගත් දත්ත මත පදනම්ව තත්වයන් වර්ගීකරණය කිරීම සඳහා ඵලදායී සහ ඉහළ කාර්යසාධනයක් සහිත මෙවලමක් බවට පත් කරයි. කෙසේ වෙතත්, අපි නියෝජිතයින්ට ක්‍රියා තේරීම සඳහා සරල පද්ධතියකින් ඔබ්බට යමු.

අවස්ථා

අපි පූර්ව-නිර්මාණය කළ කොන්දේසි සහ ක්‍රියාවන් භාවිතා කළ තීරණ ගස් පද්ධතියක් විශ්ලේෂණය කළෙමු. AI නිර්මාණය කරන පුද්ගලයාට ඔහුට අවශ්‍ය පරිදි ගස සංවිධානය කළ හැකි නමුත්, ඒ සියල්ල ක්‍රමලේඛනය කළ කෝඩරය මත ඔහුට තවමත් විශ්වාසය තැබිය යුතුය. අපි නිර්මාණකරුට ඔවුන්ගේම කොන්දේසි හෝ ක්‍රියාවන් නිර්මාණය කිරීමට මෙවලම් ලබා දිය හැකි නම් කුමක් කළ යුතුද?

ක්‍රමලේඛකයාට Is Ball Left Of Paddle සහ Is Ball Right Of Paddle යන කොන්දේසි සඳහා කේතයක් ලිවීමට අවශ්‍ය නොවන පරිදි, ඔහුට මෙම අගයන් පරීක්ෂා කිරීම සඳහා නිර්මාණකරු විසින් කොන්දේසි ලියන පද්ධතියක් නිර්මාණය කළ හැකිය. එවිට තීරණ ගස් දත්ත මේ ආකාරයෙන් පෙනෙනු ඇත:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

මෙය අත්‍යවශ්‍යයෙන්ම පළමු වගුවේ ඇති ආකාරයටම වේ, නමුත් ඒවා තුළ ඇති විසඳුම් වලට ඔවුන්ගේම කේතයක් ඇත, එය if ප්‍රකාශයක කොන්දේසි සහිත කොටසට සමාන වේ. කේත පැත්තේ, මෙය තීරණ නෝඩ් සඳහා දෙවන තීරුවේ කියවනු ඇත, නමුත් ක්‍රියාත්මක කිරීමට නිශ්චිත කොන්දේසියක් සොයනවා වෙනුවට (Paddle හි බෝලය ඉතිරිද), එය කොන්දේසි ප්‍රකාශනය ඇගයීමට ලක් කර ඒ අනුව සත්‍ය හෝ අසත්‍ය ලබා දෙයි. මෙය Lua හෝ Angelscript ස්ක්‍රිප්ටින් භාෂාව භාවිතයෙන් සිදු කෙරේ. ඒවා භාවිතා කරමින්, සංවර්ධකයෙකුට ඔහුගේ ක්‍රීඩාවේ ඇති වස්තූන් (පන්දු සහ පැඩල්) ගෙන ස්ක්‍රිප්ට් (ball.position) තුළ පවතින විචල්‍යයන් නිර්මාණය කළ හැකිය. ඒ වගේම scripting language එක C++ වලට වඩා සරලයි. එයට සම්පූර්ණ සම්පාදන අදියරක් අවශ්‍ය නොවේ, එබැවින් එය ක්‍රීඩා තර්කනය ඉක්මනින් ගැලපීම සඳහා වඩාත් සුදුසු වන අතර “කේතකයන් නොවන අයට” අවශ්‍ය කාර්යයන් තමන් විසින්ම නිර්මාණය කිරීමට ඉඩ සලසයි.

ඉහත උදාහරණයේ දී, ස්ක්‍රිප්ටින් භාෂාව භාවිතා කරන්නේ කොන්දේසි සහිත ප්‍රකාශනය ඇගයීමට පමණක් වන නමුත් එය ක්‍රියා සඳහා ද භාවිතා කළ හැකිය. උදාහරණයක් ලෙස, දත්ත Move Paddle Right ස්ක්‍රිප්ට් ප්‍රකාශයක් බවට පත් විය හැක (ball.position.x += 10). එම ක්‍රියාවද ස්ක්‍රිප්ටය තුළ අර්ථ දක්වා ඇති පරිදි, Move Paddle Right වැඩසටහන්ගත කිරීමකින් තොරව.

ඔබට ඊටත් එහාට ගොස් ස්ක්‍රිප්ටින් භාෂාවෙන් සම්පූර්ණ තීරණ ගස ලිවිය හැකිය. මෙය දෘඪ කේත සහිත කොන්දේසි සහිත ප්‍රකාශයන් ආකාරයෙන් කේතයක් වනු ඇත, නමුත් ඒවා බාහිර ස්ක්‍රිප්ට් ගොනු වල පිහිටා ඇත, එනම් සම්පූර්ණ වැඩසටහන නැවත සම්පාදනය නොකර ඒවා වෙනස් කළ හැකිය. විවිධ AI ප්‍රතිචාර ඉක්මනින් පරීක්ෂා කිරීමට ක්‍රීඩාව අතරතුර ඔබට බොහෝ විට ස්ක්‍රිප්ට් ගොනුව සංස්කරණය කළ හැක.

සිදුවීම් ප්‍රතිචාරය

ඉහත උදාහරණ Pong සඳහා පරිපූර්ණයි. ඔවුන් ඉන්ද්‍රිය/චින්තන/ක්‍රියා චක්‍රය අඛණ්ඩව ක්‍රියාත්මක කරන අතර ලෝකයේ නවතම තත්ත්වය මත පදනම්ව ක්‍රියා කරයි. නමුත් වඩාත් සංකීර්ණ ක්රීඩා වලදී ඔබ තනි සිදුවීම් වලට ප්රතිචාර දැක්විය යුතු අතර, සියල්ල එකවර ඇගයීමට ලක් නොකරන්න. මෙම නඩුවේ පොං දැනටමත් නරක ආදර්ශයකි. අපි තවත් එකක් තෝරා ගනිමු.

ක්‍රීඩකයා හඳුනා ගන්නා තෙක් සතුරන් නොසැලී සිටින වෙඩික්කරුවෙකු ගැන සිතන්න, ඉන්පසු ඔවුන් ඔවුන්ගේ “විශේෂත්වය” මත පදනම්ව ක්‍රියා කරයි: යමෙකු “කඩිමුඩියේ” දුවනු ඇත, යමෙකු දුර සිට පහර දෙනු ඇත. එය තවමත් මූලික ප්‍රතික්‍රියාශීලී පද්ධතියකි - "ක්‍රීඩකයෙකු දුටුවහොත් යමක් කරන්න" - නමුත් එය තාර්කිකව ක්‍රීඩකයෙකු දුටු සිදුවීමක් සහ ප්‍රතික්‍රියාවක් (ප්‍රතිචාරයක් තෝරා එය ක්‍රියාත්මක කරන්න) ලෙස බෙදිය හැකිය.

මෙය අපව නැවතත් ඉන්ද්‍රිය/චින්තන/ක්‍රියා චක්‍රය වෙත ගෙන එයි. AI විසින් ක්‍රීඩකයා දකිනවාද යන්න සෑම රාමුවක්ම පරීක්ෂා කරන Sense කොටසක් අපට කේතනය කළ හැක. එසේ නොවේ නම්, කිසිවක් සිදු නොවේ, නමුත් එය දුටුවහොත්, එවිට Player Seen සිදුවීම නිර්මාණය වේ. මෙම කේතයේ "Player Seen සිදුවීම සිදු වූ විට, කරන්න" යන වෙනම අංශයක් ඇත, එහිදී ඔබට Think and Act කොටස් ඇමතීමට අවශ්‍ය ප්‍රතිචාරය වේ. මේ අනුව, ඔබ ක්‍රීඩකයා දුටු සිදුවීමට ප්‍රතික්‍රියා සකසනු ඇත: “කඩිමුඩියේ” චරිතය සඳහා - ChargeAndAttack, සහ ස්නයිපර් සඳහා - HideAndSnipe. මෙම සම්බන්ධතා නැවත සම්පාදනය කිරීමකින් තොරව ඉක්මන් සංස්කරණය සඳහා දත්ත ගොනුව තුළ නිර්මාණය කළ හැක. මෙහි ස්ක්‍රිප්ටින් භාෂාවද භාවිතා කළ හැක.

දුෂ්කර තීරණ ගැනීම

සරල ප්‍රතික්‍රියා පද්ධති ඉතා බලවත් වුවද, ඒවා ප්‍රමාණවත් නොවන අවස්ථා බොහොමයක් තිබේ. සමහර විට ඔබ නියෝජිතයා දැනට කරන දේ මත පදනම්ව විවිධ තීරණ ගැනීමට සිදු වේ, නමුත් මෙය කොන්දේසියක් ලෙස සිතීම දුෂ්කර ය. සමහර විට තීරණ ගසක හෝ ස්ක්‍රිප්ට් එකක ඒවා ඵලදායි ලෙස නිරූපණය කිරීමට බොහෝ කොන්දේසි තිබේ. සමහර විට ඔබ ඊළඟ පියවර තීරණය කිරීමට පෙර තත්වය වෙනස් වන්නේ කෙසේදැයි කල්තියා තක්සේරු කළ යුතුය. මෙම ගැටළු විසඳීම සඳහා වඩාත් සංකීර්ණ ප්රවේශයන් අවශ්ය වේ.

සීමිත රාජ්ය යන්ත්රය

පරිමිත රාජ්‍ය යන්ත්‍රය හෝ FSM (සීමිත රාජ්‍ය යන්ත්‍රය) යනු අපගේ නියෝජිතයා දැනට හැකි ප්‍රාන්ත කිහිපයකින් එකක සිටින බවත්, එය එක් ප්‍රාන්තයකින් තවත් ප්‍රාන්තයකට මාරු විය හැකි බවත් පැවසීමේ ක්‍රමයකි. එවැනි රාජ්යයන් නිශ්චිත සංඛ්යාවක් ඇත - එබැවින් නම. ජීවිතයේ හොඳම උදාහරණය රථවාහන ආලෝකයකි. විවිධ ස්ථානවල ආලෝකයේ විවිධ අනුපිළිවෙලවල් ඇත, නමුත් මූලධර්මය එකම වේ - එක් එක් ප්රාන්තය යමක් නියෝජනය කරයි (නැවතුම්, ඇවිදීම, ආදිය). රථවාහන ආලෝකයක් ඕනෑම අවස්ථාවක එක් තත්වයක පමණක් පවතින අතර සරල නීති මත පදනම්ව එකකින් තවත් ස්ථානයකට ගමන් කරයි.

එය ක්‍රීඩා වල NPC සමඟ සමාන කතාවකි. උදාහරණයක් ලෙස, පහත සඳහන් තත්වයන් සහිත ආරක්ෂකයෙකු ගනිමු:

  • මුර සංචාරය.
  • Атакующий (Attacking).
  • පලා යනවා.

එහි තත්වය වෙනස් කිරීම සඳහා මෙම කොන්දේසි:

  • ආරක්ෂකයා සතුරා දුටුවහොත් ඔහු පහර දෙයි.
  • ආරක්ෂකයා පහර දුන්නත් සතුරා තවදුරටත් නොපෙනේ නම්, ඔහු නැවත මුර සංචාරයට යයි.
  • මුරකරුවෙකු පහර දුන්නත් දරුණු ලෙස තුවාල වුවහොත් ඔහු පලා යයි.

ඔබට භාරකාර රාජ්‍ය විචල්‍යයක් සහ විවිධ චෙක්පත් සමඟ if-statements ලිවිය හැකිය: අසල සතුරෙකු සිටීද, NPC හි සෞඛ්‍ය මට්ටම කුමක්ද, ආදිය. අපි තවත් ප්‍රාන්ත කිහිපයක් එකතු කරමු:

  • උදාසීනත්වය - මුර සංචාර අතර.
  • Поиск (Searching) — когда замеченный враг скрылся.
  • උදව් සෙවීම - සතුරෙකු දුටු විට, නමුත් තනිවම සටන් කිරීමට නොහැකි තරම් ශක්තිමත් වේ.

ඒ සෑම එකක් සඳහාම තේරීම සීමිතයි - නිදසුනක් වශයෙන්, ආරක්ෂකයා ඔහුට අඩු සෞඛ්‍යයක් ඇත්නම් සැඟවුණු සතුරෙකු සොයන්නේ නැත.

සියල්ලට පසු, "ifs" විශාල ලැයිස්තුවක් තිබේ , එම " ඉතා අපහසු විය හැක, එබැවින් ප්‍රාන්ත අතර ප්‍රාන්ත සහ සංක්‍රාන්ති මනසේ තබා ගැනීමට අපට ඉඩ සලසන ක්‍රමයක් අපි විධිමත් කළ යුතුය. මෙය සිදු කිරීම සඳහා, අපි සියලු රාජ්‍යයන් සැලකිල්ලට ගන්නා අතර, එක් එක් ප්‍රාන්තය යටතේ අපි වෙනත් ප්‍රාන්තවලට සියලුම සංක්‍රමණයන්, ඒවාට අවශ්‍ය කොන්දේසි සමඟ ලැයිස්තුවක ලියා තබමු.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

මෙය රාජ්‍ය සංක්‍රාන්ති වගුවකි - FSM නියෝජනය කිරීමට විස්තීර්ණ ක්‍රමයක්. අපි රූප සටහනක් අඳිමු සහ NPC හැසිරීම වෙනස් වන ආකාරය පිළිබඳ සම්පූර්ණ දළ විශ්ලේෂණයක් ලබා ගනිමු.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

වත්මන් තත්ත්වය මත පදනම්ව මෙම නියෝජිතයා සඳහා තීරණ ගැනීමේ සාරය රූප සටහනෙන් පිළිබිඹු වේ. එපමණක් නොව, සෑම ඊතලයක්ම එය අසල ඇති කොන්දේසිය සත්‍ය නම් ප්‍රාන්ත අතර සංක්‍රමණයක් පෙන්වයි.

Каждое обновление мы проверяем текущее состояние агента, просматриваем список переходов, и если условия для перехода выполнены, он принимает новое состояние. Например, каждый кадр проверяется истек ли 10-секундный таймер, и если да, то из состояния Idling страж переходит в Patrolling. Таким же образом, состояние Attacking проверяет здоровье агента — если оно низкое, то он переходит в состояние Fleeing.

මෙය රාජ්‍යයන් අතර සංක්‍රාන්ති හැසිරවීමකි, නමුත් රාජ්‍යයන් හා සම්බන්ධ හැසිරීම ගැන කුමක් කිව හැකිද? යම් ප්‍රාන්තයක් සඳහා සත්‍ය හැසිරීම ක්‍රියාත්මක කිරීම සම්බන්ධයෙන්, සාමාන්‍යයෙන් අපි FSM වෙත ක්‍රියා පවරන "කොක්ක" වර්ග දෙකක් තිබේ:

  • වත්මන් තත්ත්වය සඳහා අපි වරින් වර සිදු කරන ක්‍රියා.
  • එක් රාජ්‍යයකින් තවත් රාජ්‍යයකට සංක්‍රමණය වන විට අප ගන්නා ක්‍රියා.

පළමු වර්ගය සඳහා උදාහරණ. මුර සංචාරයේ යෙදෙන රාජ්‍යය නියෝජිතයා මුර සංචාරයේ යෙදෙන මාර්ගය ඔස්සේ සෑම රාමුවකටම ගෙන යනු ඇත. ප්‍රහාරක රාජ්‍යය සෑම රාමුවකටම ප්‍රහාරයක් ආරම්භ කිරීමට හෝ මෙය කළ හැකි ප්‍රාන්තයකට සංක්‍රමණය වීමට උත්සාහ කරයි.

Для второго типа рассмотрим переход «если враг виден и враг слишком силен, то перейти в состояние Finding Help. Агент должен выбрать, куда пойти за помощью, и сохранить эту информацию, чтобы состояние Finding Help знало куда обратиться. Как только помощь найдена, агент переходит обратно в состояние Attacking. В этот момент он захочет рассказать союзнику об угрозе, поэтому может возникнуть действие NotifyFriendOfThreat.

නැවත වරක්, අපට මෙම පද්ධතිය දෙස Sense/Think/Act චක්‍රයේ කාචයෙන් බැලිය හැකිය. සංක්‍රාන්ති තර්කය මගින් භාවිතා කරන දත්ත තුළ සංවේදනය මූර්තිමත් වේ. සිතන්න - එක් එක් ප්‍රාන්තවල ඇති සංක්‍රාන්ති. රාජ්‍යයක් තුළ හෝ ප්‍රාන්ත අතර සංක්‍රාන්ති වලදී වරින් වර සිදු කෙරෙන ක්‍රියා මගින් පනත ක්‍රියාත්මක වේ.

සමහර විට අඛණ්ඩව ඡන්ද විමසීමේ සංක්‍රාන්ති තත්වයන් මිල අධික විය හැක. උදාහරණයක් ලෙස, එක් එක් නියෝජිතයා විසින් සතුරන් දැකිය හැකිද යන්න සහ මුර සංචාරයේ සිට ප්‍රහාරක තත්වයට සංක්‍රමණය විය හැකිද යන්න තීරණය කිරීම සඳහා සෑම රාමුවක්ම සංකීර්ණ ගණනය කිරීම් සිදු කරන්නේ නම්, මෙයට CPU කාලයක් ගතවනු ඇත.

ලෝකයේ තත්වයේ වැදගත් වෙනස්කම් ඒවා සිදු වන විට සැකසෙන සිදුවීම් ලෙස සැලකිය හැකිය. FSM මඟින් සංක්‍රාන්ති තත්ත්වය පරීක්ෂා කිරීම වෙනුවට "මගේ නියෝජිතයාට ක්‍රීඩකයා දැකිය හැකිද?" සෑම රාමුවක්ම, අඩු වාර ගණනක් පරීක්ෂා කිරීමට (උදා: තත්පරයට 5 වතාවක්) වෙනම පද්ධතියක් වින්‍යාසගත කළ හැක. ප්‍රතිඵලය වන්නේ චෙක්පත සමත් වූ විට Player Seen නිකුත් කිරීමයි.

මෙය FSM වෙත ලබා දෙන අතර, එය දැන් Player Seen event ලැබුණු කොන්දේසියට ගොස් ඒ අනුව ප්‍රතිචාර දැක්විය යුතුය. ප්‍රතිචාර දැක්වීමට පෙර නොපෙනෙන ප්‍රමාදයක් හැර ප්‍රතිඵලයක් ලෙස හැසිරීම සමාන වේ. නමුත් Sense කොටස වැඩසටහනේ වෙනම කොටසකට වෙන් කිරීමේ ප්‍රතිඵලයක් ලෙස කාර්ය සාධනය වැඩි දියුණු වී ඇත.

Hierarchical finite state machine

කෙසේ වෙතත්, විශාල FSM සමඟ වැඩ කිරීම සැමවිටම පහසු නොවේ. MeleeAttacking සහ RangedAttacking වෙන් වෙන් වශයෙන් ප්‍රහාරක තත්ත්වය පුළුල් කිරීමට අපට අවශ්‍ය නම්, ප්‍රහාරක තත්ත්වයට (වත්මන් සහ අනාගත) තුඩු දෙන අනෙකුත් සියලුම ප්‍රාන්තවලින් මාරුවීම් වෙනස් කිරීමට අපට සිදුවේ.

අපගේ උදාහරණයේ අනුපිටපත් සංක්‍රාන්ති රාශියක් ඇති බව ඔබ දැක ඇති. නිෂ්ක්‍රීය තත්වයේ බොහෝ සංක්‍රාන්ති මුර සංක්‍රාන්තයේ සංක්‍රාන්තිවලට සමාන වේ. විශේෂයෙන්ම අපි තවත් සමාන ප්‍රාන්ත එකතු කරන්නේ නම්, අපවම නැවත නොකිරීම සතුටක් වනු ඇත. "සටන් නොවන" යන පොදු ලේබලය යටතේ Idling සහ Patrolling කණ්ඩායම් කිරීම අර්ථවත් කරයි, එහිදී රාජ්‍යයන්ට එරෙහිව සටන් කිරීමට එකම පොදු සංක්‍රාන්ති කට්ටලයක් ඇත. අපි මෙම ලේබලය රාජ්‍යයක් ලෙස සිතන්නේ නම්, Idling සහ Patrolling උප රාජ්‍යයන් බවට පත්වේ. නව සටන් නොවන උප රාජ්‍යයක් සඳහා වෙනම සංක්‍රාන්ති වගුවක් භාවිතා කිරීමේ උදාහරණයක්:

ප්රධාන ප්රාන්ත:
සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

සටන් තත්ත්වයෙන් බැහැර:
සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

සහ රූප සටහන් ආකාරයෙන්:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

එය එකම ක්‍රමයකි, නමුත් නව සටන් නොවන රාජ්‍යයක් සමඟ Idling සහ Patrolling ඇතුළත් වේ. උප රාජ්‍යයන් සහිත FSM අඩංගු සෑම ප්‍රාන්තයක් සමඟම (සහ මෙම උප රාජ්‍යයන්, ඒවායේම FSM අඩංගු වේ - සහ ඔබට අවශ්‍ය තාක් කල්), අපට ධූරාවලි පරිමිත රාජ්‍ය යන්ත්‍රයක් හෝ HFSM (ධූරාවලි පරිමිත රාජ්‍ය යන්ත්‍රයක්) ලැබේ. සටන් නොවන රාජ්‍යය කාණ්ඩගත කිරීමෙන්, අපි අතිරික්ත සංක්‍රාන්ති පොකුරක් කපා දමමු. පොදු සංක්‍රාන්ති සහිත ඕනෑම නව ප්‍රාන්ත සඳහා අපට එයම කළ හැක. උදාහරණයක් ලෙස, අනාගතයේදී අපි ප්‍රහාරක තත්වය MeleeAttacking සහ MissileAttacking ප්‍රාන්ත දක්වා ව්‍යාප්ත කළහොත්, ඒවා සතුරාට ඇති දුර සහ උණ්ඩ ලබා ගැනීමේ හැකියාව මත පදනම්ව එකිනෙකා අතර සංක්‍රමණය වන උප රාජ්‍යයන් වනු ඇත. එහි ප්‍රතිඵලයක් වශයෙන්, සංකීර්ණ හැසිරීම් සහ උප චර්යාවන් අවම අනුපිටපත් සංක්‍රාන්ති සංඛ්‍යාවක් සමඟින් නිරූපණය කළ හැක.

Дерево поведений

С HFSM создаются сложные комбинации поведений простым способом. Тем не менее, есть небольшая трудность, что принятие решений в виде правил перехода тесно связано с текущим состоянием. И во многих играх это как раз то, что нужно. А тщательное использование иерархии состояний может уменьшить количество повторов при переходе. Но иногда нужны правила, работающие независимо от того, в каком состоянии вы находитесь или которые применяются почти в любых состояниях. Например, если здоровье агента упало до 25%, вы захотите, чтобы он убегал независимо от того, был ли он в бою, бездельничал или разговаривал — вам придется добавлять это условие в каждое состояние. А если ваш дизайнер позже захочет изменить порог низкого здоровья с 25% до 10%, то этим снова придется заниматься.

ඉතා මැනවින්, මෙම තත්ත්වය සඳහා එක් ස්ථානයක පමණක් වෙනස්කම් සිදු කිරීම සඳහා සහ සංක්‍රාන්ති කොන්දේසි ස්පර්ශ නොකිරීම සඳහා, "කොයි තත්වයක සිටිය යුතුද" යන්න පිළිබඳ තීරණ ප්‍රාන්තවලින් පිටත පවතින පද්ධතියක් අවශ්‍ය වේ. හැසිරීම් ගස් මෙහි දිස් වේ.

ඒවා ක්‍රියාත්මක කිරීමට ක්‍රම කිහිපයක් ඇත, නමුත් සාරය දළ වශයෙන් සැමට සමාන වන අතර තීරණ ගසකට සමාන වේ: ඇල්ගොරිතම ආරම්භ වන්නේ “මූල” නෝඩයකින් වන අතර ගසෙහි තීරණ හෝ ක්‍රියාවන් නියෝජනය කරන නෝඩ් අඩංගු වේ. නමුත් ප්රධාන වෙනස්කම් කිහිපයක් තිබේ:

  • නෝඩ් දැන් අගයන් තුනෙන් එකක් ලබා දෙයි: සාර්ථකයි (රැකියාව සම්පූර්ණ කර ඇත්නම්), අසාර්ථකයි (එය ආරම්භ කළ නොහැකි නම්) හෝ ධාවනය (එය තවමත් ක්‍රියාත්මක වන අතර අවසාන ප්‍රතිඵලයක් නොමැති නම්).
  • විකල්ප දෙකක් අතර තෝරා ගැනීමට තවත් තීරණ නෝඩ් නොමැත. ඒ වෙනුවට, ඒවා එක් ළමා නෝඩයක් ඇති Decorator nodes වේ. ඔවුන් සාර්ථක වුවහොත්, ඔවුන් ඔවුන්ගේ එකම ළමා නෝඩය ක්‍රියාත්මක කරයි.
  • ක්‍රියා කරන නෝඩ් මඟින් සිදු කෙරෙන ක්‍රියාවන් නියෝජනය කිරීම සඳහා ධාවන අගයක් ලබා දේ.

Этот небольшой набор узлов можно объединить для создания большого количества сложных моделей поведения. Представим HFSM стража из предыдущего примера в виде дерева поведения:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

මෙම ව්‍යුහය සමඟ Idling/Patrolling States සිට Attacking හෝ වෙනත් කිසිම රාජ්‍යයකට පැහැදිලි සංක්‍රමණයක් සිදු නොවිය යුතුය. සතුරෙකු දෘශ්‍යමාන නම් සහ චරිතයේ සෞඛ්‍යය අඩු නම්, එය කලින් ක්‍රියාත්මක කළ නෝඩය කුමක් වුවත්, ක්‍රියාත්මක කිරීම Fleeing node හි නතර වනු ඇත - පැට්‍රෝල් කිරීම, නිෂ්ක්‍රීය කිරීම, පහර දීම හෝ වෙනත් ඕනෑම දෙයක්.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

හැසිරීම් ගස් සංකීර්ණ වේ - ඒවා රචනා කිරීමට බොහෝ ක්රම තිබේ, සහ සැරසිලි සහ සංයෝග නෝඩ් වල නිවැරදි සංයෝජනය සොයා ගැනීම අභියෝගාත්මක විය හැකිය. ගස කොපමණ වාරයක් පරීක්ෂා කළ යුතුද යන්න පිළිබඳ ප්‍රශ්න ද තිබේ - අපට එහි සෑම කොටසක්ම හරහා යාමට අවශ්‍යද නැතහොත් එක් කොන්දේසියක් වෙනස් වූ විට පමණක්ද? අපි නෝඩ් වලට අදාළ තත්වය ගබඩා කරන්නේ කෙසේද - අපි තත්පර 10 ක් නිශ්ක්‍රීයව සිටි විට අපි දන්නේ කෙසේද, නැතහොත් අවසන් වරට ක්‍රියාත්මක වූ නෝඩ් මොනවාදැයි අපි දන්නේ කෙසේද එවිට අපට අනුක්‍රමය නිවැරදිව ක්‍රියා කළ හැකිය.

Именно поэтому существует множество реализаций. Например, в некоторых системах узлы декоратора заменили встроенными декораторами. Они повторно оценивают дерево при изменении условий декоратора, помогают присоединиться к узлам и обеспечивают периодические обновления.

උපයෝගිතා මත පදනම් වූ පද්ධතිය

සමහර ක්‍රීඩා වල විවිධ යාන්ත්‍ර විද්‍යාව ඇත. සරල සහ සාමාන්‍ය සංක්‍රාන්ති නීතිවල සියලු ප්‍රතිලාභ ඔවුන්ට ලැබීම යෝග්‍ය වේ, නමුත් සම්පූර්ණ හැසිරීම් වෘක්ෂයක ස්වරූපයෙන් අවශ්‍ය නොවේ. පැහැදිලි තේරීම් කට්ටලයක් හෝ කළ හැකි ක්‍රියා ගසක් වෙනුවට, සියලු ක්‍රියාවන් පරීක්ෂා කර මේ මොහොතේ වඩාත් සුදුසු එකක් තෝරා ගැනීම පහසුය.

උපයෝගිතා මත පදනම් වූ පද්ධතිය මේ සඳහා උපකාරී වනු ඇත. මෙය නියෝජිතයාට විවිධ ක්‍රියා ඇති අතර එක් එක් සාපේක්ෂ උපයෝගීතාව මත පදනම්ව සිදු කළ යුතු ඒවා තෝරා ගන්නා පද්ධතියකි. උපයෝගිතා යනු නියෝජිතයා විසින් මෙම ක්‍රියාව සිදු කිරීම කොතරම් වැදගත් හෝ යෝග්‍යද යන්න පිළිබඳ අත්තනෝමතික මිනුමක් වේ.

වත්මන් තත්ත්වය සහ පරිසරය මත පදනම්ව ක්‍රියාවක ගණනය කළ උපයෝගීතාව, නියෝජිතයාට ඕනෑම වේලාවක වඩාත් සුදුසු වෙනත් තත්ත්වය පරීක්ෂා කර තෝරා ගත හැකිය. මෙය FSM ට සමාන වේ, සංක්‍රාන්ති තීරණය වන්නේ වත්මන් එක ඇතුළුව එක් එක් විභව තත්ත්වය සඳහා ඇස්තමේන්තුවක් මගින් හැර. අපි ඉදිරියට යාමට වඩාත්ම ප්‍රයෝජනවත් ක්‍රියාව තෝරා ගන්නා බව කරුණාවෙන් සලකන්න (නැතහොත් අපි දැනටමත් එය සම්පූර්ණ කර ඇත්නම් රැඳී සිටින්න). වඩා විවිධත්වය සඳහා, මෙය කුඩා ලැයිස්තුවකින් සමබර නමුත් අහඹු තේරීමක් විය හැකිය.

පද්ධතිය අත්තනෝමතික පරාසයක උපයෝගිතා අගයන් පවරයි-උදාහරණයක් ලෙස, 0 (සම්පූර්ණයෙන්ම අනවශ්‍ය) සිට 100 (සම්පූර්ණයෙන්ම අවශ්‍ය) දක්වා. සෑම ක්රියාවක්ම මෙම අගය ගණනය කිරීමට බලපාන පරාමිතීන් ගණනාවක් ඇත. අපගේ භාරකරුගේ උදාහරණය වෙත ආපසු යාම:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

ක්‍රියාවන් අතර සංක්‍රාන්ති අපැහැදිලි වේ - ඕනෑම රාජ්‍යයකට වෙනත් ඕනෑම දෙයක් අනුගමනය කළ හැක. ආපසු ලබා දුන් උපයෝගිතා අගයන් තුළ ක්‍රියා ප්‍රමුඛතා දක්නට ලැබේ. සතුරෙකු පෙනෙන්නේ නම් සහ එම සතුරා ශක්තිමත් නම් සහ චරිතයේ සෞඛ්‍යය අඩු නම්, Fleeing සහ FindingHelp යන දෙකම ඉහළ ශුන්‍ය නොවන අගයන් ලබා දෙනු ඇත. මෙම අවස්ථාවෙහිදී, FindingHelp සැමවිටම ඉහළ වනු ඇත. එලෙසම, සටන් නොවන ක්‍රියාකාරකම් කිසිවිටෙකත් 50ට වඩා ආපසු නොඑන බැවින් ඒවා සැමවිටම සටන් ක්‍රියාකාරකම්වලට වඩා පහත් වනු ඇත. ක්රියාවන් නිර්මාණය කිරීමේදී සහ ඒවායේ උපයෝගීතාව ගණනය කිරීමේදී ඔබ මෙය සැලකිල්ලට ගත යුතුය.

В нашем примере действия возвращают либо фиксированное постоянное значение, либо одно из двух фиксированных значений. Более реалистичная система предполагает возврат оценки из непрерывного диапазона значений. Например, действие Fleeing возвращает более высокие значения полезности, если здоровье агента низкое, а действие Attacking возвращает более низкие, если враг слишком силен. Из-за этого действие Fleeing имеет приоритет над Attacking в любой ситуации, когда агент чувствует, что у него недостаточно здоровья для победы над противником. Это позволяет изменять приоритеты действий на основе любого числа критериев, что делает такой подход более гибким и вариативным, чем дерево поведения или FSM.

සෑම ක්රියාවක්ම වැඩසටහන් ගණනය කිරීම සඳහා බොහෝ කොන්දේසි ඇත. ඒවා ස්ක්‍රිප්ටින් භාෂාවෙන් හෝ ගණිතමය සූත්‍ර මාලාවක් ලෙස ලිවිය හැකිය. චරිතයක දෛනික චර්යාව අනුකරණය කරන සිම්ස්, අතිරේක ගණනය කිරීම් ස්ථරයක් එක් කරයි - නියෝජිතයාට උපයෝගිතා ශ්‍රේණිගත කිරීම්වලට බලපෑම් කරන "පෙළඹවීම්" මාලාවක් ලැබේ. චරිතයක් බඩගිනි නම්, කාලයත් සමඟ ඔවුන් තවත් කුසගින්නෙන් පෙළෙන අතර, චරිතය එය ඉටු කරන තෙක් EatFood ක්‍රියාවෙහි උපයෝගිතා අගය වැඩි වනු ඇත, කුසගින්න මට්ටම අඩු කර EatFood අගය බිංදුවට ගෙන එයි.

ශ්‍රේණිගත කිරීමේ පද්ධතියක් මත පදනම් වූ ක්‍රියාවන් තෝරාගැනීමේ අදහස තරමක් සරල ය, එබැවින් උපයෝගිතා මත පදනම් වූ පද්ධතියක් AI තීරණ ගැනීමේ ක්‍රියාවලීන්හි කොටසක් ලෙස භාවිතා කළ හැකිය, ඒවා සඳහා සම්පූර්ණ ප්‍රතිස්ථාපනයක් ලෙස නොවේ. තීරණ ගස ළමා නෝඩ් දෙකක උපයෝගිතා ශ්‍රේණිගත කිරීමක් ඉල්ලා සිටිය හැකි අතර ඉහළ එක තෝරන්න. ඒ හා සමානව, හැසිරීම් ගසකට කුමන දරුවා ක්‍රියාත්මක කළ යුතුද යන්න තීරණය කිරීමට ක්‍රියාවන්හි උපයෝගීතාව ඇගයීමට සංයුක්ත උපයෝගිතා නෝඩයක් තිබිය හැකිය.

චලනය සහ සංචලනය

පෙර උදාහරණවලදී, අපි වමට හෝ දකුණට ගෙන ගිය වේදිකාවක් සහ මුර සංචාරයේ යෙදෙන හෝ පහර දුන් ආරක්ෂකයෙකු අපට තිබුණි. නමුත් යම් කාල පරිච්ඡේදයක් තුළ අපි නියෝජිත චලනය නිවැරදිව හසුරුවන්නේ කෙසේද? අපි වේගය සකසන්නේ කෙසේද, බාධක මඟහරවා ගන්නේ කෙසේද සහ ගමනාන්තයකට යාම සරල රේඛාවක ගමන් කිරීමට වඩා දුෂ්කර වූ විට මාර්ගයක් සැලසුම් කරන්නේ කෙසේද? අපි මේක බලමු.

පාලනය

ආරම්භක අදියරේදී, සෑම නියෝජිතයෙකුටම වේග අගයක් ඇති බව අපි උපකල්පනය කරමු, එය කෙතරම් වේගයෙන් ගමන් කරන්නේද සහ කුමන දිශාවටද යන්න ඇතුළත් වේ. එය තත්පරයට මීටර, පැයට කිලෝමීටර්, තත්පරයට පික්සෙල් ආදී වශයෙන් මැනිය හැක. Sense/Think/Act loop එක සිහිපත් කරමින්, Think කොටස වේගයක් තෝරන බවත්, Act කොටස එම වේගය නියෝජිතයාට යොදන බවත් අපට සිතිය හැක. සාමාන්‍යයෙන් ක්‍රීඩා වල භෞතික විද්‍යා පද්ධතියක් ඇති අතර එය ඔබ වෙනුවෙන් මෙම කාර්යය ඉටු කරයි, එක් එක් වස්තුවේ වේග අගය ඉගෙන ගෙන එය සකස් කරයි. එමනිසා, ඔබට එක් කාර්යයක් සමඟ AI අත්හැරිය හැකිය - නියෝජිතයාට තිබිය යුතු වේගය තීරණය කිරීමට. නියෝජිතයා සිටිය යුත්තේ කොතැනදැයි ඔබ දන්නේ නම්, ඔබ එය නියමිත වේගයකින් නිවැරදි දිශාවට ගෙන යා යුතුය. ඉතා සුළු සමීකරණයක්:

කැමති_ගමන් = ගමනාන්තය_ස්ථානය - නියෝජිත_ස්ථානය

2D ලෝකයක් ගැන සිතන්න. නියෝජිතයා ලක්ෂ්‍යයේ (-2,-2), ගමනාන්තය ඊසාන දෙසින් ලක්ෂ්‍යයේ (30, 20) කොතැනක හෝ ඇත, සහ නියෝජිතයාට එහි යාමට අවශ්‍ය මාර්ගය (32, 22) වේ. මෙම ස්ථාන මීටර් වලින් මනිනු ලැබේ යැයි කියමු - අපි නියෝජිතයාගේ වේගය තත්පරයට මීටර් 5 ක් ලෙස ගතහොත්, අපි අපගේ විස්ථාපන දෛශිකය පරිමාණය කර දළ වශයෙන් (4.12, 2.83) වේගයක් ලබා ගනිමු. මෙම පරාමිතීන් සමඟින්, නියෝජිතයා තත්පර 8කින් පමණ එහි ගමනාන්තයට පැමිණේ.

ඔබට ඕනෑම වේලාවක අගයන් නැවත ගණනය කළ හැකිය. නියෝජිතයා ඉලක්කයට අඩක් තිබුනේ නම්, චලනය දිගෙන් අඩක් වනු ඇත, නමුත් නියෝජිතයාගේ උපරිම වේගය 5 m/s වන බැවින් (අපි මෙය ඉහත තීරණය කළෙමු), වේගය සමාන වේ. මෙය චලනය වන ඉලක්ක සඳහා ද ක්‍රියා කරයි, නියෝජිතයාට චලනය වන විට කුඩා වෙනස්කම් කිරීමට ඉඩ සලසයි.

නමුත් අපට වැඩි වෙනසක් අවශ්‍යයි - නිදසුනක් ලෙස, ස්ථාවරයේ සිට ධාවනය දක්වා චලනය වන චරිතයක් අනුකරණය කිරීමට වේගය සෙමින් වැඩි කරන්න. නැවැත්වීමට පෙර අවසානයේ දී ද එයම කළ හැකිය. මෙම විශේෂාංග සුක්කානම හැසිරීම් ලෙස හඳුන්වනු ලබන අතර, ඒ සෑම එකක්ම නිශ්චිත නම් ඇත: සොයන්න, පලා යන්න, පැමිණීම, ආදිය. අදහස වන්නේ නියෝජිතයාගේ ස්ථානය සහ ගමනාන්තය සමඟ වත්මන් වේගය සංසන්දනය කිරීම මත පදනම්ව නියෝජිතයාගේ වේගයට ත්වරණ බලය යෙදිය හැකි බවයි. ඉලක්කය කරා ගමන් කිරීම සඳහා විවිධ ක්රම භාවිතා කිරීම සඳහා.

සෑම හැසිරීමකටම තරමක් වෙනස් අරමුණක් ඇත. සෙවීම සහ පැමිණීම යනු නියෝජිතයෙකු ගමනාන්තයකට ගෙන යාමේ ක්‍රම වේ. බාධක මඟහැරීම සහ වෙන්වීම ඉලක්කය කරා යන ගමනේ ඇති බාධක වළක්වා ගැනීම සඳහා නියෝජිතයාගේ චලනය සකස් කරයි. පෙළගැස්ම සහ එකමුතුකම නියෝජිතයන් එකට ගමන් කරයි. සියලුම සාධක සැලකිල්ලට ගනිමින් තනි මාර්ග දෛශිකයක් නිපදවීමට විවිධ සුක්කානම් හැසිරීම් ගණනාවක් සාරාංශ කළ හැක. බිත්ති සහ අනෙකුත් නියෝජිතයින්ගෙන් ඈත් වීමට පැමිණීම, වෙන්වීම සහ බාධක වළක්වා ගැනීමේ හැසිරීම් භාවිතා කරන නියෝජිතයෙක්. මෙම ප්රවේශය අනවශ්ය විස්තර නොමැතිව විවෘත ස්ථානවල හොඳින් ක්රියා කරයි.

වඩාත් දුෂ්කර තත්වයන් තුළ, විවිධ හැසිරීම් එකතු කිරීම වඩාත් නරක ලෙස ක්‍රියා කරයි - නිදසුනක් ලෙස, පැමිණීම සහ බාධක වළක්වා ගැනීම අතර ගැටුමක් හේතුවෙන් නියෝජිතයෙකු බිත්තියක සිරවිය හැකිය. එමනිසා, ඔබ සියලු අගයන් එකතු කිරීමට වඩා සංකීර්ණ විකල්ප සලකා බැලිය යුතුය. මාර්ගය මෙයයි: එක් එක් හැසිරීම් වල ප්රතිඵල එකතු කිරීම වෙනුවට, ඔබට විවිධ දිශාවන්හි චලනය සලකා බලා හොඳම විකල්පය තෝරා ගත හැකිය.

කෙසේ වෙතත්, මාරාන්තික අන්තයන් සහ යා යුතු මාර්ගය පිළිබඳ තේරීම් සහිත සංකීර්ණ පරිසරයක, අපට ඊටත් වඩා දියුණු දෙයක් අවශ්‍ය වනු ඇත.

මගක් සෙවීම

විවෘත ප්‍රදේශයක (පාපන්දු පිටිය හෝ පිටියේ) සරල චලනය සඳහා සුක්කානම හැසිරීම් ඉතා විශිෂ්ට වන අතර, A සිට B දක්වා පැමිණීම බාධක වටා කුඩා හැරවුම් පමණක් සහිත සෘජු මාර්ගයකි. සංකීර්ණ මාර්ග සඳහා, අපට මාර්ග සොයාගැනීම අවශ්‍ය වේ, එය ලෝකය ගවේෂණය කිරීම සහ එය හරහා මාර්ගයක් තීරණය කිරීමකි.

සරලම දෙය නම් නියෝජිතයා අසල ඇති එක් එක් චතුරස්‍රයට ජාලකයක් යෙදීම සහ ඒවායින් ගමන් කිරීමට අවසර ඇත්තේ කුමන ඒවාදැයි තක්සේරු කිරීමයි. ඒවායින් එකක් ගමනාන්තයක් නම්, ඔබ ආරම්භයට පැමිණෙන තෙක් එක් එක් චතුරශ්‍රයේ සිට පෙරට යන මාර්ගය අනුගමනය කරන්න. මේ මාර්ගයයි. එසේ නොමැතිනම්, ඔබ ඔබේ ගමනාන්තය සොයා ගන්නා තෙක් හෝ ඔබට චතුරස්‍ර අවසන් වන තුරු අවට ඇති අනෙකුත් චතුරස්‍ර සමඟ ක්‍රියාවලිය නැවත කරන්න (එනම් කළ හැකි මාර්ගයක් නොමැති බව). මෙය විධිමත් ලෙස Breadth-First Search හෝ BFS (breadth-first search algorithm) ලෙස හැඳින්වේ. සෑම පියවරකදීම ඔහු සෑම දිශාවකටම බලයි (එබැවින් පළල, "පළල"). සෙවුම් අවකාශය එය අපේක්ෂිත ස්ථානයට ළඟා වන තෙක් චලනය වන තරංග පෙරමුණක් වැනිය - අවසාන ලක්ෂ්‍යය ඇතුළත් වන තෙක් සෙවුම් අවකාශය සෑම පියවරකදීම පුළුල් වේ, ඉන්පසු එය ආරම්භය දක්වා සොයාගත හැකිය.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

එහි ප්රතිඵලයක් වශයෙන්, අපේක්ෂිත මාර්ගය සම්පාදනය කර ඇති වර්ග ලැයිස්තුවක් ඔබට ලැබෙනු ඇත. මෙය මාර්ගයයි (එබැවින්, මාර්ග සෙවීම) - ගමනාන්තය අනුගමනය කරන අතරතුර නියෝජිතයා පැමිණෙන ස්ථාන ලැයිස්තුවකි.

Учитывая, что мы знаем положение каждого квадрата в мире, можно использовать steering behaviours, чтобы двигаться по пути — от узла 1 к узлу 2, затем от узла 2 к узлу 3 и так далее. Простейший вариант — направиться к центру следующего квадрата, но еще лучше — остановиться на середине грани между текущим квадратом и следующим. Из-за этого агент сможет срезать углы на крутых поворотах.

У алгоритма BFS есть и минусы — он исследует столько же квадратов в «неправильном» направлении, сколько в «правильном». Здесь появляется более сложный алгоритм под названием A* (A star). Он работает также, но вместо слепого изучения квадратов-соседей (затем соседей соседей, затем соседей соседей соседей и так далее), он собирает узлы в список и сортирует их так, что следующий исследуемый узел всегда тот, который приведет к кратчайшему маршруту. Узлы сортируются на основе эвристики, которая учитывает две вещи — «стоимость» гипотетического маршрута к нужному квадрату (включая любые затраты на перемещение) и оценку того, насколько далеко этот квадрат от места назначения (смещая поиск в правильном направлении).

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

මෙම උදාහරණය පෙන්නුම් කරන්නේ නියෝජිතයා වරකට එක් චතුරස්‍රයක් ගවේෂණය කරන අතර, සෑම අවස්ථාවකදීම යාබදව වඩාත්ම බලාපොරොත්තු වන එක තෝරා ගන්නා බවයි. ප්‍රතිඵලයක් ලෙස ලැබෙන මාර්ගය BFS හා සමාන වේ, නමුත් ක්‍රියාවලියේදී අඩු වර්ග කිහිපයක් සලකා ඇත - එය ක්‍රීඩා ක්‍රියාකාරිත්වයට විශාල බලපෑමක් ඇති කරයි.

ජාලයක් නොමැතිව චලනය

නමුත් බොහෝ ක්‍රීඩා ජාලයක් මත තබා නොමැති අතර, යථාර්ථවාදය කැප නොකර එය බොහෝ විට කළ නොහැක. සම්මුති අවශ්යයි. වර්ග ප්රමාණය කොපමණ විය යුතුද? ඉතා විශාල වන අතර ඔවුන්ට කුඩා කොරිඩෝ හෝ හැරීම් නිවැරදිව නිරූපනය කිරීමට නොහැකි වනු ඇත, ඉතා කුඩා වන අතර සෙවීමට බොහෝ කොටු ඇත, එය අවසානයේ බොහෝ කාලයක් ගතවනු ඇත.

තේරුම් ගත යුතු පළමු දෙය නම් දැලක් අපට සම්බන්ධිත නෝඩ් වල ප්‍රස්ථාරයක් ලබා දෙන බවයි. A* සහ BFS ඇල්ගොරිතම සැබවින්ම ප්‍රස්ථාර මත ක්‍රියා කරන අතර අපගේ දැල් ගැන කිසිසේත් තැකීමක් නොකරයි. අපට ක්‍රීඩා ලෝකයේ ඕනෑම තැනක නෝඩ් දැමිය හැකිය: සම්බන්ධිත නෝඩ් දෙකක් අතර මෙන්ම ආරම්භක සහ අවසාන ලක්ෂ්‍ය සහ අවම වශයෙන් එක් නෝඩ් අතර සම්බන්ධතාවයක් පවතින තාක් කල්, ඇල්ගොරිතම පෙර පරිදිම ක්‍රියා කරයි. සෑම නෝඩයක්ම ලෝකයේ ඕනෑම උපකල්පිත මාර්ග ගණනක කොටසක් විය හැකි සැලකිය යුතු ස්ථානයක් නියෝජනය කරන බැවින් මෙය බොහෝ විට මාර්ග ලක්ෂ්‍ය පද්ධතියක් ලෙස හැඳින්වේ.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි
උදාහරණ 1: සෑම චතුරශ්‍රයකම ගැටයක්. සෙවුම නියෝජිතයා පිහිටා ඇති නෝඩයෙන් ආරම්භ වන අතර අපේක්ෂිත චතුරස්රයේ නෝඩයෙන් අවසන් වේ.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි
උදාහරණ 2: කුඩා නෝඩ් කට්ටලයක් (මාර්ග ලක්ෂ්‍ය). සෙවීම නියෝජිතයාගේ චතුරශ්‍රයෙන් ආරම්භ වන අතර, අවශ්‍ය නෝඩ් ගණන හරහා ගොස්, ගමනාන්තය දක්වා ඉදිරියට යයි.

Это вполне гибкая и мощная система. Но нужна некоторая осторожность в решениях, где и как поместить waypoint, иначе агенты могут просто не увидеть ближайшую точку и не смогут начать путь. Было бы проще, если мы могли автоматически расставить путевые точки на основе геометрии мира.

සංචාලන දැලක් හෝ navmesh (නාවික දැලක්) දිස්වන්නේ මෙහිදීය. මෙය සාමාන්‍යයෙන් ත්‍රිකෝණ 2D දැලක් වන අතර එය ලෝකයේ ජ්‍යාමිතිය මත ආවරණය කර ඇත - නියෝජිතයාට ඇවිදීමට අවසර ඇති ඕනෑම තැනක. දැලෙහි ඇති සෑම ත්‍රිකෝණයක්ම ප්‍රස්ථාරයේ නෝඩයක් බවට පත්වන අතර, ප්‍රස්ථාරයේ යාබද නෝඩ් බවට පත්වන යාබද ත්‍රිකෝණ තුනක් දක්වා ඇත.

මෙම පින්තූරය යුනිටි එන්ජිමෙන් උදාහරණයකි - එය ලෝකයේ ජ්‍යාමිතිය විශ්ලේෂණය කර නවමේෂ් නිර්මාණය කළේය (ලා නිල් පැහැති තිර රුවක් තුළ). navmesh එකක ඇති සෑම බහුඅස්‍රයක්ම නියෝජිතයෙකුට එක් බහුඅස්‍රයකින් තවත් බහුඅස්‍රයකට නැගී සිටීමට හෝ ගමන් කිරීමට හැකි ප්‍රදේශයකි. මෙම උදාහරණයේ දී, බහුඅස්ර පිහිටා ඇති මහල් වලට වඩා කුඩා වේ - මෙය සිදු කරනුයේ නියෝජිතයාගේ ප්‍රමාණය සැලකිල්ලට ගැනීම සඳහා වන අතර එය එහි නාමික ස්ථානයෙන් ඔබ්බට විහිදේ.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

නැවතත් A* ඇල්ගොරිතම භාවිතයෙන් අපට මෙම දැල හරහා මාර්ගයක් සෙවිය හැක. මෙය අපට ලෝකයේ පරිපූර්ණ මාර්ගයක් ලබා දෙනු ඇත, එය සියලු ජ්‍යාමිතිය සැලකිල්ලට ගන්නා අතර අනවශ්‍ය නෝඩ් සහ මාර්ග ලක්ෂ්‍ය නිර්මාණය කිරීම අවශ්‍ය නොවේ.

මාර්ග සොයාගැනීම ඉතා පුළුල් මාතෘකාවක් වන අතර ඒ සඳහා ලිපියක එක් කොටසක් ප්‍රමාණවත් නොවේ. ඔබට එය වඩාත් විස්තරාත්මකව අධ්‍යයනය කිරීමට අවශ්‍ය නම්, මෙය උපකාරී වේ сайт Амита Пателя.

සැලසුම්

Мы убедились с pathfinding, что иногда недостаточно просто выбрать направление и двигаться — мы должны выбрать маршрут и сделать несколько поворотов, чтобы добраться до нужного места назначения. Мы можем обобщить эту идею: достижение цели это не просто следующий шаг, а целая последовательность, где иной раз требуется заглянуть вперед на несколько шагов, чтобы узнать, каким должен быть первый. Это называется планированием. Pathfinding можно рассматривать как одно из нескольких дополнений планирования. С точки зрения нашего цикла Sense/Think/Act, это то, где часть Think планирует несколько частей Act на будущее.

පුවරු ක්‍රීඩාව Magic: The Gathering හි උදාහරණය දෙස බලමු. අපි මුලින්ම යන්නේ පහත කාඩ්පත් අපගේ අතේ තබාගෙන ය:

  • වගුරු බිම - කළු මානා 1 ක් (ඉඩම් කාඩ්පත) ලබා දෙයි.
  • වනාන්තරය - හරිත මානා 1 ක් (ඉඩම් කාඩ්පත) ලබා දෙයි.
  • Fugitive Wizard — требует 1 синию ману для призыва.
  • Elvish Mystic — требует 1 зеленую ману для призыва.

එය පහසු කිරීම සඳහා අපි ඉතිරි කාඩ්පත් තුන නොසලකා හරිමු. නීතිරීතිවලට අනුව, ක්‍රීඩකයෙකුට වාරයකට ඉඩම් කාඩ්පත් 1 ක් ක්‍රීඩා කිරීමට අවසර ඇත, ඔහුට මෙම කාඩ්පතෙන් මානා ලබා ගැනීමට “තට්ටු” කළ හැකි අතර, පසුව මානා ප්‍රමාණය අනුව (ජීවියෙකු කැඳවීම ඇතුළුව) අක්ෂර වින්‍යාසය කළ හැකිය. මෙම තත්වය තුළ, මානව ක්‍රීඩකයා ෆොරස්ට් ක්‍රීඩා කිරීමටත්, හරිත මානා 1 ක් තට්ටු කිරීමටත්, පසුව එල්විෂ් මිස්ටික් කැඳවීමටත් දනී. නමුත් AI ක්‍රීඩාව මෙය හඳුනා ගන්නේ කෙසේද?

පහසු සැලසුම් කිරීම

නොගැලපෙන ප්‍රවේශය නම් සුදුසු ක්‍රියාවක් ඉතිරි නොවන තෙක් සෑම ක්‍රියාවක්ම උත්සාහ කිරීමයි. කාඩ්පත් බැලීමෙන්, Swamp ට සෙල්ලම් කළ හැකි දේ AI දකී. ඒ වගේම ඔහු එය වාදනය කරනවා. මෙම හැරවුම ඉතිරිව ඇති වෙනත් ක්‍රියා තිබේද? එයට Elvish Mystic හෝ Fugitive Wizard කැඳවිය නොහැක, මන්ද ඔවුන්ට ඔවුන් කැඳවීමට පිළිවෙලින් කොළ සහ නිල් මානා අවශ්‍ය වන අතර, Swamp සපයන්නේ කළු මානා පමණි. ඔහු දැනටමත් Swamp ක්‍රීඩා කර ඇති නිසා ඔහුට තවදුරටත් Forest ක්‍රීඩා කිරීමට නොහැකි වනු ඇත. මේ අනුව, AI ක්‍රීඩාව නීති රීති අනුගමනය කළ නමුත් එය දුර්වල ලෙස සිදු කළේය. වැඩිදියුණු කළ හැක.

සැලසුම් කිරීම මගින් ක්රීඩාව අපේක්ෂිත තත්වයට ගෙන එන ක්රියා ලැයිස්තුවක් සොයාගත හැකිය. මාර්ගයක සෑම චතුරශ්‍රයකම අසල්වැසියන් (මාර්ග සෙවීමේදී) සිටියා සේම, සැලැස්මක සෑම ක්‍රියාවකටම අසල්වැසියන් හෝ අනුප්‍රාප්තිකයන් ඇත. අපි අපේක්ෂිත තත්වයට පැමිණෙන තෙක් මෙම ක්රියාවන් සහ පසුව ක්රියාවන් ගැන සොයා බැලිය හැකිය.

В нашем примере, желаемый результат «вызвать существо, если это возможно». В начале хода мы видим только два возможных действия, разрешенных правилами игры:

1. Swamp සෙල්ලම් කරන්න (ප්‍රතිඵලය: ක්‍රීඩාවේ වගුරු බිම්)
2. Play Forest (ප්‍රතිඵලය: ක්‍රීඩාවේ වනාන්තරය)

Каждое принятое действие может привести к дальнейшим действиям и закрыть другие, опять же в зависимости от правил игры. Представьте, что мы сыграли Swamp — это удалит Swamp в качестве следующего шага (мы его уже сыграли), также это удалит и Forest (потому что по правилам можно сыграть одну карту земли за ход). После этого ИИ добавляет в качестве следующего шага — получение 1 черной маны, потому что других вариантов нет. Если он пойдет дальше и выберет Tap the Swamp, то получит 1 единицу черной маны и ничего с ней не сможет сделать.

1. Swamp සෙල්ලම් කරන්න (ප්‍රතිඵලය: ක්‍රීඩාවේ වගුරු බිම්)
1.1 «Тапнуть» Swamp (результат: Swamp «тапнута», +1 единица черной маны)
Нет доступных действий – КОНЕЦ
2. Play Forest (ප්‍රතිඵලය: ක්‍රීඩාවේ වනාන්තරය)

ක්‍රියා ලැයිස්තුව කෙටි විය, අපි අන්තයකට ළඟා විය. අපි ඊළඟ පියවර සඳහා ක්රියා පටිපාටිය නැවත කරන්නෙමු. අපි වනාන්තරය වාදනය කරමු, “ග්‍රීන් මානා 1 ක් ලබා ගන්න” ක්‍රියාව විවෘත කරන්න, එමඟින් තුන්වන ක්‍රියාව විවෘත වේ - එල්විෂ් මිස්ටික් කැඳවන්න.

1. Swamp සෙල්ලම් කරන්න (ප්‍රතිඵලය: ක්‍රීඩාවේ වගුරු බිම්)
1.1 «Тапнуть» Swamp (результат: Swamp «тапнута», +1 единица черной маны)
Нет доступных действий – КОНЕЦ
2. Play Forest (ප්‍රතිඵලය: ක්‍රීඩාවේ වනාන්තරය)
2.1 “ටැප්” වනාන්තරය (ප්‍රතිඵලය: වනාන්තරය “ටැප් කර ඇත”, හරිත මානා +1 ඒකකය)
2.1.1 Elvish Mystic කැඳවන්න (ප්‍රතිඵලය: Elvish Mystic in play, -1 green mana)
Нет доступных действий – КОНЕЦ

අවසාන වශයෙන්, අපි හැකි සෑම ක්‍රියාවක්ම ගවේෂණය කර ජීවියෙකු කැඳවන සැලැස්මක් සොයා ගත්තෙමු.

මෙය ඉතා සරල උදාහරණයකි. යම් නිර්ණායක සපුරාලන ඕනෑම සැලැස්මකට වඩා හැකි හොඳම සැලැස්ම තෝරා ගැනීම යෝග්ය වේ. ඒවා ක්‍රියාත්මක කිරීමේ ප්‍රතිඵලය හෝ සමස්ත ප්‍රතිලාභය මත පදනම්ව විභව සැලසුම් ඇගයීම සාමාන්‍යයෙන් කළ හැකිය. ඉඩම් කාඩ්පතක් ක්‍රීඩා කිරීම සඳහා ඔබට ලකුණු 1 ක් සහ ජීවියෙකු කැඳවීම සඳහා ලකුණු 3 ක් ලබා ගත හැකිය. Swamp ක්‍රීඩා කිරීම ලකුණු 1 සැලැස්මක් වනු ඇත. සහ Forest වාදනය කිරීම → Tap the Forest → කැඳවීම Elvish Mystic වහාම ලකුණු 4ක් ලබා දෙනු ඇත.

Magic: The Gathering හි සැලසුම් කිරීම ක්‍රියාත්මක වන ආකාරය මෙයයි, නමුත් එම තර්කය වෙනත් අවස්ථාවන්හිදී අදාළ වේ. නිදසුනක් වශයෙන්, බිෂොප්වරයාට චෙස් ක්‍රීඩාවේ යෙදීමට ඉඩ සැලසීම සඳහා උකස් ගෙනයාම. එසේත් නැතිනම් XCOM හි ආරක්ෂිතව වෙඩි තැබීමට බිත්තියක් පිටුපස ආවරණයක් ගන්න. පොදුවේ, ඔබට අදහස ලැබේ.

වැඩිදියුණු කළ සැලසුම්කරණය

සමහර විට හැකි සෑම විකල්පයක්ම සලකා බැලීමට බොහෝ විභව ක්‍රියා තිබේ. මැජික් සමඟ උදාහරණය වෙත ආපසු යාම: එකතු කිරීම: ක්‍රීඩාවේ සහ ඔබේ අතේ ඉඩම් සහ සත්ව කාඩ්පත් කිහිපයක් ඇති බව කියමු - චලනයන්හි හැකි සංයෝජන ගණන දුසිම් ගණනකින් විය හැකිය. ගැටලුවට විසඳුම් කිහිපයක් තිබේ.

Первый способ — backwards chaining (обратное формирование цепи). Вместо перебора всех комбинаций, лучше начать с итогового результата и попробовать найти прямой маршрут. Вместо пути от корня дерева к определенному листу, мы двигаемся в обратном направлении — от листа к корню. Этот способ проще и быстрее.

සතුරාට 1 සෞඛ්යයක් තිබේ නම්, ඔබට "ඩීල් 1 හෝ ඊට වැඩි හානියක්" සැලැස්ම සොයාගත හැකිය. මෙය සාක්ෂාත් කර ගැනීම සඳහා, කොන්දේසි ගණනාවක් සපුරාලිය යුතුය:

1. මන්තර ගුරුකම් නිසා හානි සිදුවිය හැක - එය අතේ තිබිය යුතුය.
2. මන්තර ගුරුකම් කිරීමට, ඔබට මන අවශ්ය වේ.
3. මානා ලබා ගැනීමට, ඔබ ඉඩම් කාඩ්පතක් සෙල්ලම් කළ යුතුය.
4. Чтобы разыграть карту земли — нужно иметь ее в руке.

තවත් ක්රමයක් වන්නේ හොඳම පළමු සෙවීමයි. සියලුම මාර්ග උත්සාහ කරනවා වෙනුවට, අපි වඩාත් සුදුසු මාර්ගය තෝරා ගනිමු. බොහෝ විට, මෙම ක්රමය අනවශ්ය සෙවුම් පිරිවැයකින් තොරව ප්රශස්ත සැලැස්මක් ලබා දෙයි. A* යනු හොඳම පළමු සෙවීමේ ආකාරයකි - ආරම්භයේ සිටම වඩාත් පොරොන්දු වූ මාර්ග පරීක්ෂා කිරීමෙන්, වෙනත් විකල්ප පරීක්ෂා කිරීමකින් තොරව දැනටමත් හොඳම මාර්ගය සොයා ගත හැක.

Интересным и все более популярным вариантом best-first search является Monte Carlo Tree Search. Вместо угадывания, какие планы лучше других при выборе каждого последующего действия, алгоритм выбирает случайных преемников на каждом шаге, пока не достигнет конца (когда план привел к победе или поражению). Затем итоговый результат используется для повышения или понижения оценки «веса» предыдущих вариантов. Повторяя этот процесс несколько раз подряд, алгоритм дает хорошую оценку того, какой следующий шаг лучше, даже если ситуация изменится (если противник примет меры, чтобы помешать игроку).

ඉලක්ක-නැඹුරු ක්‍රියාකාරී සැලසුම් කිරීම හෝ GOAP (ඉලක්ක-නැඹුරු ක්‍රියා සැලසුම් කිරීම) නොමැතිව ක්‍රීඩා වල සැලසුම් පිළිබඳ කිසිදු කථාවක් සම්පූර්ණ නොවනු ඇත. මෙය බහුලව භාවිතා වන සහ සාකච්ඡා කරන ලද ක්‍රමයක් වන නමුත් කැපී පෙනෙන විස්තර කිහිපයක් හැරුණු විට එය අත්‍යවශ්‍යයෙන්ම අප කලින් කතා කළ පසුගාමී දාම ක්‍රමයයි. අරමුණ "ක්රීඩකයා විනාශ කිරීම" නම් සහ ක්රීඩකයා ආවරණය පිටුපස සිටී නම්, සැලැස්ම විය හැකිය: අත්බෝම්බයකින් විනාශ කරන්න → එය ලබා ගන්න → විසි කරන්න.

සාමාන්‍යයෙන් ඉලක්ක කිහිපයක් ඇත, ඒ සෑම එකක්ම එහි ප්‍රමුඛතාවය ඇත. ඉහළම ප්‍රමුඛතා පරමාර්ථය සම්පූර්ණ කළ නොහැකි නම් (ක්‍රීඩකයා නොපෙනෙන බැවින් කිසිදු ක්‍රියාවක එකතුවක් "ක්‍රීඩකයා මරා දමන්න" සැලැස්මක් නිර්මාණය නොකරයි), AI නැවත අඩු ප්‍රමුඛතා අරමුණු කරා ඇද වැටෙනු ඇත.

පුහුණුව සහ අනුවර්තනය

ක්‍රීඩාව AI සාමාන්‍යයෙන් යන්ත්‍ර ඉගෙනීම භාවිතා නොකරන බව අපි දැනටමත් පවසා ඇත, මන්ද එය තථ්‍ය කාලය තුළ නියෝජිතයන් කළමනාකරණය කිරීමට සුදුසු නොවේ. නමුත් මෙම ප්රදේශයෙන් ඔබට යමක් ණයට ගත නොහැකි බව මින් අදහස් නොවේ. අපට යමක් ඉගෙන ගත හැකි වෙඩික්කරුවෙකු තුළ ප්‍රතිවාදියෙකු අවශ්‍යයි. උදාහරණයක් ලෙස, සිතියමේ හොඳම ස්ථාන ගැන සොයා බලන්න. නැතහොත් සටන් ක්‍රීඩාවක සිටින ප්‍රතිවාදියෙකු ක්‍රීඩකයාගේ නිතර භාවිතා කරන සංයෝජන චලනයන් අවහිර කරයි, ඔහු අන් අය භාවිතා කිරීමට පොළඹවයි. එබැවින් එවැනි අවස්ථාවන්හිදී යන්ත්‍ර ඉගෙනීම බෙහෙවින් ප්‍රයෝජනවත් විය හැකිය.

සංඛ්යාලේඛන සහ සම්භාවිතා

අපි සංකීර්ණ උදාහරණ වෙත යාමට පෙර, සරල මිණුම් කිහිපයක් ගෙන තීරණ ගැනීමට ඒවා භාවිතා කිරීමෙන් අපට කොපමණ දුරක් යා හැකිදැයි බලමු. උදාහරණයක් ලෙස, තත්‍ය කාලීන උපාය - ක්‍රීඩාවේ පළමු මිනිත්තු කිහිපය තුළ ක්‍රීඩකයෙකුට ප්‍රහාරයක් දියත් කළ හැකිද යන්න සහ මෙයට එරෙහිව සූදානම් විය යුතු ආරක්ෂාව කුමක්ද යන්න අපි තීරණය කරන්නේ කෙසේද? අනාගත ප්‍රතික්‍රියා මොනවාද යන්න තේරුම් ගැනීමට අපට ක්‍රීඩකයෙකුගේ අතීත අත්දැකීම් අධ්‍යයනය කළ හැකිය. ආරම්භ කිරීම සඳහා, අපට එවැනි අමු දත්ත නොමැත, නමුත් අපට එය එකතු කළ හැකිය - AI මිනිසෙකුට එරෙහිව ක්‍රීඩා කරන සෑම අවස්ථාවකම, එයට පළමු ප්‍රහාරයේ වේලාව වාර්තා කළ හැකිය. සැසි කිහිපයකට පසු, අනාගතයේදී ක්‍රීඩකයාට පහර දීමට ගතවන කාලය පිළිබඳ සාමාන්‍යයක් අපට ලැබෙනු ඇත.

සාමාන්‍ය අගයන් පිළිබඳ ගැටළුවක් ද ඇත: ක්‍රීඩකයෙකු 20 වතාවක් වේගයෙන් ගොස් 20 වතාවක් සෙමින් ක්‍රීඩා කරන්නේ නම්, අවශ්‍ය අගයන් මැද කොතැනක හෝ පවතිනු ඇති අතර මෙය අපට ප්‍රයෝජනවත් කිසිවක් ලබා නොදේ. එක් විසඳුමක් වන්නේ ආදාන දත්ත සීමා කිරීමයි - අවසාන කෑලි 20 සැලකිල්ලට ගත හැකිය.

Аналогичный подход используется при оценке вероятности определенных действий, предполагая, что прошлые предпочтения игрока будут такими же в будущем. Если игрок атакует нас пять раз фаерболом, два раза молнией и один раз врукопашную, очевидно, что он предпочитает фаербол. Экстраполируем и увидим вероятность использования различного оружия: фаербол=62,5%, молния=25% и рукопашная=12,5%. Нашему игровому ИИ нужно подготовиться к защите от огня.

තවත් රසවත් ක්‍රමයක් නම් Naive Bayes Classifier භාවිතා කර විශාල ආදාන දත්ත ප්‍රමාණයක් අධ්‍යයනය කිරීම සහ AI අවශ්‍ය ආකාරයට ප්‍රතික්‍රියා කරන පරිදි තත්ත්වය වර්ගීකරණය කිරීමයි. ඊමේල් අයාචිත තැපැල් පෙරහන් වල භාවිතා කිරීම සඳහා Bayesian වර්ගීකාරක වඩාත් ප්‍රසිද්ධය. එහිදී ඔවුන් වචන පරීක්‍ෂා කර, එම වචන මීට පෙර (අයාචිත තැපෑලෙන් හෝ නැත) දිස් වූ ස්ථානයට සසඳා, එන ඊමේල් පිළිබඳ නිගමනවලට එළඹේ. අඩු යෙදවුම් වලින් පවා අපට එකම දේ කළ හැකිය. AI විසින් දකින සියලුම ප්‍රයෝජනවත් තොරතුරු මත පදනම්ව (සතුරු ඒකක නිර්මාණය කර ඇති දේ, හෝ ඔවුන් භාවිතා කරන අක්ෂර වින්‍යාසය, හෝ ඔවුන් පර්යේෂණ කළ තාක්ෂණයන් වැනි) සහ අවසාන ප්‍රති result ලය (යුද්ධය හෝ සාමය, ඉක්මන් හෝ ආරක්ෂා කිරීම යනාදිය) - අපි අපේක්ෂිත AI හැසිරීම තෝරා ගනිමු.

මෙම සියලු පුහුණු ක්රම ප්රමාණවත් වේ, නමුත් පරීක්ෂණ දත්ත මත පදනම්ව ඒවා භාවිතා කිරීම යෝග්ය වේ. ඔබගේ ක්‍රීඩකයින් භාවිතා කර ඇති විවිධ උපාය මාර්ග වලට අනුවර්තනය වීමට AI ඉගෙන ගනු ඇත. මුදා හැරීමෙන් පසු ක්‍රීඩකයාට අනුවර්තනය වන AI පුරෝකථනය කළ නොහැකි හෝ පරාජය කිරීමට අපහසු විය හැකිය.

Адаптация на основе значений

අපගේ ක්‍රීඩා ලෝකයේ අන්තර්ගතය සහ නීතිරීති අනුව, අපට ආදාන දත්ත භාවිතා කරනවාට වඩා තීරණ ගැනීමට බලපාන අගයන් සමූහය වෙනස් කළ හැකිය. අපි මෙය කරන්නේ:

  • ක්‍රීඩාව අතරතුර (ඉහත පරිදි) ලෝකයේ තත්ත්වය සහ ප්‍රධාන සිදුවීම් පිළිබඳ දත්ත රැස් කිරීමට AI හට ඉඩ දෙන්න.
  • Изменим несколько важных значений (value) на основе этих данных.
  • මෙම අගයන් සැකසීම හෝ ඇගයීම මත පදනම්ව අපි අපගේ තීරණ ක්‍රියාත්මක කරන්නෙමු.

උදාහරණයක් ලෙස, නියෝජිතයෙකුට පළමු පුද්ගල වෙඩික්කරු සිතියමක තෝරා ගැනීමට කාමර කිහිපයක් තිබේ. සෑම කාමරයකටම තමන්ගේම වටිනාකමක් ඇත, එය සංචාරය කිරීම කොතරම් යෝග්යද යන්න තීරණය කරයි. AI අහඹු ලෙස අගය මත පදනම්ව යා යුතු කාමරය තෝරා ගනී. නියෝජිතයා පසුව ඔහු මරා දැමුවේ කුමන කාමරයේදීද යන්න සිහිපත් කර එහි වටිනාකම අඩු කරයි (ඔහු එහි ආපසු පැමිණීමේ සම්භාවිතාව). ඒ හා සමානව ප්‍රතිලෝම තත්ත්වය සඳහා - නියෝජිතයා බොහෝ විරුද්ධවාදීන් විනාශ කරන්නේ නම්, කාමරයේ වටිනාකම වැඩි වේ.

මාර්කොව් ආකෘතිය

අපි එකතු කරගත් දත්ත අනාවැකි කීමට යොදා ගත්තොත්? අපි ක්‍රීඩකයෙකු දකින සෑම කාමරයක්ම නිශ්චිත කාලයක් සඳහා මතක තබා ගන්නේ නම්, ක්‍රීඩකයා කුමන කාමරයට යා හැකිද යන්න අපි අනාවැකි පළ කරමු. කාමර (අගය) හරහා ක්‍රීඩකයාගේ චලනයන් ලුහුබැඳීමෙන් සහ පටිගත කිරීමෙන් අපට ඒවා පුරෝකථනය කළ හැකිය.

අපි කාමර තුනක් ගනිමු: රතු, කොළ සහ නිල්. ක්‍රීඩා සැසිය නරඹමින් සිටියදී අප විසින් පටිගත කරන ලද නිරීක්ෂණ ද:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

සෑම කාමරයකම නිරීක්ෂණ ගණන බොහෝ දුරට සමාන වේ - සැඟවී සිටීම සඳහා හොඳ ස්ථානයක් සෑදිය යුත්තේ කොතැනදැයි අපි තවමත් නොදනිමු. සිතියම පුරා ඒකාකාරව දිස්වන ක්‍රීඩකයින් නැවත බිහිවීම මගින් සංඛ්‍යාලේඛන එකතු කිරීම ද සංකීර්ණ වේ. නමුත් සිතියමේ දර්ශනය වීමෙන් පසු ඔවුන් ඇතුළු වන ඊළඟ කාමරය පිළිබඳ දත්ත දැනටමත් ප්රයෝජනවත් වේ.

Видно, что зеленая комната устраивает игроков — большинство людей из красной переходят в нее, 50% которых остается там и дальше. Синяя комната наоборот не пользуется популярность, в нее почти не ходят, а если ходят, то не задерживаются.

නමුත් දත්ත අපට වඩා වැදගත් දෙයක් කියයි - ක්‍රීඩකයෙකු නිල් කාමරයක සිටින විට, අපි ඔහුව දකින ඊළඟ කාමරය රතු මිස කොළ නොවේ. රතු කාමරයට වඩා හරිත කාමරය ජනප්‍රිය වුවද, ක්‍රීඩකයා නිල් කාමරයේ සිටී නම් තත්වය වෙනස් වේ. ඊළඟ තත්ත්වය (එනම් ක්‍රීඩකයා යන කාමරය) පෙර තත්ත්වය මත රඳා පවතී (එනම් ක්‍රීඩකයා දැනට සිටින කාමරය). අපි පරායත්තතා ගවේෂණය කරන නිසා, අපි ස්වාධීනව නිරීක්ෂණ ගණනය කරනවාට වඩා නිවැරදි අනාවැකි පළ කරන්නෙමු.

Предугадывание будущего состояния на основе данных прошлого состояния называется марковской моделью (Markov model), а такие примеры (с комнатами) называют марковскими цепями. Поскольку модели представляют собой вероятность изменений между последовательными состояниями, визуально они отображаются в виде FSM с вероятностью около каждого перехода. Ранее мы использовали FSM для представления поведенческого состояния, в котором находился агент, но эта концепция распространяется на любое состояние, независимо от того, связано это с агентом или нет. В этом случае состояния представляют комнату, которую занимает агент:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

මෙය රාජ්‍ය වෙනස්වීම්වල සාපේක්ෂ සම්භාවිතාව නිරූපණය කිරීමේ සරල ක්‍රමයකි, AI හට මීළඟ තත්ත්වය පුරෝකථනය කිරීමට යම් හැකියාවක් ලබා දෙයි. ඔබට ඉදිරි පියවර කිහිපයක් අපේක්ෂා කළ හැකිය.

ක්‍රීඩකයෙකු හරිත කාමරයේ සිටී නම්, ඊළඟ වතාවේ ඔහු නිරීක්ෂණය කරන විට ඔහු එහි රැඳී සිටීමට 50% ක සම්භාවිතාවක් ඇත. නමුත් ඔහු තවමත් එහි සිටීමට ඇති අවස්ථා මොනවාද? නිරීක්ෂණ දෙකකින් පසුව ක්‍රීඩකයා හරිත කාමරයේ රැඳී සිටීමේ අවස්ථාවක් පමණක් නොව, ඔහු පිටත්ව ගොස් ආපසු පැමිණීමේ අවස්ථාවක් ද තිබේ. නව දත්ත සැලකිල්ලට ගනිමින් නව වගුව මෙන්න:

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි

Из нее видно, что шанс увидеть игрока в зеленой комнате после двух наблюдений будет равен 51% — 21%, что он придется из красной комнаты, 5% из них, что игрок посетит синюю комнату между ними, и 25%, что игрок вообще не уйдет из зеленой комнаты.

වගුව හුදෙක් දෘශ්‍ය මෙවලමකි - ක්‍රියා පටිපාටියට අවශ්‍ය වන්නේ එක් එක් පියවරේදී සම්භාවිතාව ගුණ කිරීම පමණි. මෙයින් අදහස් කරන්නේ ඔබට එක් අවවාදයකින් අනාගතය දෙස බැලිය හැකි බවයි: කාමරයකට ඇතුළු වීමේ අවස්ථාව සම්පූර්ණයෙන්ම පවතින කාමරය මත රඳා පවතින බව අපි උපකල්පනය කරමු. මෙය මාර්කොව් දේපල ලෙස හැඳින්වේ - අනාගත තත්වය රඳා පවතින්නේ වර්තමානය මත පමණි. නමුත් මෙය සියයට සියයක් නිවැරදි නොවේ. ක්‍රීඩකයින්ට වෙනත් සාධක මත පදනම්ව තීරණ වෙනස් කළ හැකිය: සෞඛ්‍ය මට්ටම හෝ පතොරම් ප්‍රමාණය. අපි මෙම අගයන් වාර්තා නොකරන නිසා, අපගේ අනාවැකි අඩු නිවැරදි වනු ඇත.

N-Grams

සටන් ක්‍රීඩාවක උදාහරණය සහ ක්‍රීඩකයාගේ සංයෝජන චලනයන් අනාවැකි කීම ගැන කුමක් කිව හැකිද? ඒකමයි! නමුත් එක් ප්‍රාන්තයක් හෝ සිදුවීමක් වෙනුවට, අපි ඒකාබද්ධ වැඩ වර්ජනයක් සාදන සම්පූර්ණ අනුපිළිවෙල පරීක්ෂා කරන්නෙමු.

මෙය කිරීමට එක් ක්‍රමයක් නම්, එක් එක් ආදානය (කික්, පන්ච් හෝ බ්ලොක් වැනි) බෆරයක ගබඩා කර සම්පූර්ණ බෆරයම සිදුවීමක් ලෙස ලිවීමයි. එබැවින් SuperDeathFist ප්‍රහාරය භාවිතා කිරීමට ක්‍රීඩකයා නැවත නැවතත් කික්, කික්, පන්ච් එබයි, AI පද්ධතිය සියලුම යෙදවුම් බෆරයක ගබඩා කරන අතර එක් එක් පියවරේදී භාවිතා කළ අවසාන තුන මතක තබා ගනී.

සූදු AI නිර්මාණය කරන්නේ කෙසේද: ආරම්භකයින් සඳහා මාර්ගෝපදේශයකි
(තඩි අකුරින් රේඛා යනු ක්‍රීඩකයා SuperDeathFist ප්‍රහාරය දියත් කරන විටය.)

ක්‍රීඩකයා කික් එකක් තෝරාගෙන, පසුව තවත් කික් එකක් තෝරා ගත් විට, ඊළඟ ආදානය සෑම විටම පන්ච් බව AI විසින් සියලු විකල්ප දකිනු ඇත. මෙමගින් නියෝජිතයාට SuperDeathFist හි සංයුක්ත චලනය පුරෝකථනය කිරීමට සහ හැකි නම් එය අවහිර කිරීමට ඉඩ ලබා දේ.

මෙම සිදුවීම් අනුපිළිවෙල N-grams ලෙස හැඳින්වේ, N යනු ගබඩා කර ඇති මූලද්රව්ය සංඛ්යාව වේ. පෙර උදාහරණයේ එය 3-ග්‍රෑම් (ට්‍රයිග්‍රෑම්) විය, එනම්: පළමු ඇතුළත් කිරීම් දෙක තුන්වැන්න පුරෝකථනය කිරීමට භාවිතා කරයි. ඒ අනුව, ග්‍රෑම් 5 කින්, පළමු ඇතුළත් කිරීම් හතරෙන් පස්වන සහ යනාදිය පුරෝකථනය කරයි.

නිර්මාණකරු විසින් N-ග්‍රෑම් ප්‍රමාණය ප්‍රවේශමෙන් තෝරා ගත යුතුය. කුඩා N සඳහා අඩු මතකයක් අවශ්‍ය නමුත් අඩු ඉතිහාසයක් ගබඩා කරයි. උදාහරණයක් ලෙස, 2-ග්‍රෑම් (බිග්‍රෑම්) කික්, කික් හෝ කික්, පන්ච් පටිගත කරනු ඇත, නමුත් කික්, කික්, පන්ච් ගබඩා කිරීමට නොහැකි වනු ඇත, එබැවින් AI SuperDeathFist සංයෝජනයට ප්‍රතිචාර නොදක්වයි.

С другой стороны, большие числа требуют больше памяти и ИИ будет сложнее обучиться, так как появится гораздо больше возможных вариантов. Если у вас было три возможных ввода Kick, Punch или Block, а мы использовали 10-грамму, то получится около 60 тысяч различных вариантов.

බිග්‍රම් ආකෘතිය සරල මාර්කොව් දාමයකි - එක් එක් අතීත තත්ත්‍වය/වත්මන් තත්ත්‍ව යුගලය බිග්‍රාම් එකක් වන අතර, පළමු තත්ත්වය මත පදනම්ව ඔබට දෙවන තත්ත්වය පුරෝකථනය කළ හැක. 3-ග්‍රෑම් සහ විශාල N-ග්‍රෑම් මාර්කොව් දාමයන් ලෙස ද සිතිය හැකිය, එහිදී සියලුම මූලද්‍රව්‍ය (N-ග්‍රෑම් හි අවසාන එක හැර) එක්ව පළමු තත්වය සහ අවසාන මූලද්‍රව්‍යය දෙවැන්න සාදයි. සටන් ක්‍රීඩා උදාහරණය Kick and Kick තත්වයේ සිට Kick and Punch තත්වයට සංක්‍රමණය වීමේ අවස්ථාව පෙන්වයි. බහු ආදාන ඉතිහාස ඇතුළත් කිරීම් තනි ඒකකයක් ලෙස සැලකීමෙන්, අපි අත්‍යවශ්‍යයෙන්ම ආදාන අනුක්‍රමය සම්පූර්ණ රාජ්‍යයේ කොටසක් බවට පරිවර්තනය කරමු. මෙය අපට මාර්කොව් දේපල ලබා දෙයි, එමඟින් අපට මීළඟ ආදානය පුරෝකථනය කිරීමට සහ මීළඟට කොම්බෝ චලනය කුමක්දැයි අනුමාන කිරීමට මාර්කොව් දාම භාවිතා කිරීමට ඉඩ සලසයි.

නිගමනය

කෘතිම බුද්ධිය වර්ධනය කිරීමේ වඩාත් පොදු මෙවලම් සහ ප්රවේශයන් ගැන අපි කතා කළා. ඒවා භාවිතා කළ යුතු අවස්ථා සහ ඒවා විශේෂයෙන් ප්‍රයෝජනවත් වන අවස්ථා පිළිබඳවද අපි සොයා බැලුවෙමු.

Этого должно быть достаточно для понимания базовых вещей в игровом ИИ. Но, конечно же, это далеко не все методы. К менее популярным, но не менее эффективным относятся:

  • කඳු නැගීම, අනුක්‍රමණ බැසීම් සහ ජාන ඇල්ගොරිතම ඇතුළු ප්‍රශස්තිකරණ ඇල්ගොරිතම
  • විරුද්ධවාදී සෙවුම්/උපලේඛන ඇල්ගොරිතම (මිනිමැක්ස් සහ ඇල්ෆා බීටා කප්පාදුව)
  • වර්ගීකරණ ක්‍රම (perceptrons, neural networks සහ support vector machines)
  • සැකසුම් නියෝජිතයින්ගේ සංජානනය සහ මතකය සඳහා පද්ධති
  • AI සඳහා වාස්තුවිද්‍යාත්මක ප්‍රවේශයන් (දෙමුහුන් පද්ධති, උප කුලක ගෘහ නිර්මාණ ශිල්පය සහ AI පද්ධති උඩින් තැබීමේ වෙනත් ක්‍රම)
  • සජීවිකරණ මෙවලම් (සැලසුම් සහ චලන සම්බන්ධීකරණය)
  • факторы производительности (уровень детализации, алгоритмы anytime, и timeslicing)

මාතෘකාව පිළිබඳ සබැඳි සම්පත්:

1. GameDev.net සතුව ඇත AI පිළිබඳ ලිපි සහ නිබන්ධන සහිත කොටස, මෙන්ම සංසදය.
2. AiGameDev.com содержит множество презентаций и статей по широкому спектру связанных с разработкой игрового ИИ.
3. GDC සුරක්ෂිතාගාරය GDC AI සමුළුවේ මාතෘකා ඇතුළත් වන අතර, ඒවායින් බොහොමයක් නොමිලේ ලබා ගත හැකිය.
4. වෙබ් අඩවියේ ප්රයෝජනවත් ද්රව්ය ද සොයාගත හැකිය AI ක්‍රීඩා ක්‍රමලේඛක සංසදය.
5. AI පර්යේෂක සහ ක්‍රීඩා සංවර්ධක Tommy Thompson YouTube හි වීඩියෝ කරයි AI සහ ක්රීඩා වාණිජ ක්‍රීඩා වල AI පිළිබඳ පැහැදිලි කිරීමක් සහ අධ්‍යයනයක් සමඟ.

මාතෘකාව පිළිබඳ පොත්:

1. Game AI Pro පොත් මාලාව යනු විශේෂිත විශේෂාංග ක්‍රියාත්මක කරන ආකාරය හෝ විශේෂිත ගැටළු විසඳන ආකාරය විස්තර කරන කෙටි ලිපි එකතුවකි.

Game AI Pro: Game AI වෘත්තිකයන්ගේ එකතු කළ ප්‍රඥාව
Game AI Pro 2: Game AI වෘත්තිකයන්ගේ එකතු කළ ප්‍රඥාව
Game AI Pro 3: Game AI වෘත්තිකයන්ගේ එකතු කළ ප්‍රඥාව

2. AI Game Programming Wisdom මාලාව Game AI Pro මාලාවේ පූර්වගාමියා වේ. එහි පැරණි ක්‍රම අඩංගු වේ, නමුත් සියල්ලම පාහේ අදටත් අදාළ වේ.

AI Game Programming Wisdom 1
AI Game Programming Wisdom 2
AI Game Programming Wisdom 3
AI Game Programming Wisdom 4

3. කෘතිම බුද්ධිය: නවීන ප්‍රවේශයක් කෘත්‍රිම බුද්ධියේ සාමාන්‍ය ක්ෂේත්‍රය අවබෝධ කර ගැනීමට කැමති සෑම දෙනාටම මූලික පාඨ වලින් එකකි. මෙය ක්‍රීඩා සංවර්ධනය පිළිබඳ පොතක් නොවේ - එය AI හි මූලික කරුණු උගන්වයි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න