ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

Наткнулся на интересный материал об искусственном интеллекте в играх. С объяснением базовых вещей про ИИ на простых примерах, а еще внутри много полезных инструментов и методов для его удобной разработки и проектирования. Как, где и когда их использовать — тоже есть.

ဥပမာအများစုကို pseudocode ဖြင့်ရေးသားထားသောကြောင့် အဆင့်မြင့်ပရိုဂရမ်းမင်းအသိပညာမလိုအပ်ပါ။ ဖြတ်တောက်မှုအောက်တွင် ပုံများနှင့် gifs ပါသော စာသား ၃၅ ရွက်ပါရှိသောကြောင့် ပြင်ဆင်ပါ။

UPD။ တောင်းပန်ပါတယ်၊ ဒါပေမယ့် Habré မှာ ဒီဆောင်းပါးကို ကျွန်တော်ကိုယ်တိုင် ဘာသာပြန်ပြီးပါပြီ။ PatientZero. သူ့ဗားရှင်းကို သင်ဖတ်နိုင်ပါတယ်။ ဒီမှာဒါပေမယ့် အကြောင်းတစ်ခုခုကြောင့် ဆောင်းပါးက ကျွန်မကို ဖြတ်သွားခဲ့တယ် (ရှာဖွေမှုကို သုံးခဲ့ပေမယ့် တစ်ခုခု မှားသွားပါတယ်)။ ကျွန်ုပ်သည် ဂိမ်းဖွံ့ဖြိုးတိုးတက်မှုအတွက် ရည်ညွှန်းထားသော ဘလော့ဂ်တစ်ခုတွင် ရေးသားနေသောကြောင့် ကျွန်ုပ်သည် စာရင်းသွင်းသူများအတွက် ဘာသာပြန်ဗားရှင်းကို ချန်ထားရန် ဆုံးဖြတ်ခဲ့သည် (အချို့သောအချက်များသည် ဖော်မတ်ပုံစံကွဲပြားသည်၊ အချို့မှာ ဆော့ဖ်ဝဲရေးသားသူများ၏ အကြံပြုချက်ကြောင့် တမင်ချန်လှပ်ထားပါသည်)။

AI ဆိုတာဘာလဲ။

Game AI သည် အရာဝတ္ထုတစ်ခုတည်ရှိရာ အခြေအနေများအပေါ်အခြေခံ၍ မည်သည့်လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သင့်သည်ကို အာရုံစိုက်သည်။ ၎င်းကို အေးဂျင့်တစ်ဦးသည် ကစားသမားဇာတ်ကောင်၊ ယာဉ်၊ ဘော့တ် သို့မဟုတ် တစ်ခါတစ်ရံတွင် ပို၍ စိတ်ကူးယဉ်ဆန်သည့်အရာ- အဖွဲ့အစည်းတစ်ခုလုံး သို့မဟုတ် ယဉ်ကျေးမှုတစ်ရပ်ပင်ဖြစ်ရာ "အသိဉာဏ်ရှိသော အေးဂျင့်" စီမံခန့်ခွဲမှုဟု အများအားဖြင့် ရည်ညွှန်းသည်။ ကိစ္စတိုင်းတွင်၊ ၎င်းသည် ၎င်း၏ပတ်ဝန်းကျင်ကိုမြင်ရမည်၊ ၎င်းကိုအခြေခံ၍ ဆုံးဖြတ်ချက်များချရန်နှင့် ၎င်းတို့နှင့်အညီလုပ်ဆောင်ရမည့်အရာဖြစ်သည်။ ဒါကို Sense/Think/Act cycle လို့ခေါ်ပါတယ်-

  • ခံစားချက်- အေးဂျင့်သည် ၎င်း၏အပြုအမူအပေါ် လွှမ်းမိုးနိုင်သည့် ၎င်း၏ပတ်ဝန်းကျင်ရှိ အရာများ (အနီးနားရှိ ခြိမ်းခြောက်မှုများ၊ စုဆောင်းရမည့်အရာများ၊ စူးစမ်းလေ့လာရန် စိတ်ဝင်စားဖွယ်နေရာများ) ၏ ပတ်ဝန်းကျင်ရှိ အရာများကို ရှာဖွေ သို့မဟုတ် လက်ခံရရှိသည် ။
  • Think: агент решает, как реагировать (рассматривает, достаточно ли безопасно собирать предметы или сначала он должен сражаться/скрываться).
  • အက်ဥပဒေ- အေးဂျင့်သည် ယခင်ဆုံးဖြတ်ချက်ကို အကောင်အထည်ဖော်ရန် လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သည် (ရန်သူ သို့မဟုတ် အရာဝတ္တုဆီသို့ စတင်ရွေ့လျားသည်)။
  • ...အခုတော့ ဇာတ်ကောင်တွေရဲ့ လုပ်ဆောင်ချက်တွေကြောင့် အခြေအနေတွေ ပြောင်းလဲသွားတဲ့အတွက် စက်ဝိုင်းဟာ ဒေတာအသစ်နဲ့ ပြန်လုပ်ပါတယ်။

AI သည် loop ၏ Sense အပိုင်းကို အာရုံစိုက်လေ့ရှိသည်။ ဥပမာအားဖြင့်၊ ကိုယ်ပိုင်အုပ်ချုပ်ခွင့်ရကားများသည် လမ်း၏ဓာတ်ပုံများကို ရိုက်ယူကြပြီး ၎င်းတို့ကို ရေဒါနှင့် lidar အချက်အလက်များဖြင့် ပေါင်းစပ်ကာ ၎င်းတို့ကို ဘာသာပြန်ဆိုသည်။ ဤသည်မှာ ပုံမှန်အားဖြင့် အဝင်ဒေတာကို လုပ်ဆောင်ပြီး ၎င်းကို အဓိပ္ပာယ်ပေးကာ “မင်းရှေ့ ကိုက် 20 အကွာမှာ အခြားကားတစ်စီးရှိနေပြီ” ကဲ့သို့သော ဝေါဟာရအချက်အလက်များကို ထုတ်ယူကာ ၎င်းကို ပုံမှန်အားဖြင့် လုပ်ဆောင်သည်။ ဒါတွေကို အမျိုးအစားခွဲခြားတဲ့ ပြဿနာလို့ ခေါ်ပါတယ်။

ဂိမ်းများသည် အချက်အလက်အများစုသည် ၎င်း၏အရေးပါသောအစိတ်အပိုင်းတစ်ခုဖြစ်နေပြီဖြစ်သောကြောင့် အချက်အလက်ထုတ်ယူရန် ရှုပ်ထွေးသောစနစ်မလိုအပ်ပါ။ ရှေ့တွင်ရန်သူရှိမရှိ ဆုံးဖြတ်ရန် ရုပ်ပုံအသိအမှတ်ပြုခြင်းဆိုင်ရာ အယ်လဂိုရီသမ်များကို လုပ်ဆောင်ရန် မလိုအပ်ပါ—ဂိမ်းသည် ဆုံးဖြတ်ချက်ချသည့်လုပ်ငန်းစဉ်တွင် အချက်အလက်များကို သိရှိပြီး တိုက်ရိုက်ပေးပို့ပါသည်။ ထို့ကြောင့် သံသရာ၏ Sense အပိုင်းသည် Think and Act အပိုင်းထက် များစွာရိုးရှင်းပါသည်။

Game AI ၏ကန့်သတ်ချက်များ

AI တွင် စောင့်ကြည့်ရမည့် ကန့်သတ်ချက်များစွာရှိသည်။

  • ИИ не нужно заранее тренировать, будто это алгоритм машинного обучения. Бессмысленно писать нейросеть во время разработки, чтобы наблюдать за десятками тысяч игроков и изучать лучший способ игры против них. Почему? Потому что игра не выпущена, а игроков нет.
  • ဂိမ်းသည် ပျော်စရာကောင်းပြီး စိန်ခေါ်မှုဖြစ်သင့်သည်၊ ထို့ကြောင့် အေးဂျင့်များသည် လူများကို အကောင်းဆုံးချဉ်းကပ်မှုမျိုး မရှာသင့်ပါ။
  • အေးဂျင့်တွေဟာ တကယ့်လူတွေနဲ့ ယှဉ်ကစားနေသလိုမျိုး ခံစားရစေဖို့ ကစားသမားတွေက လက်တွေ့ကျကျ ကြည့်ဖို့ လိုအပ်ပါတယ်။ AlphaGo ပရိုဂရမ်သည် လူသားများကို စွမ်းဆောင်ရည်ထက် သာလွန်သော်လည်း ရွေးချယ်ထားသော အဆင့်များသည် ဂိမ်း၏ အစဉ်အလာ နားလည်မှုနှင့် အလွန်ဝေးကွာသည်။ ဂိမ်းသည် လူသားပြိုင်ဘက်ကို အတုယူပါက၊ ဤခံစားချက်မျိုး ရှိမနေသင့်ပါ။ စံနမူနာပြများထက် ခိုင်လုံသောဆုံးဖြတ်ချက်များချနိုင်ရန် algorithm ကို ပြောင်းလဲရန်လိုအပ်ပါသည်။
  • AI သည် အချိန်နှင့်တပြေးညီ အလုပ်လုပ်ရပါမည်။ ဆိုလိုသည်မှာ ဆုံးဖြတ်ချက်များချရန်အတွက် algorithm သည် CPU အသုံးပြုမှုကို အချိန်အကြာကြီး လက်ဝါးကြီးအုပ်ထား၍မရပါ။ 10 မီလီစက္ကန့်ပင်လျှင် ရှည်လွန်းသည်၊ အဘယ်ကြောင့်ဆိုသော် ဂိမ်းအများစုသည် လုပ်ဆောင်မှုအားလုံးကို လုပ်ဆောင်ရန် 16 မှ 33 မီလီစက္ကန့်သာ လိုအပ်ပြီး နောက်ဂရပ်ဖစ်ဖရိန်သို့ ဆက်သွားရန် လိုအပ်သည်။
  • အကောင်းဆုံးမှာ၊ စနစ်၏အနည်းဆုံးအစိတ်အပိုင်းသည် ဒေတာမောင်းနှင်သင့်သည်၊ သို့မှသာ ကုဒ်ဒါမဟုတ်သူများသည် အပြောင်းအလဲများပြုလုပ်နိုင်ပြီး ချိန်ညှိမှုများကို ပိုမိုလျင်မြန်စွာလုပ်ဆောင်နိုင်စေရန်ဖြစ်သည်။

Sense/Think/Act စက်ဝန်းတစ်ခုလုံးကို လွှမ်းခြုံထားသည့် AI ချဉ်းကပ်မှုများကို ကြည့်ကြပါစို့။

အခြေခံဆုံးဖြတ်ချက်များချမှတ်ခြင်း။

အရိုးရှင်းဆုံးဂိမ်း - Pong ဖြင့်စကြပါစို့။ ပန်းတိုင်- လှော်တက်ကို ရွှေ့ပါ ဘောလုံးမထိရင် ရှုံးတဲ့ တင်းနစ်နဲ့တူတယ်။ ဤနေရာတွင် AI တွင်အတော်လေးလွယ်ကူသောအလုပ်တစ်ခုရှိသည် - ပလပ်ဖောင်းကိုရွှေ့ရန်မည်သည့်လမ်းကြောင်းကိုဆုံးဖြတ်ရန်။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

အခြေအနေဆိုင်ရာ ထုတ်ပြန်ချက်များ

Pong ရှိ AI အတွက် အထင်ရှားဆုံးဖြေရှင်းချက်မှာ ဘောလုံးအောက်တွင် ပလက်ဖောင်းကို အမြဲထားရန်ဖြစ်သည်။

ဤအတွက် ရိုးရှင်းသော အယ်လဂိုရီသမ်တစ်ခု၊ pseudocode ဖြင့်ရေးထားသည်-

ဂိမ်းကစားနေစဉ်ဘောင်/မွမ်းမံမှုတိုင်း-
ဘောလုံးသည် လှော်တက်၏ ဘယ်ဘက်တွင် ရှိနေပါက၊
လှော်တက်ကို ဘယ်ဘက်သို့ရွှေ့ပါ။
ဘောလုံးသည် လှော်တက်၏ ညာဘက်တွင် ရှိနေပါက၊
လှော်တက်ကို ညာဘက်သို့ရွှေ့ပါ။

ပလက်ဖောင်းသည် ဘောလုံး၏အရှိန်ဖြင့် ရွေ့နေပါက၊ ၎င်းသည် Pong ရှိ AI အတွက် အကောင်းဆုံး အယ်လဂိုရီသမ်ဖြစ်သည်။ အေးဂျင့်အတွက် ဒေတာအများကြီးနဲ့ ဖြစ်နိုင်ချေရှိတဲ့ လုပ်ဆောင်မှုတွေ မရှိရင် ဘာမှ ရှုပ်ထွေးနေစရာ မလိုပါဘူး။

ဤချဉ်းကပ်နည်းသည် အလွန်ရိုးရှင်းသောကြောင့် Sense/Think/Act cycle တစ်ခုလုံးကို သိသာထင်ရှားစေပါသည်။ ဒါပေမယ့် အဲဒီမှာရှိတယ်

  • Sense အပိုင်းသည် if statements နှစ်ခုဖြစ်သည်။ ဂိမ်းသည် ဘောလုံးသည် မည်သည့်နေရာနှင့် ပလပ်ဖောင်းရှိသည်ကို သိရှိသောကြောင့် AI သည် ထိုအချက်အလက်များအတွက် ၎င်းကို ရှာဖွေသည်။
  • Think အပိုင်းကိုလည်း if statements နှစ်ခုမှာ ထည့်သွင်းထားပါတယ်။ ၎င်းတို့သည် ဖြေရှင်းချက်နှစ်ခုကို ပေါင်းစပ်ထားသောကြောင့် ဤကိစ္စတွင် အပြန်အလှန်သီးသန့်ဖြစ်သည်။ ရလဒ်အနေဖြင့် လုပ်ဆောင်ချက်သုံးခုထဲမှ တစ်ခုကို ရွေးချယ်ထားသည် - ပလပ်ဖောင်းကို ဘယ်ဘက်သို့ရွှေ့ပါ၊ ၎င်းကို ညာဘက်သို့ရွှေ့ပါ၊ သို့မဟုတ် ၎င်းကိုမှန်ကန်စွာနေရာချထားပြီးပါက ဘာမှမလုပ်ပါ။
  • အက်ဥပဒေ အပိုင်းကို Move Paddle Left နှင့် Move Paddle Right ထုတ်ပြန်ချက်များတွင် တွေ့နိုင်သည်။ ဂိမ်းဒီဇိုင်းပေါ်မူတည်၍ ၎င်းတို့သည် ပလပ်ဖောင်းကို ချက်ချင်း သို့မဟုတ် တိကျသောအမြန်နှုန်းဖြင့် ရွှေ့နိုင်သည်။

ထိုသို့သောချဉ်းကပ်မှုများကို ဓာတ်ပြုခြင်းဟုခေါ်သည် - ရိုးရှင်းသောစည်းမျဉ်းများ (ဤအခြေအနေတွင် ကုဒ်တွင်ဖော်ပြချက်များရှိပါက) သည် ကမ္ဘာကြီး၏လက်ရှိအခြေအနေအား တုံ့ပြန်ပြီး အရေးယူဆောင်ရွက်သည်။

ဆုံးဖြတ်ချက်သစ်ပင်

Pong ဥပမာသည် ဆုံးဖြတ်ချက်သစ်ပင်ဟုခေါ်သော တရားဝင် AI အယူအဆနှင့် ညီမျှသည်။ အယ်လဂိုရီသမ်သည် “အရွက်” သို့ရောက်ရှိရန် ၎င်းကိုဖြတ်သန်းသွားသည်—မည်သည့်လုပ်ဆောင်ချက်နှင့်ပတ်သက်သည့် ဆုံးဖြတ်ချက်တစ်ခုဖြစ်သည်။

ကျွန်ုပ်တို့၏ပလက်ဖောင်း၏ အယ်လဂိုရီသမ်အတွက် ဆုံးဖြတ်ချက်သစ်ပင်၏ ဘလောက်ပုံတစ်ချပ်ကို လုပ်ကြပါစို့။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

သစ်ပင်၏ အစိတ်အပိုင်းတစ်ခုစီကို node ဟုခေါ်သည် - AI သည် ထိုကဲ့သို့သောတည်ဆောက်ပုံများကိုဖော်ပြရန် ဂရပ်သီအိုရီကိုအသုံးပြုသည်။ node အမျိုးအစား နှစ်မျိုး ရှိပါသည်။

  • Decision nodes- အချို့သောအခြေအနေများကို စမ်းသပ်ခြင်းအပေါ်အခြေခံ၍ အခြားရွေးချယ်စရာနှစ်ခုကြားတွင် ရွေးချယ်ခြင်းဖြစ်ပြီး အခြားရွေးချယ်စရာတစ်ခုစီကို သီးခြား node တစ်ခုအဖြစ် ကိုယ်စားပြုပါသည်။
  • အဆုံးအဖြတ်များ- နောက်ဆုံးဆုံးဖြတ်ချက်ကို ကိုယ်စားပြုသည့် လုပ်ဆောင်မှု။

algorithm သည် ပထမဆုံး node (သစ်ပင်၏ "အမြစ်") မှ စတင်သည်။ ၎င်းသည် မည်သည့်ကလေး node သို့သွားရမည်ကို ဆုံးဖြတ်ချက်ချသည် သို့မဟုတ် node တွင်သိမ်းဆည်းထားသည့်လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပြီး ထွက်ပေါက်ကိုလုပ်ဆောင်သည်။

ဆုံးဖြတ်ချက်သစ်ပင်ရှိခြင်း၏အကျိုးကျေးဇူးမှာယခင်အပိုင်းရှိ if statements နှင့်တူညီသောအလုပ်ဖြစ်သည်။ ဤနေရာတွင် ဆုံးဖြတ်ချက်တစ်ခုစီတွင် အခြေအနေတစ်ခုနှင့် ဖြစ်နိုင်ခြေရလဒ်နှစ်ခုသာ ပါရှိသည့် ယေဘုယျစနစ်တစ်ခုရှိသည်။ ၎င်းသည် developer အား hard-code မလိုဘဲ သစ်ပင်ရှိ ဆုံးဖြတ်ချက်များကို ကိုယ်စားပြုသည့် ဒေတာမှ AI ကို ဖန်တီးနိုင်စေပါသည်။ ဇယားပုံစံနဲ့ တင်ပြကြည့်ရအောင်။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

ကုဒ်ဘက်တွင် စာကြောင်းများဖတ်ရန် စနစ်တစ်ခုကို သင်ရရှိမည်ဖြစ်သည်။ ၎င်းတို့တစ်ခုစီအတွက် node တစ်ခုဖန်တီးပါ၊ ဒုတိယကော်လံအပေါ်အခြေခံသည့် ဆုံးဖြတ်ချက်ယုတ္တိကို ချိတ်ဆက်ပါ၊ တတိယကော်လံများနှင့် စတုတ္ထကော်လံများအပေါ်အခြေခံသည့် ကလေးဆုံမှတ်များကို ချိတ်ဆက်ပါ။ အခြေအနေများနှင့် လုပ်ဆောင်ချက်များကို အစီအစဉ်ဆွဲရန် လိုအပ်နေသေးသော်လည်း ယခုဂိမ်း၏ ဖွဲ့စည်းပုံသည် ပိုမိုရှုပ်ထွေးလာမည်ဖြစ်သည်။ ဤနေရာတွင် သင်သည် နောက်ထပ်ဆုံးဖြတ်ချက်များနှင့် လုပ်ဆောင်ချက်များကို ပေါင်းထည့်ပြီးနောက် သစ်ပင်အဓိပ္ပါယ်သတ်မှတ်ချက်စာသားဖိုင်ကို တည်းဖြတ်ခြင်းဖြင့် AI တစ်ခုလုံးကို စိတ်ကြိုက်ပြင်ဆင်ပါ။ ထို့နောက် သင်သည် ဂိမ်းကို ပြန်လည်ပေါင်းစည်းခြင်း သို့မဟုတ် ကုဒ်ကို ပြောင်းလဲခြင်းမပြုဘဲ အပြုအမူကို ပြောင်းလဲနိုင်သည့် ဂိမ်းဒီဇိုင်နာတစ်ဦးထံ ဖိုင်ကို လွှဲပြောင်းပေးသည်။

ဥပမာ အများအပြားမှ အလိုအလျောက် တည်ဆောက်သောအခါတွင် ဆုံးဖြတ်ချက်သစ်များသည် အလွန်အသုံးဝင်သည် (ဥပမာ၊ ID3 အယ်လဂိုရီသမ်) ကို အသုံးပြုသည်။ ၎င်းသည် ၎င်းတို့ရရှိထားသော အချက်အလက်အပေါ်အခြေခံ၍ အခြေအနေများကို အမျိုးအစားခွဲခြားရန် ထိရောက်ပြီး စွမ်းဆောင်ရည်မြင့်သည့်ကိရိယာတစ်ခု ဖြစ်စေသည်။ သို့သော်၊ ကျွန်ုပ်တို့သည် လုပ်ဆောင်ချက်များကို ရွေးချယ်ရန် အေးဂျင့်များအတွက် ရိုးရှင်းသောစနစ်ထက် ကျော်လွန်သွားပါသည်။

ဇာတ်လမ်းများ

ကြိုတင်ဖန်တီးထားသော အခြေအနေများနှင့် လုပ်ဆောင်ချက်များကို အသုံးပြုသည့် ဆုံးဖြတ်ချက်သစ်ပင်စနစ်တစ်ခုကို ကျွန်ုပ်တို့ ပိုင်းခြားစိတ်ဖြာထားပါသည်။ AI ကို ဒီဇိုင်းဆွဲသူသည် သစ်ပင်ကို သူအလိုရှိသည့်အတိုင်း စုစည်းနိုင်သော်လည်း ၎င်းအားလုံးကို ပရိုဂရမ်ရေးဆွဲပေးသော ကုဒ်ဒါကို အားကိုးနေရဆဲဖြစ်သည်။ ကျွန်ုပ်တို့သည် ဒီဇိုင်နာအား ၎င်းတို့၏ကိုယ်ပိုင်အခြေအနေများ သို့မဟုတ် လုပ်ဆောင်ချက်များကို ဖန်တီးရန် ကိရိယာများ ပေးအပ်နိုင်လျှင်ကော။

ထို့ကြောင့် ပရိုဂရမ်မာသည် Ball Left Of Paddle နှင့် Ball Right Of Paddle တို့အတွက် ကုဒ်ကိုရေးရန် မလိုအပ်ဘဲ၊ ဤတန်ဖိုးများကို စစ်ဆေးရန် ဒီဇိုင်နာမှ အခြေအနေများကို ရေးသားမည့် စနစ်တစ်ခုကို ဖန်တီးနိုင်သည်။ ထို့နောက် ဆုံးဖြတ်ချက်သစ်ပင်ဒေတာသည် ဤကဲ့သို့ဖြစ်နေလိမ့်မည်-

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

၎င်းသည် ပထမဇယားတွင် အခြေခံအားဖြင့် တူညီသော်လည်း ၎င်းတို့အတွင်း၌ ဖြေရှင်းချက်များတွင် if statement ၏ conditional အပိုင်းနှင့် အနည်းငယ်တူသော ကိုယ်ပိုင်ကုဒ်များရှိသည်။ ကုဒ်ဘက်တွင်၊ ၎င်းသည် ဆုံးဖြတ်ချက် node အတွက် ဒုတိယကော်လံတွင် ဖတ်ရမည်ဖြစ်ပြီး၊ သို့သော် လုပ်ဆောင်ရန် တိကျသောအခြေအနေတစ်ရပ်ကို ရှာဖွေမည့်အစား (Is Ball Left Of Paddle)၊ ၎င်းသည် အခြေအနေဆိုင်ရာ ဖော်ပြချက်အား အကဲဖြတ်ပြီး မှန်သည် သို့မဟုတ် မှားသည့်အတိုင်း ပြန်ပေးသည်။ ၎င်းကို Lua သို့မဟုတ် Angelscript ဇာတ်ညွှန်းဘာသာစကားကို အသုံးပြု၍ လုပ်ဆောင်သည်။ ၎င်းတို့ကို အသုံးပြု၍ developer သည် ၎င်း၏ဂိမ်း (ဘောလုံးနှင့် လှော်တက်) တွင် အရာဝတ္ထုများကို ယူနိုင်ပြီး script (ball.position) တွင် ရရှိနိုင်မည့် variable များကို ဖန်တီးနိုင်သည်။ ထို့အပြင် scripting language သည် C++ ထက်ပိုမိုရိုးရှင်းပါသည်။ ၎င်းသည် စုစည်းမှုအဆင့် အပြည့်အစုံ မလိုအပ်သောကြောင့် ၎င်းသည် ဂိမ်းယုတ္တိကို လျင်မြန်စွာ ချိန်ညှိနိုင်ပြီး လိုအပ်သော လုပ်ဆောင်ချက်များကို ကိုယ်တိုင်ဖန်တီးရန် "ကုဒ်မဟုတ်သူများ" ကို ခွင့်ပြုရန် သင့်လျော်ပါသည်။

အထက်ဖော်ပြပါ ဥပမာတွင်၊ ဇာတ်ညွှန်းဘာသာစကားကို အခြေအနေဆိုင်ရာအသုံးအနှုန်းကို အကဲဖြတ်ရန်အတွက်သာ အသုံးပြုသော်လည်း ၎င်းကို လုပ်ဆောင်ချက်များအတွက်လည်း အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်၊ Move Paddle Right ဒေတာသည် script statement (ball.position.x += 10) ဖြစ်လာနိုင်သည်။ Move Paddle Right ပရိုဂရမ် မလိုအပ်ဘဲ လုပ်ဆောင်ချက်ကို script တွင် သတ်မှတ်ထားပါသည်။

သင်သည် ပို၍ပင်သွားကာ ဆုံးဖြတ်ချက်သစ်ပင်တစ်ခုလုံးကို ဇာတ်ညွှန်းဘာသာစကားဖြင့် ရေးသားနိုင်သည်။ ၎င်းသည် hardcoded conditional statements ပုံစံဖြင့် code ဖြစ်လိမ့်မည်၊ သို့သော် ၎င်းတို့သည် ပြင်ပ script ဖိုင်များတွင် တည်ရှိလိမ့်မည်၊ ဆိုလိုသည်မှာ၊ ၎င်းတို့သည် ပရိုဂရမ်တစ်ခုလုံးကို ပြန်လည်ပေါင်းစည်းခြင်းမပြုဘဲ ၎င်းတို့ကို ပြောင်းလဲနိုင်သည်။ မတူညီသော AI တုံ့ပြန်မှုများကို လျင်မြန်စွာစမ်းသပ်ရန် ဂိမ်းကစားနေစဉ်အတွင်း ဇာတ်ညွှန်းဖိုင်ကို မကြာခဏ တည်းဖြတ်နိုင်သည်။

ပွဲတုံ့ပြန်မှု

အထက်ပါ ဥပမာများသည် Pong အတွက် ပြီးပြည့်စုံပါသည်။ ၎င်းတို့သည် Sense/Think/Act cycle ကို စဉ်ဆက်မပြတ် လုပ်ဆောင်ပြီး ကမ္ဘာကြီး၏ နောက်ဆုံးအခြေအနေအပေါ် အခြေခံ၍ လုပ်ဆောင်သည်။ သို့သော် ပိုမိုရှုပ်ထွေးသောဂိမ်းများတွင် သင်တစ်ဦးချင်းစီ၏ဖြစ်ရပ်များကို တုံ့ပြန်ရန် လိုအပ်ပြီး အရာအားလုံးကို တစ်ပြိုင်နက်အကဲဖြတ်ရန် လိုအပ်သည်။ Pong သည် ဤကိစ္စတွင် မကောင်းတဲ့ ဥပမာတစ်ခု ဖြစ်နေပါပြီ။ နောက်တစ်ခုကို ရွေးကြည့်ရအောင်။

Представьте шутер, где враги неподвижны пока не обнаружат игрока, после чего действуют в зависимости от своей «специализации»: кто-то побежит «рашить», кто-то будет атаковать издалека. Это все еще базовая реагирующая система — «если игрок замечен, то сделай что-нибудь», — но ее можно логически разделить на событие Player Seen (игрок замечен) и реакцию (выберите ответ и выполните его).

၎င်းသည် ကျွန်ုပ်တို့အား Sense/Think/Act cycle သို့ ပြန်သွားစေသည်။ AI သည် ကစားသမားကို မြင်သည်ဖြစ်စေ ဘောင်တိုင်းကို စစ်ဆေးပေးမည့် Sense အပိုင်းကို ကုဒ်လုပ်နိုင်သည်။ မဟုတ်ပါက ဘာမှမဖြစ်ပါ၊ သို့သော် မြင်ပါက၊ Player Seen ဖြစ်ရပ်ကို ဖန်တီးထားသည်။ ကုဒ်တွင် "ကစားသမားမြင်ဖူးသည့် အဖြစ်အပျက် ပေါ်ပေါက်လာသောအခါ၊ လုပ်ပါ" ဟူသော ကုဒ်တွင် Think and Act အပိုင်းများကို ဖြေရှင်းရန် လိုအပ်သည့် တုံ့ပြန်မှုမှာ အဘယ်မှာ ရှိမည်နည်း။ ထို့ကြောင့်၊ သင်သည် "အပြေးအလွှား" ဇာတ်ကောင် - ChargeAndAttack နှင့် စနိုက်ပါ - HideAndSnipe အတွက် တုံ့ပြန်မှုများကို သင်သတ်မှတ်ပေးပါမည်။ ပြန်လည်ပေါင်းစည်းရန်မလိုဘဲ အမြန်တည်းဖြတ်ရန်အတွက် ဤဆက်ဆံရေးများကို ဒေတာဖိုင်တွင် ဖန်တီးနိုင်သည်။ Scripting language ကို ဤနေရာတွင်လည်း အသုံးပြုနိုင်ပါသည်။

ခက်ခဲသောဆုံးဖြတ်ချက်များချခြင်း။

ရိုးရှင်းသော တုံ့ပြန်မှုစနစ်များသည် အလွန်အားကောင်းသော်လည်း ၎င်းတို့ မလုံလောက်သည့် အခြေအနေများစွာရှိသည်။ တစ်ခါတစ်ရံတွင် သင်သည် အေးဂျင့်လုပ်နေသောအရာအပေါ် အခြေခံ၍ မတူညီသော ဆုံးဖြတ်ချက်များချရန် လိုအပ်သော်လည်း ၎င်းကို အခြေအနေတစ်ခုအဖြစ် စိတ်ကူးကြည့်ရန် ခက်ခဲသည်။ တစ်ခါတစ်ရံတွင် ၎င်းတို့ကို ဆုံးဖြတ်ချက်သစ်ပင် သို့မဟုတ် ဇာတ်ညွှန်းတွင် ထိထိရောက်ရောက်ကိုယ်စားပြုရန် အခြေအနေများစွာရှိသည်။ တခါတရံတွင် နောက်တဆင့်ကို မဆုံးဖြတ်မီ အခြေအနေ မည်သို့ပြောင်းလဲမည်ကို ကြိုတင်အကဲဖြတ်ရန် လိုအပ်သည်။ ဤပြဿနာများကိုဖြေရှင်းရန် ပိုမိုခေတ်မီသောချဉ်းကပ်မှုများ လိုအပ်ပါသည်။

Finite state စက်

Finite state machine သို့မဟုတ် FSM (finite state machine) သည် ကျွန်ုပ်တို့၏ အေးဂျင့်သည် လက်ရှိဖြစ်နိုင်ချေရှိသော ပြည်နယ်အများအပြားတွင်ရှိပြီး ၎င်းသည် ပြည်နယ်တစ်ခုမှ အခြားပြည်နယ်တစ်ခုသို့ ကူးပြောင်းနိုင်ကြောင်း ပြောသည့်နည်းလမ်းတစ်ခုဖြစ်သည်။ အချို့သောပြည်နယ်များ ရှိသည်—ထို့ကြောင့် နာမည်။ ဘဝရဲ့ အကောင်းဆုံး ဥပမာကတော့ မီးပွိုင့်တစ်ခုပါ။ မတူညီသောနေရာများတွင် အလင်းတန်းများ ကွဲပြားသော်လည်း နိယာမသည် တူညီသည် - ပြည်နယ်တစ်ခုစီသည် တစ်စုံတစ်ခုကို ကိုယ်စားပြုသည် (ရပ်၊ လမ်းလျှောက်၊ စသည်ဖြင့်)။ မီးပွိုင့်တစ်ခုသည် သတ်မှတ်ထားသည့်အချိန်တိုင်းတွင် အခြေအနေတစ်ခုသာရှိပြီး ရိုးရှင်းသောစည်းမျဉ်းများကိုအခြေခံ၍ တစ်ခုမှတစ်ခုသို့ရွေ့လျားသည်။

၎င်းသည် ဂိမ်းများတွင် NPCs နှင့် အလားတူဇာတ်လမ်းဖြစ်သည်။ ဥပမာအားဖြင့်၊ အောက်ပါပြည်နယ်များကို သတိပြုကြပါစို့။

  • ကင်းလှည့်ခြင်း။
  • တိုက်ခိုက်ခြင်း။
  • ထွက်ပြေးတယ်။

၎င်းအခြေအနေများကို ပြောင်းလဲရန်အတွက် ဤအခြေအနေများ။

  • အစောင့်က ရန်သူကိုမြင်ရင် တိုက်ခိုက်တယ်။
  • အစောင့်တပ်က တိုက်ခိုက်သော်လည်း ရန်သူကို မတွေ့လျှင် လှည့်ကင်းသို့ ပြန်သွားလေသည်။
  • အစောင့်က တိုက်ခိုက်သော်လည်း ဒဏ်ရာ ပြင်းထန်ပါက ထွက်ပြေးသည်။

အုပ်ထိန်းသူပြည်နယ် ပြောင်းလဲနိုင်သော အခြေအနေနှင့် စစ်ဆေးမှုအမျိုးမျိုးဖြင့် if-statements များကို ရေးသားနိုင်သည်- အနီးနားတွင် ရန်သူရှိပါသလား၊ NPC ၏ ကျန်းမာရေးအဆင့် စသည်တို့ကို ထပ်မံထည့်သွင်းကြပါစို့။

  • - တနည်းအားဖြင့် မဟတဟ။
  • ရှာဖွေခြင်း - သတိပြုမိသောရန်သူပျောက်ကွယ်သွားသောအခါ။
  • အကူအညီရှာဖွေခြင်း - ရန်သူတစ်ဦးကိုတွေ့မြင်ရသော်လည်း တစ်ဦးတည်းတိုက်ခိုက်ရန် ပြင်းထန်လွန်းသည်။

၎င်းတို့တစ်ဦးစီအတွက် ရွေးချယ်မှုမှာ အကန့်အသတ်ရှိသည် - ဥပမာ၊ အစောင့်သည် ကျန်းမာရေးနိမ့်ပါးပါက လျှို့ဝှက်ရန်သူကို ရှာမည်မဟုတ်ပါ။

နောက်ဆုံးအနေနဲ့၊ "ifs" စာရင်းကြီးတစ်ခုရှိတယ်။ ၊ အဲဒါ “ခက်ခဲလွန်းတဲ့အတွက် ပြည်နယ်တွေနဲ့ ပြည်နယ်တွေကြား အသွင်ကူးပြောင်းမှုတွေကို စွဲမှတ်ထားနိုင်တဲ့ နည်းလမ်းတစ်ခုကို တရားဝင်လုပ်ဖို့လိုတယ်။ ဒီလိုလုပ်ဖို့၊ ပြည်နယ်အားလုံးကို ထည့်သွင်းစဉ်းစားပြီး ပြည်နယ်တစ်ခုစီအောက်မှာ သူတို့အတွက် လိုအပ်တဲ့ အခြေအနေတွေနဲ့အတူ တခြားပြည်နယ်တွေကို ကူးပြောင်းမှုတွေအားလုံးကို စာရင်းတစ်ခုထဲမှာ ရေးမှတ်ထားပါတယ်။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

၎င်းသည် FSM ကိုကိုယ်စားပြုရန် ပြည့်စုံသောနည်းလမ်းတစ်ခုဖြစ်သည်။ ပုံကြမ်းတစ်ခုဆွဲပြီး NPC အပြုအမူပြောင်းလဲသွားပုံကို အပြည့်အစုံခြုံငုံသုံးသပ်ကြည့်ရအောင်။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

ပုံကြမ်းသည် လက်ရှိအခြေအနေအပေါ်အခြေခံ၍ ဤအေးဂျင့်အတွက် ဆုံးဖြတ်ချက်ချခြင်း၏အနှစ်သာရကို ထင်ဟပ်စေသည်။ ထို့အပြင်၊ မြှားတစ်ခုစီသည် ၎င်းဘေးရှိ အခြေအနေမှန်ပါက ပြည်နယ်များအကြား ကူးပြောင်းမှုကို ပြသသည်။

အပ်ဒိတ်တစ်ခုစီတိုင်းတွင် ကျွန်ုပ်တို့သည် အေးဂျင့်၏လက်ရှိအခြေအနေကို စစ်ဆေးပြီး၊ အကူးအပြောင်းများစာရင်းကို ကြည့်ရှုပြီး အသွင်ကူးပြောင်းမှုအတွက် အခြေအနေများနှင့် ပြည့်မီပါက၊ ၎င်းသည် အခြေအနေအသစ်ကို လက်ခံပါသည်။ ဥပမာအားဖြင့်၊ ဘောင်တစ်ခုစီသည် 10 စက္ကန့်တိုင်မာ သက်တမ်းကုန်သွားခြင်းရှိမရှိ စစ်ဆေးပြီး အကယ်၍ အစောင့်သည် Idling အခြေအနေမှ Patrolling သို့သွားပါသည်။ ထိုနည်းအတူ၊ Attacking state သည် အေးဂျင့်၏ ကျန်းမာရေးကို စစ်ဆေးသည် - နိမ့်နေပါက၊ ၎င်းသည် Fleeing state သို့ရောက်သွားသည်။

ဤသည်မှာ ပြည်နယ်များအကြား အသွင်ကူးပြောင်းမှုများကို ကိုင်တွယ်ခြင်းဖြစ်သည်၊ သို့သော် ပြည်နယ်များကိုယ်တိုင်နှင့် ဆက်စပ်နေသည့် အပြုအမူများကော။ သီးခြားပြည်နယ်တစ်ခုအတွက် အမှန်တကယ်အပြုအမူကို အကောင်အထည်ဖော်ခြင်းနှင့်ပတ်သက်၍၊ FSM သို့ လုပ်ဆောင်ချက်များကို ကျွန်ုပ်တို့သတ်မှတ်ပေးသည့် "ချိတ်" အမျိုးအစား နှစ်မျိုးရှိပါသည်။

  • လက်ရှိအခြေအနေအတွက် ကျွန်ုပ်တို့ အခါအားလျော်စွာ လုပ်ဆောင်သည့် လုပ်ဆောင်ချက်များ။
  • ပြည်နယ်တစ်ခုမှ အခြားပြည်နယ်တစ်ခုသို့ ကူးပြောင်းသည့်အခါ ကျွန်ုပ်တို့လုပ်ဆောင်သည့် လုပ်ဆောင်ချက်များ။

ပထမအမျိုးအစားအတွက် ဥပမာများ။ ကင်းလှည့်ခြင်းအခြေအနေသည် ဘောင်တစ်ခုစီတွင် ကင်းလှည့်လမ်းကြောင်းတစ်လျှောက် အေးဂျင့်ကို ရွှေ့ပေးမည်ဖြစ်သည်။ Attacking state သည် ဘောင်တစ်ခုစီတွင် တိုက်ခိုက်မှုတစ်ခုကို စတင်ရန် ကြိုးပမ်းလိမ့်မည် သို့မဟုတ် ၎င်းသည် ဖြစ်နိုင်သည့် အခြေအနေသို့ ကူးပြောင်းရန် ကြိုးပမ်းမည်ဖြစ်သည်။

ဒုတိယအမျိုးအစားအတွက် အကူးအပြောင်းကို သုံးသပ်ကြည့်ပါ– “ရန်သူကို မြင်နိုင်ပြီး ရန်သူက အားကောင်းနေပါက၊ အကူအညီရှာဖွေခြင်းအခြေအနေသို့ သွားပါ။ အေးဂျင့်သည် အကူအညီရယူရမည့်နေရာကို ရွေးချယ်ပြီး ဤအချက်အလက်ကို သိမ်းဆည်းထားရမည်ဖြစ်ပြီး အကူအညီရှာဖွေခြင်းအခြေအနေသည် မည်သည့်နေရာကိုသွားရမည်ကို သိရှိနိုင်စေရန်အတွက် လိုအပ်သည်။ အကူအညီကိုရှာတွေ့ပြီးသည်နှင့်၊ အေးဂျင့်သည် Attacking အခြေအနေသို့ပြန်သွားသည်။ ဤအချိန်တွင် သူသည် ခြိမ်းခြောက်မှုအကြောင်း မဟာမိတ်အား ပြောပြလိုလိမ့်မည်၊ ထို့ကြောင့် NotifyFriendOfThreat လုပ်ဆောင်ချက် ဖြစ်ပေါ်လာနိုင်သည်။

တစ်ဖန်၊ Sense/Think/Act cycle ၏ မှန်ဘီလူးဖြင့် ဤစနစ်ကို ကျွန်ုပ်တို့ ကြည့်ရှုနိုင်ပါသည်။ အကူးအပြောင်း ယုတ္တိဗေဒအားဖြင့် အသုံးပြုသော ဒေတာတွင် Sense ကို ထည့်သွင်းထားသည်။ စဉ်းစားကြည့်ပါ - ပြည်နယ်တစ်ခုစီတွင် အသွင်ကူးပြောင်းမှုများ ရရှိနိုင်သည်။ ပြည်နယ်တစ်ခုအတွင်း သို့မဟုတ် ပြည်နယ်များအကြား အကူးအပြောင်းတွင် အခါအားလျော်စွာ ဆောင်ရွက်သည့် လုပ်ဆောင်ချက်များဖြင့် အက်ဥပဒေအား ဆောင်ရွက်သည်။

တစ်ခါတစ်ရံတွင် ဆက်တိုက်ဆိုသလို ရွေးကောက်ပွဲ အသွင်ကူးပြောင်းမှု အခြေအနေများသည် ငွေကုန်ကြေးကျများနိုင်သည်။ ဥပမာအားဖြင့်၊ အေးဂျင့်တစ်ခုစီသည် ရန်သူများကိုမြင်နိုင်ပြီး Patrolling မှ Attacking အခြေအနေသို့ ကူးပြောင်းနိုင်သည်ဆိုသည်ကို နားလည်ရန် ရှုပ်ထွေးသောတွက်ချက်မှုများကို လုပ်ဆောင်ပါက၊ ၎င်းသည် CPU အချိန်များစွာကြာမည်ဖြစ်သည်။

ကမ္ဘာကြီးရဲ့ အရေးကြီးတဲ့ အပြောင်းအလဲတွေကို ဖြစ်ပေါ်လာတာနဲ့အမျှ စီမံဆောင်ရွက်ရမယ့် အဖြစ်အပျက်တွေလို့ ယူဆနိုင်ပါတယ်။ FSM သည် အကူးအပြောင်းအခြေအနေ "ကျွန်ုပ်၏ အေးဂျင့်သည် ကစားသမားကို မြင်နိုင်သလား" ကို စစ်ဆေးမည့်အစား ဘောင်တိုင်းကို မကြာခဏ လျော့နည်းစစ်ဆေးရန် သီးခြားစနစ် (ဥပမာ- တစ်စက္ကန့်လျှင် 5 ကြိမ်) ကို စစ်ဆေးနိုင်ပါသည်။ ရလဒ်သည် စစ်ဆေးမှုပြီးဆုံးသောအခါ Player Seen ကိုထုတ်ပေးခြင်းဖြစ်သည်။

၎င်းကို FSM သို့ ပေးပို့ထားပြီး၊ ယခု လက်ခံရရှိထားသော Player Seen ဖြစ်ရပ်သို့ သွားပြီး လျော်ညီစွာ တုံ့ပြန်သင့်ပါသည်။ တုံ့ပြန်ခြင်းမပြုမီ မမြင်နိုင်သော နှောင့်နှေးမှုမှလွဲ၍ ထွက်ပေါ်လာသော အပြုအမူသည် တူညီသည်။ သို့သော် Sense အပိုင်းကို ပရိုဂရမ်၏ သီးခြားအစိတ်အပိုင်းတစ်ခုအဖြစ် ခွဲခြားထားခြင်းကြောင့် စွမ်းဆောင်ရည် ပိုမိုကောင်းမွန်လာပါသည်။

အထက်အောက် ကန့်သတ်ပြည်နယ်စက်

သို့သော် FSM ကြီးများနှင့် အလုပ်လုပ်ခြင်းသည် အမြဲတမ်း အဆင်ပြေသည်မဟုတ်။ အကယ်၍ ကျွန်ုပ်တို့သည် MeleeAttacking နှင့် RangedAttacking ကိုခွဲခြားရန် တိုက်ခိုက်မှုအခြေအနေအား ချဲ့ထွင်လိုပါက၊ ကျွန်ုပ်တို့သည် Attacking အခြေအနေ (လက်ရှိနှင့် အနာဂတ်) သို့ ဦးတည်သော အခြားပြည်နယ်အားလုံးမှ ကူးပြောင်းမှုများကို ပြောင်းလဲရမည်ဖြစ်ပါသည်။

ကျွန်ုပ်တို့၏ဥပမာတွင် ထပ်တူအကူးအပြောင်းများစွာရှိသည်ကို သင်သတိပြုမိပေမည်။ Idling ပြည်နယ်ရှိ အကူးအပြောင်းအများစုသည် Patrolling ပြည်နယ်ရှိ အကူးအပြောင်းများနှင့် တူညီပါသည်။ အထူးသဖြင့် အလားတူပြည်နယ်များကို ထပ်ပေါင်းထည့်ပါက မိမိကိုယ်ကို ထပ်ခါတလဲလဲ မပြောခြင်းသည် ကောင်းပါတယ်။ "တိုက်ခိုက်ရေးမဟုတ်သော" ၏ ယေဘူယျအညွှန်းအောက်တွင် ကင်းလှည့်ခြင်းနှင့် ကင်းလှည့်ခြင်းအုပ်စုသည် တိုက်ခိုက်ရေးပြည်နယ်များသို့ ဘုံအသွင်ကူးပြောင်းမှုတစ်ခုသာရှိသည့်အတွက် အဓိပ္ပာယ်ရှိသည်။ ဤတံဆိပ်ကို ပြည်နယ်တစ်ခုအဖြစ် ကျွန်ုပ်တို့ယူဆပါက၊ Idling နှင့် Patrolling သည် substate ဖြစ်လာသည်။ တိုက်ခိုက်ရေးမဟုတ်သော substate အသစ်အတွက် သီးခြားအကူးအပြောင်းဇယားကို အသုံးပြုခြင်း ဥပမာ-

အဓိကပြည်နယ်များ-
ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

တိုက်ပွဲအခြေအနေ ပြင်ပ
ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

ပုံကြမ်းပုံစံတွင်၊

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

၎င်းသည် တူညီသောစနစ်ဖြစ်သော်လည်း Idling နှင့် Patrolling ပါ၀င်သည့် တိုက်ခိုက်ရေးမဟုတ်သော အခြေအနေသစ်တစ်ခုဖြစ်သည်။ အခွဲများပါရှိသော FSM တစ်ခုစီပါရှိသော ပြည်နယ်တစ်ခုစီတွင် (၎င်းတို့၏ကိုယ်ပိုင် FSMs များပါ၀င်သည်) နှင့် ၎င်းတို့ပါရှိသော ပြည်နယ်တစ်ခုစီဖြင့် ကျွန်ုပ်တို့သည် Hierarchical Finite State Machine သို့မဟုတ် HFSM (hierarchical finite state machine) ကို ရရှိပါသည်။ တိုက်ပွဲမဟုတ်သောနိုင်ငံကို အုပ်စုဖွဲ့ခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် မလိုအပ်သောအကူးအပြောင်းများစွာကို ဖြတ်တောက်လိုက်ပါသည်။ ဘုံအကူးအပြောင်းများရှိသည့် ပြည်နယ်အသစ်တိုင်းအတွက် အလားတူလုပ်ဆောင်နိုင်သည်။ ဥပမာအားဖြင့်၊ အနာဂတ်တွင် ကျွန်ုပ်တို့သည် တိုက်ခိုက်ရေးအခြေအနေအား MeleeAttacking နှင့် MissileAttacking ပြည်နယ်များသို့ ချဲ့ထွင်ပါက၊ ၎င်းတို့သည် ရန်သူထံသို့ အကွာအဝေးနှင့် ကျည်ရရှိနိုင်မှုအပေါ် အခြေခံ၍ တစ်ခုနှင့်တစ်ခုကြား ကူးပြောင်းသွားသော ပြည်နယ်များဖြစ်သည်။ ရလဒ်အနေဖြင့်၊ ရှုပ်ထွေးသောအပြုအမူများနှင့် အမူအကျင့်ခွဲများကို ပွားနေသော အကူးအပြောင်းများ အနည်းဆုံးဖြင့် ကိုယ်စားပြုနိုင်ပါသည်။

အပြုအမူသစ်ပင်

HFSM ဖြင့်၊ ရှုပ်ထွေးသောအပြုအမူများကို ရိုးရှင်းသောနည်းလမ်းဖြင့် ဖန်တီးထားသည်။ သို့သော်လည်း အကူးအပြောင်းစည်းမျဉ်းပုံစံဖြင့် ဆုံးဖြတ်ချက်ချခြင်းသည် လက်ရှိအခြေအနေနှင့် နီးကပ်စွာဆက်စပ်နေသောကြောင့် အနည်းငယ်အခက်အခဲရှိပါသည်။ ပြီးတော့ ဂိမ်းတော်တော်များများမှာ ဒါက လိုအပ်တဲ့အရာပါ။ ပြည်နယ် အထက်အောက် အဆင့်ကို ဂရုတစိုက် အသုံးပြုခြင်းသည် အကူးအပြောင်း ထပ်ခါထပ်ခါ အရေအတွက်ကို လျှော့ချနိုင်သည်။ ဒါပေမယ့် တစ်ခါတရံမှာ မင်းဘယ်ပြည်နယ်မှာပဲဖြစ်ဖြစ်၊ ဘယ်ပြည်နယ်မှာမဆို ကျင့်သုံးနိုင်တဲ့ စည်းမျဉ်းတွေ လိုအပ်တယ်။ ဥပမာအားဖြင့်၊ အေးဂျင့်တစ်ဦး၏ကျန်းမာရေးသည် 25% သို့ကျဆင်းသွားပါက၊ သူသည် တိုက်ပွဲဝင်နေချိန်၊ ပျင်းရိနေသည်ဖြစ်စေ စကားပြောနေစေကာမူ သူ့ကို ထွက်ပြေးစေလိုလိမ့်မည်- သင်သည် ဤအခြေအနေကို ပြည်နယ်တစ်ခုစီတွင် ထည့်သွင်းရမည်ဖြစ်ပါသည်။ အကယ်၍ သင့်ဒီဇိုင်နာသည် နောက်ပိုင်းတွင် နိမ့်ပါးသော ကျန်းမာရေး အဆင့်အတန်းကို 25% မှ 10% သို့ ပြောင်းလဲလိုပါက ၎င်းကို ထပ်မံလုပ်ဆောင်ရမည်ဖြစ်ပါသည်။

အကောင်းဆုံးမှာ၊ ဤအခြေအနေသည် တစ်နေရာတည်းတွင်သာ အပြောင်းအလဲများပြုလုပ်နိုင်ပြီး အသွင်ကူးပြောင်းရေးအခြေအနေများကို မထိဘဲ “ပြည်နယ်များအတွင်း၌ဖြစ်ရမည်” နှင့်ပတ်သက်သော ဆုံးဖြတ်ချက်များချမှတ်သည့်စနစ်တစ်ခု လိုအပ်ပါသည်။ အပြုအမူသစ်ပင်များ ဤနေရာတွင် ပေါ်လာသည်။

၎င်းတို့ကို အကောင်အထည်ဖော်ရန် နည်းလမ်းများစွာရှိသော်လည်း အနှစ်သာရမှာ အကြမ်းဖျင်းတူညီပြီး ဆုံးဖြတ်ချက်သစ်ပင်နှင့် ဆင်တူသည်- algorithm သည် "root" node ဖြင့် စတင်မည်ဖြစ်ပြီး သစ်ပင်တွင် ဆုံးဖြတ်ချက်များ သို့မဟုတ် လုပ်ဆောင်ချက်များကို ကိုယ်စားပြုသည့် node များပါရှိသည်။ အဓိက ကွာခြားချက် အနည်းငယ်ရှိသော်လည်း၊

  • Теперь узлы возвращают одно из трех значений: Succeeded (если работа выполнена), Failed (если нельзя запустить) или Running (если она все еще запущена и нет конечного результата).
  • အခြားရွေးချယ်စရာနှစ်ခုကြားတွင် ရွေးချယ်ရန် ဆုံးဖြတ်ချက်အမှတ်များ မရှိတော့ပါ။ ယင်းအစား၊ ၎င်းတို့သည် ကလေး node တစ်ခုပါရှိသော Decorator node များဖြစ်သည်။ အကယ်၍ အောင်မြင်ပါက၊ ၎င်းတို့သည် ၎င်းတို့၏ တစ်ခုတည်းသော ကလေး node ကို လုပ်ဆောင်သည်။
  • လုပ်ဆောင်ချက်များကို လုပ်ဆောင်သည့် Node များသည် လုပ်ဆောင်နေသည့် လုပ်ဆောင်ချက်များကို ကိုယ်စားပြုရန်အတွက် Running value ကို ပြန်ပေးသည်။

ရှုပ်ထွေးသော အမူအကျင့်များစွာကို ဖန်တီးရန် ဤ node အစုငယ်ကို ပေါင်းစပ်နိုင်သည်။ ယခင်နမူနာမှ အပြုအမူသစ်ပင်အဖြစ် HFSM အစောင့်ကို စိတ်ကူးကြည့်ကြပါစို့။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

ဤဖွဲ့စည်းပုံအရ Idling/ Patrolling states မှ Attacking သို့မဟုတ် အခြားသောပြည်နယ်များသို့ သိသိသာသာ ကူးပြောင်းခြင်းမျိုး မဖြစ်သင့်ပါ။ ရန်သူကို မြင်နိုင်ပြီး ဇာတ်ကောင်၏ ကျန်းမာရေး နိမ့်ပါက၊ ၎င်းသည် ယခင်က လုပ်ဆောင်ခဲ့သည့် မည်သည့် Node မှ မပါဝင်ဘဲ ကွပ်မျက်မှုသည် Fleeing node တွင် ရပ်သွားမည်ဖြစ်သည်။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

အပြုအမူသစ်ပင်များသည် ရှုပ်ထွေးသည်—၎င်းတို့ကို ရေးဖွဲ့ရန် နည်းလမ်းများစွာရှိပြီး၊ မှန်ကန်သောအလှဆင်ပစ္စည်းများနှင့် ဒြပ်ပေါင်းများပေါင်းစပ်မှုကို ရှာဖွေခြင်းသည် စိန်ခေါ်မှုဖြစ်နိုင်သည်။ သစ်ပင်ကို ဘယ်နှစ်ကြိမ် စစ်ဆေးရလဲဆိုတဲ့ မေးခွန်းတွေလည်း ရှိပါတယ် - အဲဒါရဲ့ အစိတ်အပိုင်းတိုင်းကို ဖြတ်သွားချင်တာလား ဒါမှမဟုတ် အခြေအနေတွေထဲက တစ်ခု ပြောင်းလဲသွားတဲ့အခါမှသာ မေးချင်တာ ရှိပါတယ်။ node များနှင့်သက်ဆိုင်သည့်ပြည်နယ်ကို ကျွန်ုပ်တို့ မည်သို့သိမ်းဆည်းရမည်နည်း - ကျွန်ုပ်တို့သည် 10 စက္ကန့်ကြာ Idling လုပ်သောအခါတွင် မည်သို့သိနိုင်သနည်း၊ သို့မဟုတ် မည်သည့် Node များကို နောက်ဆုံးလုပ်ဆောင်ခဲ့သည်ကို ကျွန်ုပ်တို့ မည်သို့သိနိုင်သနည်း၊ ထို့ကြောင့် ကျွန်ုပ်တို့သည် sequence ကို မှန်ကန်စွာ လုပ်ဆောင်နိုင်မည်ဖြစ်သည်။

အဲဒါကြောင့် အကောင်အထည်ဖော်တာတွေ အများကြီးရှိတယ်။ ဥပမာအားဖြင့်၊ အချို့သောစနစ်များသည် အလှဆင်ခြင်းအမှတ်အသားများကို အတွင်းပိုင်းအလှဆင်ပစ္စည်းများဖြင့် အစားထိုးထားပါသည်။ အလှဆင်သူ၏ အခြေအနေများ ပြောင်းလဲသွားသောအခါတွင် သစ်ပင်ကို ၎င်းတို့က ပြန်လည်အကဲဖြတ်ကာ၊ node များကို ကူညီပေးကာ အချိန်အပိုင်းအခြားအလိုက် အပ်ဒိတ်များကို ပေးဆောင်ပါသည်။

Utility-based system

အချို့ဂိမ်းများတွင် မတူညီသော စက်ပြင်များစွာရှိသည်။ ၎င်းတို့သည် ရိုးရှင်းပြီး ယေဘုယျ အသွင်ကူးပြောင်းရေး စည်းမျဉ်းများ ၏ အကျိုးကျေးဇူးများ အားလုံးကို ရရှိရန် လိုလားသော်လည်း ပြီးပြည့်စုံသော အပြုအမူသစ်ပင်ပုံစံဖြင့် မဆိုလိုပါ။ ရှင်းလင်းပြတ်သားသော ရွေးချယ်မှုများ သို့မဟုတ် ဖြစ်နိုင်ချေရှိသော လုပ်ဆောင်ချက်များကို ထားရှိမည့်အစား၊ လုပ်ဆောင်ချက်အားလုံးကို စစ်ဆေးရန် ပိုမိုလွယ်ကူပြီး လက်ရှိအချိန်တွင် အသင့်လျော်ဆုံးကို ရွေးချယ်ပါ။

Utility-based system (система, основанная на полезности) как раз в этом поможет. Это система, где у агента есть множество действий, и он сам выбирает какое выполнить, основываясь на относительной полезности каждого. Где полезность — произвольная мера того, насколько важно или желательно выполнение этого действия для агента.

လက်ရှိအခြေအနေနှင့် ပတ်ဝန်းကျင်အပေါ်အခြေခံ၍ လုပ်ဆောင်မှုတစ်ခု၏ utility ကို တွက်ချက်ထားသော၊ အေးဂျင့်သည် အချိန်မရွေး အသင့်တော်ဆုံး အခြားပြည်နယ်ကို စစ်ဆေးပြီး ရွေးချယ်နိုင်သည်။ ၎င်းသည် လက်ရှိအခြေအနေအပါအဝင် အလားအလာရှိသော အခြေအနေတစ်ခုစီအတွက် အကူးအပြောင်းများကို ခန့်မှန်းတွက်ချက်မှုမှလွဲ၍ FSM နှင့် ဆင်တူသည်။ ဆက်လက်လုပ်ဆောင်ရန် အသုံးဝင်ဆုံးလုပ်ဆောင်ချက်ကို ကျွန်ုပ်တို့ရွေးချယ်ထားကြောင်း ကျေးဇူးပြု၍ သတိပြုပါ (သို့မဟုတ် ကျွန်ုပ်တို့ ၎င်းကို ပြီးမြောက်ပြီးပါက ဆက်နေရန်)။ ပိုမိုကွဲပြားမှုအတွက်၊ ၎င်းသည် မျှတသော်လည်း စာရင်းငယ်တစ်ခုမှ ကျပန်းရွေးချယ်မှုတစ်ခု ဖြစ်နိုင်သည်။

Система назначает произвольный диапазон значений полезности — например, от 0 (совершенно нежелательно) до 100 (полностью желательно). У каждого действия есть ряд параметров, влияющих на вычисление этого значения. Возвращаясь к нашему примеру со стражем:

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

လုပ်ဆောင်ချက်များကြား အကူးအပြောင်းများသည် ရှင်းရှင်းလင်းလင်း ရှိပြီး မည်သည့်နိုင်ငံမဆို အခြားမည်သည့်အတိုင်း လုပ်ဆောင်နိုင်ပါသည်။ ပြန်ပေးထားသော အသုံးဝင်တန်ဖိုးများတွင် လုပ်ဆောင်ချက်ဦးစားပေးများကို တွေ့နိုင်သည်။ အကယ်၍ ရန်သူကို မြင်နိုင်ပြီး ထိုရန်သူသည် အားကောင်းပြီး ဇာတ်ကောင်၏ ကျန်းမာရေးသည် နိမ့်ပါက၊ Fleeing နှင့် FindingHelp နှစ်ခုစလုံးသည် သုညမဟုတ်သော တန်ဖိုးမြင့်မားသော တန်ဖိုးများ ပြန်ပေးမည်ဖြစ်သည်။ ဤကိစ္စတွင်၊ FindingHelp သည် အမြဲတမ်း ပိုမြင့်နေလိမ့်မည်။ အလားတူ၊ တိုက်ပွဲမဟုတ်သော လှုပ်ရှားမှုများသည် 50 ထက်ပို၍ ဘယ်တော့မှ ပြန်မလာပါ၊ ထို့ကြောင့် ၎င်းတို့သည် တိုက်ခိုက်ရေးထက် အမြဲတမ်း နိမ့်ကျနေမည်ဖြစ်သည်။ လုပ်ဆောင်ချက်များကို ဖန်တီးပြီး ၎င်းတို့၏ အသုံးဝင်မှုကို တွက်ချက်သည့်အခါ ၎င်းကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်ပါသည်။

ကျွန်ုပ်တို့၏ဥပမာတွင်၊ လုပ်ဆောင်ချက်များသည် ပုံသေအဆက်မပြတ်တန်ဖိုး သို့မဟုတ် ပုံသေတန်ဖိုးနှစ်ခုထဲမှ တစ်ခုကို ပြန်ပေးသည်။ ပိုမိုလက်တွေ့ကျသောစနစ်တစ်ခုသည် စဉ်ဆက်မပြတ်တန်ဖိုးများထံမှ ခန့်မှန်းချက်တစ်ခုကို ပြန်ပေးမည်ဖြစ်သည်။ ဥပမာအားဖြင့်၊ Fleeing လုပ်ဆောင်ချက်သည် အေးဂျင့်၏ကျန်းမာရေးနိမ့်ပါက ပိုမိုမြင့်မားသော utility တန်ဖိုးများကို ပြန်ပေးမည်ဖြစ်ပြီး ရန်သူသည် အလွန်အားကောင်းပါက Attacking action သည် နိမ့်သောအသုံးဝင်မှုတန်ဖိုးများကို ပြန်ပေးသည်။ ထို့အတွက်ကြောင့် Fleeing action သည် ရန်သူအား အနိုင်ယူရန် လုံလောက်သော ကျန်းမာရေးမရှိဟု ခံစားရသည့် မည်သည့်အခြေအနေတွင်မဆို တိုက်ခိုက်ခြင်းထက် သာလွန်မှုရှိသည်။ ဤနည်းလမ်းသည် အပြုအမူသစ်ပင် သို့မဟုတ် FSM ထက်ပို၍ ပြောင်းလွယ်ပြင်လွယ်ရှိပြီး ပြောင်းလဲနိုင်သောပုံစံဖြင့် လုပ်ဆောင်ချက်များကို မည်သည့်စံနှုန်းများပေါ်မူတည်၍ ဦးစားပေးလုပ်ဆောင်နိုင်စေပါသည်။

လုပ်ဆောင်ချက်တစ်ခုစီတွင် ပရိုဂရမ်တွက်ချက်မှုအတွက် အခြေအနေများစွာရှိသည်။ ၎င်းတို့ကို ဇာတ်ညွှန်းဘာသာစကားဖြင့် သို့မဟုတ် သင်္ချာဖော်မြူလာများ အတွဲလိုက်အဖြစ် ရေးသားနိုင်သည်။ ဇာတ်ကောင်တစ်ဦး၏နေ့စဉ်လုပ်ရိုးလုပ်စဉ်ကိုအတုယူသည့် Sims သည် တွက်ချက်မှုအလွှာတစ်ခုထပ်တိုးသည် - အေးဂျင့်သည် အသုံးဝင်မှုအဆင့်သတ်မှတ်ချက်များအပေါ်လွှမ်းမိုးသည့် "လှုံ့ဆော်မှုများ" စီးရီးများကို လက်ခံရရှိသည်။ ဇာတ်ကောင်တစ်ဦး ဗိုက်ဆာပါက အချိန်ကြာလာသည်နှင့်အမျှ ၎င်းတို့သည် ပို၍ဆာလောင်လာမည်ဖြစ်ပြီး ဇာတ်ကောင်က ၎င်းကိုလုပ်ဆောင်ပြီးသည်အထိ အသုံးဝင်မှုတန်ဖိုး တိုးလာကာ ငတ်မွတ်မှုအဆင့်ကို လျှော့ချကာ EatFood တန်ဖိုးကို သုညသို့ ပြန်ပေးမည်ဖြစ်သည်။

အဆင့်သတ်မှတ်ခြင်းစနစ်အပေါ်အခြေခံသည့်လုပ်ဆောင်ချက်များကိုရွေးချယ်ခြင်း၏စိတ်ကူးသည်အတော်လေးရိုးရှင်းသည်၊ ထို့ကြောင့် Utility-based စနစ်အား ၎င်းတို့အတွက်ပြီးပြည့်စုံသောအစားထိုးမှုအဖြစ်မဟုတ်ဘဲ AI ဆုံးဖြတ်ချက်ချခြင်းလုပ်ငန်းစဉ်များ၏တစ်စိတ်တစ်ပိုင်းအဖြစ်အသုံးပြုနိုင်ပါသည်။ ဆုံးဖြတ်ချက်သစ်သည် ကလေး node နှစ်ခု၏ အသုံးဝင်မှုအဆင့်သတ်မှတ်ချက်ကို တောင်းဆိုနိုင်ပြီး ပိုမိုမြင့်မားသောတစ်ခုကို ရွေးချယ်နိုင်သည်။ အလားတူပင်၊ အမူအကျင့်သစ်တစ်ခုတွင် မည်သည့်ကလေးအား လုပ်ဆောင်ရမည်ကို ဆုံးဖြတ်ရန် လုပ်ဆောင်ချက်များ၏ အသုံးဝင်မှုကို အကဲဖြတ်ရန် ပေါင်းစပ် Utility node တစ်ခုရှိသည်။

ရွေ့လျားခြင်းနှင့် လမ်းကြောင်းပြခြင်း။

ယခင်နမူနာများတွင်၊ ကျွန်ုပ်တို့သည် ဘယ် သို့မဟုတ် ညာသို့ ရွှေ့ထားသော ပလက်ဖောင်းတစ်ခုနှင့် လှည့်ကင်း သို့မဟုတ် တိုက်ခိုက်သည့် အစောင့်တစ်ဦးရှိသည်။ သို့သော် အချိန်ကာလတစ်ခုအတွင်း အေးဂျင့်လှုပ်ရှားမှုကို ကျွန်ုပ်တို့ မည်သို့ကိုင်တွယ်ဖြေရှင်းမည်နည်း။ အမြန်နှုန်းကို ဘယ်လိုသတ်မှတ်မလဲ၊ အတားအဆီးတွေကို ဘယ်လိုရှောင်မလဲ၊ မျဉ်းဖြောင့်အတိုင်း ရွှေ့တာထက် ဦးတည်ရာကိုရောက်တဲ့အခါ လမ်းကြောင်းတစ်ခုကို ဘယ်လိုစီစဉ်ရမလဲ။ ဒါကိုကြည့်ရအောင်။

စီမံခန့်ခွဲမှု

ကနဦးအဆင့်တွင်၊ အေးဂျင့်တစ်ခုစီတွင် ၎င်းသည် မည်မျှမြန်စွာရွေ့လျားနေပြီး မည်သည့်လမ်းကြောင်းကို ဦးတည်သည်ဖြစ်စေ ပါဝင်သော အမြန်နှုန်းတန်ဖိုးတစ်ခုရှိသည်ဟု ကျွန်ုပ်တို့ယူဆပါမည်။ တစ်စက္ကန့်ကို မီတာ၊ တစ်နာရီ ကီလိုမီတာ၊ တစ်စက္ကန့် ပစ်ဇယ် အစရှိသည်ဖြင့် တိုင်းတာနိုင်သည်။ Sense/Think/Act loop ကို ပြန်အမှတ်ရသောအခါ Think အပိုင်းသည် အမြန်နှုန်းကို ရွေးချယ်သည်၊ အက်ဥပဒေအပိုင်းသည် ထိုမြန်နှုန်းကို အေးဂျင့်အတွက် သက်ရောက်မှုရှိသည်။ ပုံမှန်အားဖြင့် ဂိမ်းများသည် အရာဝတ္ထုတစ်ခုစီ၏ အမြန်နှုန်းတန်ဖိုးကို လေ့လာပြီး ၎င်းကို ချိန်ညှိပေးသည့် သင့်အတွက် ဤတာဝန်ကို လုပ်ဆောင်ပေးသည့် ရူပဗေဒစနစ်တစ်ခုရှိသည်။ ထို့ကြောင့်၊ သင်သည် AI ကို အလုပ်တစ်ခုဖြင့် ထားခဲ့နိုင်သည် - အေးဂျင့်တွင် မည်သည့်မြန်နှုန်းရှိသင့်သည်ကို ဆုံးဖြတ်ရန်။ အေးဂျင့်က ဘယ်နေရာမှာ ရှိသင့်တယ်ဆိုတာ သိရင် သတ်မှတ်အမြန်နှုန်းနဲ့ လမ်းကြောင်းမှန်ပေါ် ရွှေ့ဖို့ လိုပါတယ်။ အလွန်အသေးအဖွဲညီမျှခြင်း-

ဆန္ဒ_ခရီး = ပန်းတိုင်_နေရာ – အေးဂျင့်_ရာထူး

2D ကမ္ဘာကို စိတ်ကူးကြည့်ပါ။ အေးဂျင့်သည် အမှတ် (-၂၊-၂)၊ ဦးတည်ရာသည် အမှတ် (၃၀၊ ၂၀) တွင် အရှေ့မြောက်ဘက်တစ်နေရာဖြစ်ပြီး၊ အေးဂျင့်ရောက်ရှိရန် လိုအပ်သောလမ်းကြောင်းမှာ (၃၂၊ ၂၂) ဖြစ်သည်။ ဤရာထူးများကို မီတာဖြင့် တိုင်းတာသည်ဆိုပါစို့ - အကယ်၍ ကျွန်ုပ်တို့သည် အေးဂျင့်၏အမြန်နှုန်းကို တစ်စက္ကန့်လျှင် 2 မီတာဟု ယူပါက၊ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ displacement vector ကို အတိုင်းအတာနှင့် ခန့်မှန်းခြေအမြန်နှုန်း (2၊ 30) ရရှိမည်ဖြစ်သည်။ ဤကန့်သတ်ချက်များဖြင့်၊ အေးဂျင့်သည် ၎င်း၏ဦးတည်ရာသို့ ၈ စက္ကန့်နီးပါးအတွင်း ရောက်ရှိမည်ဖြစ်သည်။

တန်ဖိုးများကို အချိန်မရွေး ပြန်လည်တွက်ချက်နိုင်ပါသည်။ အကယ်၍ အေးဂျင့်သည် ပစ်မှတ်သို့ တစ်ဝက်ရောက်နေပါက၊ ရွေ့လျားမှုသည် တစ်ဝက်တစ်ပျက်ဖြစ်မည်ဖြစ်သော်လည်း အေးဂျင့်၏အမြင့်ဆုံးမြန်နှုန်းမှာ 5 m/s (အထက်တွင် ကျွန်ုပ်တို့ဆုံးဖြတ်ထားသည်) ဖြစ်သောကြောင့် အမြန်နှုန်းသည် တူညီမည်ဖြစ်သည်။ ၎င်းသည် အေးဂျင့်အား ရွေ့လျားနေစဉ် သေးငယ်သော အပြောင်းအလဲများ ပြုလုပ်နိုင်စေမည့် ပစ်မှတ်များကို ရွေ့လျားရန်အတွက်လည်း လုပ်ဆောင်သည်။

သို့သော် ကျွန်ုပ်တို့သည် ပိုမိုကွဲပြားမှုကို လိုချင်ပါသည်- ဥပမာ၊ ရပ်နေရာမှ အပြေးဆီသို့ ရွေ့လျားနေသော ဇာတ်ကောင်ကို အတုယူရန် အရှိန်ကို ဖြည်းဖြည်းချင်း တိုးပေးပါ။ ရပ်တန့်ခြင်းမပြုမီ အဆုံးတွင် အလားတူလုပ်ဆောင်နိုင်သည်။ ဤအင်္ဂါရပ်များကို စတီယာရင်အပြုအမူများဟု လူသိများကြပြီး တစ်ခုစီတွင် သီးခြားအမည်များပါရှိသည်- Seek, Flee, Arrival စသည်တို့ဖြစ်သည်။ အယူအဆမှာ အေးဂျင့်၏ အနေအထားနှင့် လက်ရှိအမြန်နှုန်းကို ဦးတည်ရာနှင့် ဦးတည်ရာရှိ အရှိန်အဟုန်တွင် အရှိန်အဟုန်ဖြင့် သက်ရောက်နိုင်သည်ဟု ယူဆပါသည်။ ပန်းတိုင်သို့ ပြောင်းရွှေ့ရန် နည်းလမ်းအမျိုးမျိုးကို အသုံးပြုရန်။

အပြုအမူတစ်ခုစီတွင် ရည်ရွယ်ချက် အနည်းငယ်ကွဲပြားပါသည်။ Seek and Arrival သည် အေးဂျင့်တစ်ဦးကို ဦးတည်ရာသို့ ရွှေ့ရန် နည်းလမ်းများဖြစ်သည်။ အတားအဆီး ရှောင်လွှဲခြင်းနှင့် ခွဲခွာခြင်း ပန်းတိုင်သို့ သွားရာလမ်းတွင် အတားအဆီးများကို ရှောင်ရှားရန် အေးဂျင့်၏ လှုပ်ရှားမှုကို ချိန်ညှိပါ။ ဟန်ချက်ညီမှုနှင့် ပေါင်းစည်းမှုသည် အေးဂျင့်များ အတူတကွ ရွေ့လျားနေစေပါသည်။ ကွဲပြားသော စတီယာရင် အပြုအမူ အရေအတွက် အားလုံးကို အချက်အားလုံးကို ထည့်သွင်းစဉ်းစားသည့် လမ်းကြောင်း vector တစ်ခု ထုတ်ပေးရန်အတွက် ပေါင်းစပ်နိုင်သည်။ နံရံများနှင့် အခြားအေးဂျင့်များနှင့် ဝေးဝေးနေရန် ရောက်ရှိလာခြင်း၊ ခွဲခွာခြင်းနှင့် အတားအဆီး ရှောင်လွှဲခြင်းအပြုအမူများကို အသုံးပြုသည့် အေးဂျင့်။ ဤနည်းလမ်းသည် မလိုအပ်သောအသေးစိတ်အချက်များမပါဘဲ ပွင့်လင်းသောနေရာများတွင် ကောင်းစွာအလုပ်လုပ်သည်။

ပိုမိုခက်ခဲသောအခြေအနေများတွင်၊ မတူညီသောအပြုအမူများထပ်ဖြည့်ခြင်းသည် ပိုဆိုးသည် - ဥပမာ၊ အေးဂျင့်တစ်ဦးရောက်ရှိခြင်းနှင့် အတားအဆီးရှောင်ရှားခြင်းကြားပဋိပက္ခကြောင့် နံရံတွင်ပိတ်မိနိုင်သည်။ ထို့ကြောင့်၊ သင်သည် တန်ဖိုးများအားလုံးကို ပေါင်းထည့်ခြင်းထက် ပိုမိုရှုပ်ထွေးသော ရွေးချယ်မှုများကို ထည့်သွင်းစဉ်းစားရန် လိုအပ်သည်။ နည်းလမ်းမှာ ဤသို့ဖြစ်သည်- အပြုအမူတစ်ခုစီ၏ရလဒ်များကို ပေါင်းထည့်မည့်အစား၊ သင်သည် မတူညီသောလမ်းကြောင်းများတွင် ရွေ့လျားမှုကို စဉ်းစားနိုင်ပြီး အကောင်းဆုံးရွေးချယ်မှုကို ရွေးချယ်နိုင်သည်။

သို့သော်၊ ရှုပ်ထွေးသော အဆုံးစွန်များနှင့် ရွေးချယ်မှုများရှိသော ပတ်ဝန်းကျင်တွင် မည်သည့်လမ်းကိုသွားရမည်ကို ကျွန်ုပ်တို့ ပို၍အဆင့်မြင့်သော အရာတစ်ခု လိုအပ်ပါလိမ့်မည်။

နည်းလမ်းရှာနေသည်

စတီယာရင် အပြုအမူများသည် ပွင့်လင်းသော ဧရိယာ (ဘောလုံးကွင်း သို့မဟုတ် အားကစားကွင်း) တွင် ရိုးရှင်းသော လှုပ်ရှားမှုအတွက် A မှ B သို့ ဖြောင့်တန်းသော လမ်းကြောင်းဖြစ်ပြီး အတားအဆီးအနည်းငယ်သာရှိသော လမ်းလွှဲများသာဖြစ်သည်။ ရှုပ်ထွေးသောလမ်းကြောင်းများအတွက်၊ ကျွန်ုပ်တို့သည် ကမ္ဘာကိုရှာဖွေရန်နှင့် ၎င်းကိုဖြတ်၍ လမ်းကြောင်းတစ်ခုကိုဆုံးဖြတ်ရန်နည်းလမ်းဖြစ်သည့် လမ်းကြောင်းရှာဖွေမှုလိုအပ်ပါသည်။

အရိုးရှင်းဆုံးမှာ အေးဂျင့်ဘေးရှိ စတုရန်းတစ်ခုစီတွင် ဇယားကွက်တစ်ခုစီကို အသုံးချပြီး ၎င်းတို့ထဲမှ မည်သည့်ရွေ့ပြောင်းခွင့်ကို အကဲဖြတ်ရန်ဖြစ်သည်။ ၎င်းတို့အနက်မှ တစ်ခုသည် ဦးတည်ရာတစ်ခုဖြစ်ပါက၊ ထို့နောက် သင်စတုရန်းတစ်ခုစီမှ ယခင်နေရာသို့ လမ်းကြောင်းအတိုင်း လိုက်ပါ။ ဒါက လမ်းကြောင်းပါ။ မဟုတ်ပါက၊ သင့်ဦးတည်ရာကို သင်ရှာမတွေ့မချင်း သို့မဟုတ် လေးထောင့်မကျန် (ဖြစ်နိုင်ချေ လမ်းကြောင်းမရှိဟု ဆိုလိုသည်)။ ၎င်းကို Breadth-First Search သို့မဟုတ် BFS (breadth-first search algorithm) ဟုခေါ်သည်။ ခြေလှမ်းတိုင်း၌ အရပ်မျက်နှာတို့ကို ကြည့်ရှုတော်မူသည် (အနံ၊ အနံ)။ ရှာဖွေမှုနေရာသည် လိုချင်သောနေရာသို့ရောက်သည်အထိ ရွေ့လျားနေသည့် လှိုင်းအလျားတစ်ခုကဲ့သို့ဖြစ်သည် - ရှာဖွေမှုနေရာသည် အဆုံးမှတ်မပါဝင်မီအထိ အဆင့်တစ်ဆင့်ချင်းစီတွင် ချဲ့ထွင်ကာ အစသို့ခြေရာခံနိုင်မည်ဖြစ်သည်။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

ရလဒ်အနေဖြင့် သင်သည် အလိုရှိသောလမ်းကြောင်းကို ပြုစုထားသည့် စတုရန်းများစာရင်းကို သင်ရရှိမည်ဖြစ်သည်။ ဤသည်မှာ လမ်းကြောင်း (ထို့ကြောင့် လမ်းကြောင်းရှာဖွေခြင်း) - ဦးတည်ရာကို လိုက်စဉ်တွင် အေးဂျင့်သွားရောက်မည့်နေရာများစာရင်း။

ကျွန်ုပ်တို့သည် ကမ္ဘာပေါ်ရှိ စတုရန်းတစ်ခုစီ၏ အနေအထားကို သိသောကြောင့်၊ လမ်းကြောင်းတစ်လျှောက် ရွေ့လျားရန် စတီယာရင်အပြုအမူများကို အသုံးပြု၍- node 1 မှ node 2၊ ထို့နောက် node 2 မှ node 3 စသည်တို့ကို အသုံးပြုနိုင်ပါသည်။ အရိုးရှင်းဆုံးရွေးချယ်မှုမှာ နောက်စတုရန်း၏အလယ်ဗဟိုသို့ ဦးတည်ရန်ဖြစ်သည်၊ သို့သော် ပိုကောင်းသည့်ရွေးချယ်မှုမှာ လက်ရှိစတုရန်းနှင့် နောက်တစ်ခုကြားအစွန်းအလယ်တွင် ရပ်ရန်ဖြစ်သည်။ ထို့အတွက်ကြောင့်၊ အေးဂျင့်သည် ချွန်ထက်သောအလှည့်များတွင် ထောင့်များကို ဖြတ်တောက်နိုင်မည်ဖြစ်သည်။

BFS algorithm တွင်လည်း အားနည်းချက်များ ရှိသည် - ၎င်းသည် "မှန်ကန်သော" လမ်းကြောင်းရှိ စတုရန်းများကဲ့သို့ "မှား" လမ်းကြောင်းကို ရှာဖွေသည်။ ဤနေရာတွင် A* (ကြယ်ပွင့်) ဟုခေါ်သော ပိုမိုရှုပ်ထွေးသော အယ်လဂိုရီသမ်တစ်ခု ပေါ်လာပါသည်။ ၎င်းသည် တူညီသောနည်းလမ်းအတိုင်း လုပ်ဆောင်သော်လည်း၊ အိမ်နီးချင်းစတုရန်းများကို မျက်စိစုံမှိတ်စစ်ဆေးမည့်အစား (ထိုအခါ အိမ်နီးချင်းများ၏ အိမ်နီးချင်းများ၊ အိမ်နီးချင်းများ၏ အိမ်နီးချင်းများ၊ စသည်ဖြင့်)၊ ၎င်းသည် node များကို စာရင်းတစ်ခုအဖြစ် စုစည်းပြီး ၎င်းတို့ကို စီရန် စီစဥ်ထားသောကြောင့် စစ်ဆေးမှုနောက်ထပ် node သည် အမြဲတမ်းဖြစ်နေစေရန်၊ အတိုဆုံးလမ်းကြောင်းကို ပို့ဆောင်ပေးတဲ့ အရာနှစ်ခုကို ထည့်သွင်းစဉ်းစားသည့် တွေးခေါ်မှုတစ်ခုအပေါ် အခြေခံ၍ အမျိုးအစားခွဲထားသည်—အလိုရှိသောစတုရန်းသို့ ခရီးစရိတ်များအပါအဝင်) တွေးခေါ်မှုလမ်းကြောင်းတစ်ခု၏ "ကုန်ကျစရိတ်" နှင့် ထိုစတုရန်းမှမည်မျှအကွာအဝေးကို ခန့်မှန်းချက် (ရှာဖွေမှုကို ဘက်လိုက်ခြင်းဖြင့် လမ်းကြောင်းမှန်)။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

ဤနမူနာတွင် အေးဂျင့်သည် အလားအလာအရှိဆုံး ကပ်လျက်တစ်ခုကို ရွေးချယ်သည့်အခါတိုင်း တစ်ကြိမ်လျှင် စတုရန်းတစ်ခုစီကို စူးစမ်းလေ့လာကြောင်း ဤဥပမာက ပြသသည်။ ရလာဒ်လမ်းကြောင်းသည် BFS နှင့်အတူတူပင်ဖြစ်သော်လည်း ဂိမ်းစွမ်းဆောင်ရည်အပေါ် ကြီးမားသောအကျိုးသက်ရောက်မှုရှိသော လုပ်ငန်းစဉ်တွင် လေးထောင့်အနည်းငယ်ကို ထည့်သွင်းစဉ်းစားထားသည်။

ဇယားကွက်မပါဘဲ လှုပ်ရှားမှု

ဒါပေမယ့် ဂိမ်းအများစုကို ဇယားကွက်မှာ မထည့်ထားဘဲ လက်တွေ့ဆန်မှုကို မစွန့်လွတ်ဘဲ မကြာခဏ ပြုလုပ်ဖို့ မဖြစ်နိုင်ပါဘူး။ အပေးအယူတွေ လိုအပ်တယ်။ လေးထောင့် အရွယ်အစား မည်မျှ ရှိသင့်သနည်း။ ကြီးလွန်းသဖြင့် ၎င်းတို့သည် သေးငယ်သော စင်္ကြံများ သို့မဟုတ် အကွေ့များကို မှန်ကန်စွာ ကိုယ်စားပြုနိုင်မည်မဟုတ်ပါ၊ သေးငယ်လွန်းပြီး ရှာဖွေရန်စတုရန်းများ များပြားနေမည်ဖြစ်ပြီး၊ အဆုံးတွင် အချိန်များစွာယူရမည်ဖြစ်သည်။

Первое, что нужно понять — сетка дает нам граф связанных узлов. Алгоритмы A* и BFS фактически работают на графиках и вообще не заботятся о нашей сетке. Мы могли бы поставить узлы в любых местах игрового мира: при наличии связи между любыми двумя соединенными узлами, а также между начальной и конечной точкой и по крайней мере одним из узлов — алгоритм будет работать также хорошо, как и раньше. Часто это называют системой путевых точек (waypoint), так как каждый узел представляет собой значимую позицию в мире, которая может быть частью любого количества гипотетических путей.

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်
Пример 1: узел в каждом квадрате. Поиск начинается из узла, в котором находится агент, и заканчивается в узле нужного квадрата.

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်
ဥပမာ 2- သေးငယ်သော node အစုံ (waypoints)။ ရှာဖွေမှုသည် အေးဂျင့်၏စတုရန်းတွင် စတင်သည်၊ လိုအပ်သော node အရေအတွက်ကိုဖြတ်ကာ၊ ထို့နောက် ဦးတည်ရာသို့ ဆက်လက်လုပ်ဆောင်သည်။

ဤသည်မှာ လုံးဝပြောင်းလွယ်ပြင်လွယ်နှင့် အားကောင်းသည့် စနစ်တစ်ခုဖြစ်သည်။ သို့သော် လမ်းကြောင်းတစ်ခုကို မည်သည့်နေရာတွင် မည်ကဲ့သို့ ထားရမည်ကို ဆုံးဖြတ်ရာတွင် အချို့သော ဂရုစိုက်မှု လိုအပ်သည်၊ သို့မဟုတ်ပါက အေးဂျင့်များသည် အနီးဆုံးအမှတ်ကို မမြင်နိုင်ဘဲ လမ်းကြောင်းကို စတင်နိုင်မည် မဟုတ်ပါ။ ကမ္ဘာ၏ ဂျီသြမေတြီကို အခြေခံ၍ လမ်းအမှတ်များကို အလိုအလျောက် ထားရှိနိုင်လျှင် ပိုမိုလွယ်ကူမည်ဖြစ်သည်။

Тут появляется navigation mesh или navmesh (навигационная сетка). Это обычно 2D-сетка треугольников, которая накладывается на геометрию мира — везде, где агенту разрешено ходить. Каждый из треугольников в сетке становится узлом в графе и имеет до трех смежных треугольников, которые становятся соседними узлами в графе.

ဤပုံသည် Unity အင်ဂျင်မှ နမူနာဖြစ်ပါသည် - ၎င်းသည် ကမ္ဘာရှိ ဂျီသြမေတြီကို ပိုင်းခြားစိတ်ဖြာပြီး navmesh (အပြာနုရောင်ဖြင့် ဖန်သားပြင်တွင်) ဖန်တီးထားသည်။ navmesh ရှိ ကွန်ပြူတာတစ်ခုစီသည် ကိုယ်စားလှယ်တစ်ဦး ရပ်တည်နိုင် သို့မဟုတ် ရွှေ့လျားနိုင်သည့် ဧရိယာတစ်ခုဖြစ်ပြီး ပုံတူဂံတစ်ခုမှ အခြား polygon တစ်ခုသို့ ရွှေ့နိုင်သည်။ ဤဥပမာတွင်၊ polygons များသည် ၎င်းတို့တည်ရှိသည့် ကြမ်းပြင်များထက် သေးငယ်သည် - ၎င်း၏အမည်ခံရာထူးထက် ကျော်လွန်သွားမည့် အေးဂျင့်အရွယ်အစားကို ထည့်သွင်းစဉ်းစားရန်အတွက် ၎င်းကို လုပ်ဆောင်သည်။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

A* algorithm ကို အသုံးပြု၍ ဤ mesh မှတဆင့် လမ်းကြောင်းတစ်ခုကို ရှာဖွေနိုင်ပါသည်။ ၎င်းသည် ကျွန်ုပ်တို့အား ဂျီသြမေတြီအားလုံးကို ထည့်သွင်းစဉ်းစားကာ မလိုအပ်သော node များနှင့် waypoints များဖန်တီးရန် မလိုအပ်သော ကမ္ဘာပေါ်ရှိ ပြီးပြည့်စုံလုနီးပါး လမ်းကြောင်းကို ပေးပါလိမ့်မည်။

Pathfinding သည် ဆောင်းပါးတစ်ပုဒ်၏ ကဏ္ဍတစ်ခုအတွက် မလုံလောက်သော ခေါင်းစဉ်တစ်ခုဖြစ်သည်။ အသေးစိတ်လေ့လာချင်ရင်တော့ ဒါက အထောက်အကူဖြစ်မှာပါ။ Amit Patel ဝဘ်ဆိုဒ်.

စီမံကိန်းရေးဆွဲခြင်း

တစ်ခါတရံ ဦးတည်ချက်တစ်ခုကို ရွေးပြီး ရွေ့ရုံနဲ့ မလုံလောက်ဘူးဆိုတာကို လမ်းကြောင်းရှာဖွေခြင်းနဲ့ သင်ယူခဲ့ပြီးပါပြီ၊ လမ်းကြောင်းတစ်ခုကို ရွေးပြီး လိုချင်တဲ့ပန်းတိုင်ကို ရောက်ဖို့ လှည့်အနည်းငယ်လုပ်ရပါမယ်။ ဤအကြံအစည်ကို ကျွန်ုပ်တို့ ယေဘူယျအားဖြင့် နားလည်နိုင်သည်- ပန်းတိုင်တစ်ခုအောင်မြင်ရန်သည် နောက်တစ်ဆင့်မျှသာမဟုတ်၊ သို့သော် တစ်ခါတစ်ရံတွင် ပထမဖြစ်သင့်သည်များကို သိရှိရန် ခြေလှမ်းများစွာကို လှမ်းကြည့်ရန်လိုအပ်သည့် အတွဲလိုက်တစ်ခုဖြစ်သည်။ ဒါကို Planning လို့ခေါ်တယ်။ Pathfinding ကို စီစဉ်ခြင်းအတွက် တိုးချဲ့မှုများစွာထဲမှ တစ်ခုအဖြစ် ယူဆနိုင်သည်။ ကျွန်ုပ်တို့၏ Sense/Think/Act cycle အရ၊ Think part သည် အနာဂတ်အတွက် Act အပိုင်းများစွာကို စီစဉ်ပေးမည့်နေရာဖြစ်သည်။

Magic: The Gathering ဘုတ်ဂိမ်းရဲ့ ဥပမာကို ကြည့်ရအောင်။ ကျွန်ုပ်တို့လက်ထဲတွင် အောက်ဖော်ပြပါ ကတ်ပြားများနှင့်အတူ ဦးစွာသွားပါ။

  • Swamp - အနက်ရောင် mana (မြေကဒ်) 1 ခု ပေးသည်။
  • သစ်တော - အစိမ်းရောင် mana (မြေကဒ်) 1 ခု ပေးသည်။
  • Fugitive Wizard - ခေါ်ရန် အပြာရောင် မာနာ 1 ခု လိုအပ်သည်။
  • Elvish Mystic - ဖိတ်ခေါ်ရန်အတွက် အစိမ်းရောင် mana 1 ခု လိုအပ်သည်။

ပိုမိုလွယ်ကူစေရန် ကျန်ကတ်သုံးကတ်ကို ကျွန်ုပ်တို့ လျစ်လျူရှုပါသည်။ စည်းမျဉ်းများအရ ကစားသမားတစ်ဦးသည် အလှည့်တွင် မြေကွက်ကတ် 1 ကတ်ကစားရန် ခွင့်ပြုထားပြီး ၎င်းကတ်မှ mana ကိုထုတ်ယူရန် ဤကတ်ကို "ထိပုတ်ပါ" ပြီးနောက် mana ပမာဏအလိုက် စာလုံးပေါင်းများ (သတ္တဝါတစ်ကောင်ကို ဆင့်ခေါ်ခြင်းအပါအဝင်) ကို လောင်းချနိုင်သည်။ ဤအခြေအနေတွင်၊ လူသားကစားသမားသည် သစ်တောကိုကစားရန်၊ အစိမ်းရောင်မာနာ 1 ခုကိုနှိပ်ပြီး Elvish Mystic ကိုခေါ်ရန်သိသည်။ ဒါပေမယ့် AI ဂိမ်းက ဒါကို ဘယ်လိုဖြေရှင်းနိုင်မလဲ။

လွယ်ကူသောအစီအစဉ်

အသေးအဖွဲ ချဉ်းကပ်နည်းမှာ သင့်လျော်သည့်အရာများ မကျန်မချင်း လုပ်ဆောင်မှုတစ်ခုစီကို အလှည့်ကျ ကြိုးစားရန်ဖြစ်သည်။ ကတ်များကိုကြည့်ခြင်းဖြင့်၊ AI သည် Swamp ကစားနိုင်သည့်အရာကိုမြင်သည်။ ပြီးတော့ သူကတီးတယ်။ ဤအလှည့်တွင် အခြားလုပ်ဆောင်စရာများ ရှိပါသလား။ ၎င်းတို့ကိုခေါ်ရန်အတွက် အစိမ်းရောင်နှင့် အပြာရောင် mana အသီးသီး လိုအပ်သောကြောင့် Elvish Mystic သို့မဟုတ် Fugitive Wizard တို့ကို မခေါ်နိုင်ဘဲ Swamp သည် အနက်ရောင် mana ကိုသာ ပံ့ပိုးပေးပါသည်။ Swamp ကိုကစားပြီးဖြစ်သောကြောင့် Forest ကိုကစားနိုင်တော့မည်မဟုတ်ပါ။ ထို့ကြောင့် AI ဂိမ်းသည် စည်းမျဉ်းများကို လိုက်နာခဲ့သော်လည်း ညံ့ဖျင်းစွာ လုပ်ဆောင်ခဲ့သည်။ တိုးတက်စေနိုင်သည်။

အစီအစဉ်ဆွဲခြင်းသည် ဂိမ်းကို အလိုရှိသော အခြေအနေသို့ ယူဆောင်လာပေးသည့် လုပ်ဆောင်ချက်စာရင်းကို ရှာဖွေနိုင်သည်။ လမ်းစဥ်တစ်ခုစီတိုင်းတွင် အိမ်နီးချင်းများ (လမ်းကြောင်းရှာဖွေရာတွင်) ကဲ့သို့ပင်၊ အစီအစဉ်တစ်ခုရှိ လုပ်ဆောင်မှုတိုင်းတွင် အိမ်နီးချင်းများ သို့မဟုတ် ဆက်ခံသူများလည်းရှိသည်။ ကျွန်ုပ်တို့ အလိုရှိသော အခြေအနေသို့ ရောက်သည်အထိ ဤလုပ်ဆောင်ချက်များနှင့် နောက်ဆက်တွဲ လုပ်ဆောင်ချက်များကို ရှာဖွေနိုင်ပါသည်။

ကျွန်ုပ်တို့၏ဥပမာတွင်၊ လိုချင်သောရလဒ်မှာ “ဖြစ်နိုင်လျှင် သတ္တဝါတစ်ကောင်ကို ခေါ်ဆောင်ခြင်း” ဖြစ်သည်။ အလှည့်၏အစတွင်၊ ဂိမ်း၏စည်းမျဉ်းများမှခွင့်ပြုထားသော ဖြစ်နိုင်ခြေရှိသော လုပ်ဆောင်ချက်များကို ကျွန်ုပ်တို့တွေ့မြင်ရသည်-

1. Swamp ကစားပါ (ရလဒ်- ဂိမ်းထဲတွင် Swamp)
2. သစ်တောကို ကစားပါ (ရလဒ်- ဂိမ်းတွင် သစ်တော)

လုပ်ဆောင်မှုတစ်ခုစီသည် ဂိမ်း၏စည်းမျဉ်းများအပေါ်မူတည်၍ နောက်ထပ်လုပ်ဆောင်မှုများဆီသို့ ဦးတည်သွားနိုင်ပြီး အခြားတစ်ခုကို ပိတ်နိုင်သည်။ ကျွန်ုပ်တို့ Swamp ကစားခဲ့သည်ကို စိတ်ကူးကြည့်ပါ - ၎င်းသည် နောက်တစ်ဆင့်အနေဖြင့် Swamp ကို ဖယ်ရှားလိုက်မည် (ကျွန်ုပ်တို့ ကစားပြီးပြီ)၊ ၎င်းသည် သစ်တောကိုလည်း ဖယ်ရှားလိုက်မည် (အဘယ်ကြောင့်ဆိုသော် စည်းမျဉ်းများအတိုင်း သင်သည် အလှည့်တွင် မြေကတ်တစ်ကတ်ကစားနိုင်သောကြောင့်)။ ယင်းနောက်တွင်၊ AI သည် အခြားရွေးချယ်စရာများမရှိသောကြောင့် နောက်တစ်ဆင့်အဖြစ် အနက်ရောင် mana 1 ခုကို ထပ်မံရရှိမည်ဖြစ်သည်။ အကယ်၍ သူရှေ့ဆက်သွားပြီး Tap the Swamp ကို ရွေးပါက၊ သူသည် အနက်ရောင် mana ယူနစ် 1 ယူနစ်ကို ရရှိမည်ဖြစ်ပြီး ၎င်းကို မည်သို့မျှ လုပ်ဆောင်နိုင်မည် မဟုတ်ပါ။

1. Swamp ကစားပါ (ရလဒ်- ဂိမ်းထဲတွင် Swamp)
1.1 “ထိပုတ်ပါ” ရွှံ့ညွန် (ရလဒ်- ရွှံ့ညွန် “ထိလိုက်သည်”၊ အနက်ရောင် mana ယူနစ် ၁ ယူနစ်)
လုပ်ဆောင်ချက်များ မရရှိနိုင်ပါ - END
2. သစ်တောကို ကစားပါ (ရလဒ်- ဂိမ်းတွင် သစ်တော)

လုပ်ဆောင်ချက်စာရင်းက တိုတောင်းတယ်၊ ကျွန်တော်တို့ အဆုံးစွန်ထိ ရောက်သွားတယ်။ ကျွန်ုပ်တို့သည် နောက်တစ်ဆင့်အတွက် လုပ်ငန်းစဉ်ကို ပြန်လုပ်ပါသည်။ ကျွန်ုပ်တို့သည် သစ်တောကိုကစားကာ “အစိမ်းရောင်မနော 1 ခုရယူပါ” လုပ်ဆောင်ချက်ကိုဖွင့်ပါ၊ ၎င်းသည် တတိယလုပ်ဆောင်ချက်ကိုဖွင့်ပါ - Elvish Mystic ကိုခေါ်ပါ။

1. Swamp ကစားပါ (ရလဒ်- ဂိမ်းထဲတွင် Swamp)
1.1 “ထိပုတ်ပါ” ရွှံ့ညွန် (ရလဒ်- ရွှံ့ညွန် “ထိလိုက်သည်”၊ အနက်ရောင် mana ယူနစ် ၁ ယူနစ်)
လုပ်ဆောင်ချက်များ မရရှိနိုင်ပါ - END
2. သစ်တောကို ကစားပါ (ရလဒ်- ဂိမ်းတွင် သစ်တော)
2.1 “ထိပုတ်ပါ” သစ်တော (ရလဒ်- သစ်တောကို “ထိလိုက်သည်”၊ +1 အစိမ်းရောင် mana ယူနစ်)
2.1.1 Summon Elvish Mystic (ရလဒ်- Elvish Mystic in play၊ -1 အစိမ်းရောင် mana)
လုပ်ဆောင်ချက်များ မရရှိနိုင်ပါ - END

နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့သည် ဖြစ်နိုင်ချေရှိသော လုပ်ဆောင်ချက်များကို ရှာဖွေပြီး သတ္တဝါတစ်ကောင်ကို ခေါ်ဆောင်မည့် အစီအစဉ်ကို တွေ့ရှိခဲ့သည်။

ဤသည်မှာ အလွန်ရိုးရှင်းသော ဥပမာတစ်ခုဖြစ်သည်။ အချို့သော စံနှုန်းများနှင့် ကိုက်ညီသော မည်သည့် အစီအစဉ်ကိုမျှ မဟုတ်ဘဲ ဖြစ်နိုင်သည့် အကောင်းဆုံး အစီအစဉ်ကို ရွေးချယ်ရန် အကြံပြုလိုပါသည်။ ၎င်းတို့၏ အကောင်အထည်ဖော်မှု၏ ရလဒ် သို့မဟုတ် အလုံးစုံအကျိုးအမြတ်အပေါ် အခြေခံ၍ ဖြစ်နိုင်ချေရှိသော အစီအစဉ်များကို အကဲဖြတ်ရန် ယေဘုယျအားဖြင့် ဖြစ်နိုင်သည်။ မြေကွက်ကတ်ကစားခြင်းအတွက် သင်ကိုယ်တိုင် ၁ မှတ်ရနိုင်ပြီး သတ္တဝါတစ်ကောင်ကို ခေါ်ယူရန်အတွက် ၃ မှတ်ရနိုင်သည်။ Swamp ကစားခြင်းသည် 1 မှတ်အစီအစဉ်ဖြစ်လိမ့်မည်။ သစ်တော → သစ်တောကို နှိပ်ပါ → ဆင့်ခေါ်ခြင်း Elvish Mystic သည် ချက်ခြင်း 3 မှတ် ပေးလိမ့်မည်။

ဤအရာသည် Magic: The Gathering တွင် စီစဉ်ပုံလုပ်ဆောင်ပုံဖြစ်သော်လည်း အခြားသော အခြေအနေများတွင် တူညီသော ယုတ္တိဗေဒ အကျုံးဝင်ပါသည်။ ဥပမာအားဖြင့်၊ ဘုန်းတော်ကြီးသည် စစ်တုရင်ကစားရန် နေရာရရန် အပေါင်ကိုရွှေ့ပါ။ သို့မဟုတ် ဤကဲ့သို့သော XCOM တွင် ဘေးကင်းစွာ ရိုက်ကူးရန် နံရံနောက်ကွယ်တွင် ဖုံးအုပ်ထားပါ။ ယေဘူယျအားဖြင့်၊ မင်းအကြံဥာဏ်ကိုရနိုင်တယ်။

ပိုမိုကောင်းမွန်အောင် စီစဉ်ခြင်း။

တစ်ခါတစ်ရံ ဖြစ်နိုင်ချေရှိသော ရွေးချယ်မှုတိုင်းကို ထည့်သွင်းစဉ်းစားရန် အလားအလာများလွန်းသည်။ Magic: The Gathering ဖြင့် နမူနာသို့ ပြန်သွားခြင်း- ဂိမ်းနှင့် သင့်လက်ထဲတွင် မြေနှင့် သတ္တဝါကတ်များစွာ ရှိသည်ဆိုကြပါစို့။ ဖြစ်နိုင်ခြေရှိသော လှုပ်ရှားမှုများ၏ ပေါင်းစပ်မှုအရေအတွက်သည် ဒါဇင်နှင့်ချီရှိနိုင်ပါသည်။ ပြဿနာအတွက် ဖြေရှင်းနည်းများစွာရှိပါသည်။

ပထမနည်းလမ်းမှာ အနောက်သို့ သံကြိုးဆွဲခြင်း ဖြစ်သည်။ ပေါင်းစပ်မှုအားလုံးကို ကြိုးစားမည့်အစား နောက်ဆုံးရလဒ်ဖြင့် စတင်ကာ တိုက်ရိုက်လမ်းကြောင်းကို ရှာဖွေရန် ကြိုးစားခြင်းက ပိုကောင်းပါတယ်။ သစ်ပင်၏ အမြစ်မှ သီးခြားအရွက်ဆီသို့ သွားမည့်အစား အရွက်မှ အမြစ်အထိ ဆန့်ကျင်ဘက်သို့ ရွေ့လျားသည်။ ဒီနည်းလမ်းက ပိုလွယ်ပြီး ပိုမြန်ပါတယ်။

ရန်သူတွင် ကျန်းမာရေး 1 ခုရှိပါက၊ "deal 1 သို့မဟုတ် ထို့ထက်ပိုသော ပျက်စီးဆုံးရှုံးမှု" အစီအစဉ်ကို သင်တွေ့နိုင်သည်။ ယင်းကိုအောင်မြင်ရန်၊ အခြေအနေများစွာကို ဖြည့်ဆည်းပေးရမည်-

1. စာလုံးပေါင်းကြောင့် ပျက်စီးနိုင်သည် - ၎င်းသည် လက်ထဲတွင် ရှိနေရမည်။
2. စာလုံးပေါင်းသတ်ရန်၊ သင်သည် mana လိုအပ်သည်။
3. mana ရရန်၊ သင်သည် land card တစ်ခုကစားရန်လိုအပ်သည်။
4. မြေယာကတ်ကို ကစားရန်၊ ၎င်းကို သင့်လက်ထဲတွင် ရှိနေရန် လိုအပ်သည်။

နောက်တစ်နည်းကတော့ အကောင်းဆုံး ပထမရှာဖွေခြင်းပါ။ လမ်းကြောင်းအားလုံးကို စမ်းကြည့်မယ့်အစား အသင့်တော်ဆုံးကို ရွေးချယ်ပါ။ အများစုမှာ၊ ဤနည်းလမ်းသည် မလိုအပ်ဘဲ ရှာဖွေမှုကုန်ကျစရိတ်မရှိဘဲ အကောင်းဆုံးအစီအစဉ်ကို ပေးသည်။ A* သည် အကောင်းဆုံးပထမရှာဖွေမှုပုံစံတစ်ခုဖြစ်သည် - အစကတည်းကအလားအလာအကောင်းဆုံးလမ်းကြောင်းများကိုစစ်ဆေးခြင်းဖြင့်၊ အခြားရွေးချယ်စရာများကိုစစ်ဆေးစရာမလိုဘဲအကောင်းဆုံးလမ်းကြောင်းကိုရှာဖွေနိုင်နေပြီဖြစ်သည်။

စိတ်ဝင်စားစရာကောင်းပြီး လူကြိုက်များလာသော အကောင်းဆုံး ပထမရှာဖွေမှုရွေးချယ်မှုမှာ Monte Carlo Tree Search ဖြစ်သည်။ နောက်ဆက်တွဲလုပ်ဆောင်မှုတစ်ခုစီကိုရွေးချယ်ရာတွင် အခြားအစီအစဉ်များထက် မည်သည့်အစီအစဉ်များပိုကောင်းသည်ကို ခန့်မှန်းမည့်အစား၊ algorithm သည် အဆုံးအထိ အဆင့်တစ်ဆင့်ချင်းစီတွင် ကျပန်းဆက်ခံသူများကို (အစီအစဥ်အောင်ပွဲ သို့မဟုတ် ရှုံးနိမ့်သည့်အခါ) ကို ရွေးချယ်သည်။ ထို့နောက် ယခင်ရွေးချယ်မှုများ၏ အလေးချိန်ကို တိုးရန် သို့မဟုတ် လျှော့ချရန်အတွက် နောက်ဆုံးရလဒ်ကို အသုံးပြုသည်။ ဤလုပ်ငန်းစဉ်ကို အကြိမ်ပေါင်းများစွာ ဆက်တိုက်ပြုလုပ်ခြင်းဖြင့်၊ အခြေအနေပြောင်းလဲသွားပါက (ကစားသမားအား အနှောင့်အယှက်ပေးရန်ရန်သူမှ လုပ်ဆောင်ပါက) algorithm သည် အကောင်းဆုံးနောက်ထပ်လှုပ်ရှားမှုကို ခန့်မှန်းချက်ကောင်းကောင်းပေးပါသည်။

Goal-Oriented Action Planning သို့မဟုတ် GOAP (ပန်းတိုင်ကို ဦးတည်သည့် လုပ်ဆောင်ချက်စီစဉ်ခြင်း) မပါဘဲ ဂိမ်းများတွင် စီစဉ်ခြင်းနှင့်ပတ်သက်သည့် ဇာတ်လမ်းသည် ပြီးပြည့်စုံမည်မဟုတ်ပါ။ ၎င်းသည် တွင်ကျယ်စွာအသုံးပြုပြီး ဆွေးနွေးထားသောနည်းလမ်းဖြစ်သည်၊ သို့သော် ကွဲပြားသောအသေးစိတ်အချက်အနည်းငယ်မှလွဲ၍ ၎င်းသည် အစောပိုင်းတွင်ပြောခဲ့သော နောက်ပြန်ဆွဲကြိုးနည်းလမ်းဖြစ်သည်။ အကယ်၍ ရည်ရွယ်ချက်မှာ "ကစားသမားကို ဖျက်ဆီးရန်" ဖြစ်ပြီး ကစားသမားသည် အဖုံးနောက်တွင် ရှိနေပါက၊ အစီအစဥ်မှာ - လက်ပစ်ဗုံးဖြင့် ဖျက်စီးခြင်း → ၎င်းကို ရယူရန် → ပစ်ချခြင်း ဖြစ်သည်။

များသောအားဖြင့် ပန်းတိုင်များစွာရှိကြပြီး တစ်ခုစီသည် ၎င်း၏ကိုယ်ပိုင်ဦးစားပေးဖြစ်သည်။ အမြင့်ဆုံး ဦးစားပေး ရည်မှန်းချက်ကို ပြီးမြောက်အောင် မဆောင်ရွက်နိုင်ပါက (လုပ်ဆောင်ချက်များ ပေါင်းစပ်ခြင်းမရှိပါက ကစားသမားကို မမြင်နိုင်သောကြောင့် "သတ်ပစ်ရန်" အစီအစဉ်ကို ဖန်တီးပါ)၊ AI သည် ဦးစားပေး ရည်မှန်းချက်များဆီသို့ ပြန်လည်ရောက်ရှိသွားပါမည်။

လေ့ကျင့်မှုနှင့် လိုက်လျောညီထွေဖြစ်အောင်

ဂိမ်း AI သည် အများအားဖြင့် machine learning ကိုအသုံးမပြုကြောင်း ကျွန်ုပ်တို့ပြောထားပြီးဖြစ်သည်၊ အကြောင်းမှာ ၎င်းသည် အေးဂျင့်များကို အချိန်နှင့်တပြေးညီ စီမံခန့်ခွဲရန် မသင့်လျော်သောကြောင့်ဖြစ်သည်။ ဒါပေမယ့် ဒီဧရိယာကနေ တစ်ခုခု ချေးလို့ မရဘူးလို့ မဆိုလိုပါဘူး။ ကျွန်ုပ်တို့ထံမှ တစ်ခုခုသင်ယူနိုင်သည့် သေနတ်သမားတွင် ပြိုင်ဘက်ကို ကျွန်ုပ်တို့ အလိုရှိသည်။ ဥပမာအားဖြင့်၊ မြေပုံပေါ်ရှိ အကောင်းဆုံးနေရာများအကြောင်း ရှာဖွေပါ။ သို့မဟုတ် ကစားသမား၏ မကြာခဏအသုံးပြုသည့် ပေါင်းစပ်လှုပ်ရှားမှုများကို ပိတ်ဆို့ကာ အခြားသူများကို အသုံးပြုရန် လှုံ့ဆော်ပေးမည့် တိုက်ခိုက်ရေးဂိမ်းတစ်ခုရှိ ပြိုင်ဘက်တစ်ဦး။ ဒါကြောင့် ဒီလိုအခြေအနေမျိုးမှာ machine learning က တော်တော်အသုံးဝင်ပါတယ်။

စာရင်းအင်းများနှင့် ဖြစ်နိုင်ခြေများ

ရှုပ်ထွေးသောဥပမာများကို မလေ့လာမီ၊ ရိုးရှင်းသောအတိုင်းအတာအနည်းငယ်ကိုယူပြီး ဆုံးဖြတ်ချက်များချရန်အတွက် ၎င်းတို့ကိုအသုံးပြုခြင်းဖြင့် ကျွန်ုပ်တို့မည်မျှအထိသွားနိုင်သည်ကိုကြည့်ကြပါစို့။ ဥပမာအားဖြင့်၊ အချိန်နှင့်တစ်ပြေးညီ ဗျူဟာ- ကစားသမားတစ်ဦးသည် ဂိမ်း၏ပထမမိနစ်အနည်းငယ်အတွင်း တိုက်ခိုက်မှုကို စတင်နိုင်သည်နှင့် ယင်းကို ရင်ဆိုင်ရန် မည်သည့်ကာကွယ်ရေးကို ပြင်ဆင်နိုင်သည်ဆိုသည်ကို ကျွန်ုပ်တို့ မည်သို့ဆုံးဖြတ်မည်နည်း။ အနာဂတ်မှာ ဘယ်လိုတုံ့ပြန်မှုတွေ ဖြစ်လာနိုင်တယ်ဆိုတာ နားလည်ဖို့ ကစားသမားတစ်ယောက်ရဲ့ အတိတ်အတွေ့အကြုံတွေကို လေ့လာနိုင်ပါတယ်။ အစပိုင်းတွင်၊ ကျွန်ုပ်တို့တွင် ထိုကဲ့သို့သော ဒေတာအကြမ်းမရှိသော်လည်း ၎င်းကို စုဆောင်းနိုင်သည် - AI သည် လူသားတစ်ဦးကို တိုက်ခိုက်သည့်အချိန်တိုင်း၊ ၎င်းသည် ပထမတိုက်ခိုက်မှု၏အချိန်ကို မှတ်တမ်းတင်နိုင်သည်။ ဆက်ရှင်အနည်းငယ်ပြီးနောက်၊ ကစားသမားသည် အနာဂတ်တွင် တိုက်ခိုက်ရန် ပျမ်းမျှအချိန်ကို ကျွန်ုပ်တို့ ရရှိပါမည်။

ပျှမ်းမျှတန်ဖိုးများမှာလည်း ပြဿနာရှိပါသည်- ကစားသမားတစ်ဦးသည် အကြိမ် 20 လျင်မြန်ပြီး အကြိမ် 20 ဖြည်းညင်းစွာကစားပါက လိုအပ်သောတန်ဖိုးများသည် အလယ်တစ်နေရာတွင် ရှိနေမည်ဖြစ်ပြီး၊ ၎င်းသည် ကျွန်ုပ်တို့အတွက် အသုံးဝင်မည်မဟုတ်ပါ။ ဖြေရှင်းချက်တစ်ခုမှာ ထည့်သွင်းဒေတာကို ကန့်သတ်ရန်ဖြစ်သည် - နောက်ဆုံးအပိုင်း 20 ကို ထည့်သွင်းစဉ်းစားနိုင်ပါသည်။

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

နောက်ထပ်စိတ်ဝင်စားစရာကောင်းသောနည်းလမ်းမှာ AI သည် လိုချင်သည့်ပုံစံဖြင့် တုံ့ပြန်မှုဖြစ်စေရန်အတွက် input data အမြောက်အမြားကိုလေ့လာပြီး အခြေအနေကို အမျိုးအစားခွဲခြားရန် Naive Bayes Classifier ကိုအသုံးပြုခြင်းဖြစ်သည်။ Bayesian အမျိုးအစားခွဲခြားမှုများကို အီးမေးလ်စပမ်းစစ်ထုတ်မှုများတွင် ၎င်းတို့၏အသုံးပြုမှုအတွက် အကောင်းဆုံးလူသိများသည်။ ထိုနေရာတွင် ၎င်းတို့သည် စကားလုံးများကို ဆန်းစစ်ပြီး၊ ထိုစကားလုံးများ (စပမ်းမဟုတ်) တွင် ပေါ်လာသည့်နေရာနှင့် နှိုင်းယှဉ်ကာ ဝင်လာသော အီးမေးလ်များအကြောင်း ကောက်ချက်ဆွဲကြသည်။ သွင်းအားစုနည်းနည်းနဲ့တောင် အလားတူလုပ်နိုင်ပါတယ်။ AI မှ မြင်တွေ့ရသည့် အသုံးဝင်သော အချက်အလက်အားလုံးကို အခြေခံ၍ (ဥပမာ ရန်သူယူနစ်များ ဖန်တီးထားသည်၊ သို့မဟုတ် ၎င်းတို့ အသုံးပြုသည့် စာလုံးပေါင်းများ၊ သို့မဟုတ် ၎င်းတို့ သုတေသနပြုထားသည့် နည်းပညာများ) နှင့် နောက်ဆုံးရလဒ် (စစ်ပွဲ သို့မဟုတ် ငြိမ်းချမ်းရေး၊ အလျင်စလို သို့မဟုတ် ကာကွယ်ခြင်း စသည်)၊ - ကျွန်ုပ်တို့အလိုရှိသော AI အပြုအမူကိုရွေးချယ်ပါမည်။

ဤလေ့ကျင့်ရေးနည်းလမ်းအားလုံးသည် လုံလောက်သော်လည်း စမ်းသပ်မှုဒေတာအပေါ် အခြေခံ၍ ၎င်းတို့ကို အသုံးပြုရန် အကြံပြုလိုပါသည်။ AI သည် သင့်ကစားသူများအသုံးပြုသည့် မတူညီသောဗျူဟာများကို လိုက်လျောညီထွေဖြစ်အောင် လေ့လာနိုင်မည်ဖြစ်သည်။ ထွက်ရှိပြီးနောက် ကစားသမားနှင့် လိုက်လျောညီထွေဖြစ်စေသော AI သည် ကြိုတင်ခန့်မှန်းနိုင်လောက်အောင် သို့မဟုတ် အနိုင်ယူရန် ခက်ခဲလွန်းသည်။

တန်ဖိုးအလိုက် လိုက်လျောညီထွေဖြစ်အောင်

Учитывая наполнение нашего игрового мира и правил, мы можем изменить набор значений, которые влияют на принятие решений, а не просто использовать входные данные. Делаем так:

  • AI သည် ဂိမ်းအတွင်း ကမ္ဘာ့အခြေအနေနှင့် အဓိကဖြစ်ရပ်များဆိုင်ရာ အချက်အလက်များကို စုဆောင်းခွင့်ပြုပါ (အထက်ပါအတိုင်း)။
  • ဤဒေတာအပေါ်အခြေခံ၍ အရေးကြီးသောတန်ဖိုးအချို့ကို ပြောင်းလဲကြပါစို့။
  • ကျွန်ုပ်တို့သည် ဤတန်ဖိုးများကို လုပ်ဆောင်ခြင်း သို့မဟုတ် အကဲဖြတ်ခြင်းအပေါ် အခြေခံ၍ ကျွန်ုပ်တို့၏ဆုံးဖြတ်ချက်များကို အကောင်အထည်ဖော်ပါသည်။

ဥပမာအားဖြင့်၊ အေးဂျင့်တစ်ခုတွင် ပထမလူသေနတ်သမားမြေပုံပေါ်တွင် ရွေးချယ်ရန် အခန်းများစွာရှိသည်။ အခန်းတစ်ခုစီသည် ၎င်း၏ကိုယ်ပိုင်တန်ဖိုးရှိပြီး ၎င်းသည် လည်ပတ်ရန် မည်မျှနှစ်သက်ဖွယ်ရှိသည်ကို ဆုံးဖြတ်ပေးသည်။ AI သည် တန်ဖိုးပေါ်မူတည်၍ မည်သည့်အခန်းသို့သွားရမည်ကို ကျပန်းရွေးချယ်သည်။ ထို့နောက် အေးဂျင့်သည် မည်သည့်အခန်းတွင် သူအသတ်ခံခဲ့ရသည်ကို မှတ်မိပြီး ၎င်း၏တန်ဖိုးကို လျှော့ချသည် (ထိုနေရာသို့ သူပြန်လာမည့် ဖြစ်နိုင်ခြေရှိသည်)။ အလားတူပင် ပြောင်းပြန်အခြေအနေအတွက် - အေးဂျင့်သည် ပြိုင်ဘက်များစွာကို ဖျက်ဆီးပါက အခန်းတန်ဖိုး တိုးလာသည်။

Markov မော်ဒယ်

ကျွန်ုပ်တို့သည် စုဆောင်းထားသောဒေတာကို ခန့်မှန်းချက်များပြုလုပ်ရန် အသုံးပြုပါက မည်သို့ဖြစ်မည်နည်း။ အချိန်အတိုင်းအတာတစ်ခုအထိ ကစားသမားတစ်ယောက်နဲ့တွေ့တဲ့ အခန်းတိုင်းကို မှတ်သားထားမယ်ဆိုရင် ကစားသမားက ဘယ်အခန်းကို သွားမလဲဆိုတာ ခန့်မှန်းပေးပါလိမ့်မယ်။ အခန်းများ (တန်ဖိုးများ) တစ်လျှောက် ကစားသမားများ၏ လှုပ်ရှားမှုများကို ခြေရာခံပြီး မှတ်တမ်းတင်ခြင်းဖြင့် ၎င်းတို့ကို ကျွန်ုပ်တို့ ခန့်မှန်းနိုင်ပါသည်။

အနီ၊ အစိမ်း နှင့် အပြာ ဟူ၍ အခန်းသုံးခန်း ယူကြပါစို့။ နောက်ပြီး ဂိမ်းစက်ရှင်ကို ကြည့်ရင်းနဲ့ မှတ်တမ်းတင်ထားတဲ့ မှတ်သားစရာတွေ ၊

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

အခန်းတစ်ခုစီရှိ ကြည့်ရှုမှုအရေအတွက်သည် တူညီလုနီးပါးဖြစ်သည် - ချုံခိုတိုက်ခိုက်ရန် နေရာကောင်းကို မည်သည့်နေရာတွင် ပြုလုပ်ရမည်ကို ကျွန်ုပ်တို့ မသိကြသေးပါ။ မြေပုံတစ်လျှောက် အညီအမျှပေါ်လာသည့် ကစားသမားများ ပြန်လည်မွေးဖွားခြင်းဖြင့် စာရင်းဇယားများ စုဆောင်းရာတွင်လည်း ရှုပ်ထွေးပါသည်။ ဒါပေမယ့် မြေပုံပေါ်ပေါ်လာပြီးနောက် သူတို့ဝင်ရမယ့်အခန်းရဲ့ အချက်အလက်တွေက အသုံးဝင်ပြီးသားပါ။

အစိမ်းရောင်အခန်းသည် ကစားသမားများနှင့် လိုက်ဖက်သည်ဟု ရှုမြင်နိုင်သည် - လူအများစုသည် အနီရောင်အခန်းမှ ၎င်းဆီသို့ ပြောင်းရွှေ့ကြပြီး ၎င်းတို့ထဲမှ 50% သည် ထိုနေရာတွင် ဆက်လက်ရှိနေပါသည်။ ဆန့်ကျင်ဘက်အားဖြင့် အပြာရောင်အခန်းသည် ရေပန်းစားသည်မဟုတ်ပေ၊ ၎င်းကို မည်သူမျှ မသွားဘဲ၊ ၎င်းတို့သည် အကြာကြီးမနေနိုင်ပါ။

ဒါပေမယ့် ဒေတာက ပိုအရေးကြီးတဲ့အရာတစ်ခုကို ပြောပြတယ်- ကစားသမားတစ်ယောက်ဟာ အပြာရောင်အခန်းမှာရှိနေတဲ့အခါ၊ သူ့ကိုမြင်ရတဲ့နောက်ခန်းက အနီရောင်မဟုတ်ဘဲ အစိမ်းဖြစ်နေပါလိမ့်မယ်။ အစိမ်းရောင်အခန်းသည် အနီရောင်အခန်းထက် လူကြိုက်များသော်လည်း၊ ကစားသမားသည် အပြာရောင်အခန်းတွင် ရှိနေပါက အခြေအနေ ပြောင်းလဲပါသည်။ နောက်အခြေအနေ (ဆိုလိုသည်မှာ ကစားသမားသွားမည့်အခန်း) သည် ယခင်အခြေအနေ (ဆိုလိုသည်မှာ ကစားသူလက်ရှိရှိအခန်း) ပေါ်တွင် မူတည်သည်။ ကျွန်ုပ်တို့သည် မှီခိုမှုများအား စူးစမ်းလေ့လာသောကြောင့်၊ ကျွန်ုပ်တို့သည် စူးစမ်းမှုများကို အမှီအခိုကင်းစွာ ရေတွက်ခြင်းထက် ပိုမိုတိကျသော ခန့်မှန်းချက်များကို ပြုလုပ်နိုင်မည်ဖြစ်ပါသည်။

အတိတ်အခြေအနေတစ်ခုမှ အချက်အလက်များအပေါ်အခြေခံ၍ အနာဂတ်အခြေအနေကို ခန့်မှန်းခြင်းကို Markov မော်ဒယ်ဟုခေါ်ပြီး ထိုကဲ့သို့သော ဥပမာများ (အခန်းများပါ) ကို Markov chains ဟုခေါ်သည်။ ပုံစံများသည် အဆက်ဆက်ပြည်နယ်များအကြား အပြောင်းအလဲများ၏ ဖြစ်နိုင်ခြေကို ကိုယ်စားပြုသောကြောင့် ၎င်းတို့အား အသွင်ကူးပြောင်းမှုတစ်ခုစီတွင် ဖြစ်နိုင်ခြေရှိသော FSMs အဖြစ် အမြင်အာရုံဖြင့် ပြသထားသည်။ ယခင်က၊ အေးဂျင့်တစ်ဦးရှိနေသည့် အပြုအမူဆိုင်ရာအခြေအနေကို ကိုယ်စားပြုရန် FSM ကိုအသုံးပြုခဲ့သော်လည်း ဤအယူအဆသည် အေးဂျင့်နှင့်ဆက်စပ်သည်ဖြစ်စေ မသက်ဆိုင်သည်ဖြစ်စေ မည်သည့်ပြည်နယ်နှင့်မဆို သက်ဆိုင်ပါသည်။ ဤကိစ္စတွင်၊ ပြည်နယ်များသည် အေးဂျင့်ယူထားသောအခန်းကို ကိုယ်စားပြုသည်-

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

Это простой вариант представления относительной вероятности изменений состояний, дающий ИИ некую возможность предсказывать следующее состояние. Можно предугадывать несколько шагов вперед.

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

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်

နှစ်ချက်လေ့လာပြီးရင် အစိမ်းရောင်အခန်းမှာ ကစားသမားကိုတွေ့နိုင်ခြေက 51% - 21% နဲ့ တူညီမှာဖြစ်ပြီး အနီရောင်အခန်းကနေ 5% နဲ့ player က သူတို့ကြားက အပြာခန်းကို လည်ပတ်မယ့် 25% ၊ XNUMX% ကစားသမားသည်အစိမ်းရောင်အခန်းမှထွက်ခွာမည်မဟုတ်ပါ။

ဇယားသည် ရိုးရိုးရှင်းရှင်း မြင်သာသည့်ကိရိယာတစ်ခုဖြစ်သည် - လုပ်ထုံးလုပ်နည်းသည် အဆင့်တစ်ခုစီတွင် ဖြစ်နိုင်ခြေများကို မြှောက်ရန်သာ လိုအပ်သည်။ ဆိုလိုသည်မှာ သတိပေးချက်တစ်ခုဖြင့် သင်သည် အနာဂတ်ကို အဝေးသို့ လှမ်းကြည့်နိုင်သည်ဟု ဆိုလိုသည်- အခန်းထဲသို့ ဝင်ရောက်နိုင်ခြေသည် လက်ရှိအခန်းပေါ်တွင် လုံးဝမူတည်သည်ဟု ကျွန်ုပ်တို့ ယူဆပါသည်။ ၎င်းကို Markov Property ဟုခေါ်သည် - အနာဂတ်အခြေအနေသည် ပစ္စုပ္ပန်ပေါ်တွင်သာ မူတည်သည်။ ဒါပေမယ့် ဒါဟာ ရာနှုန်းပြည့် တိကျမှုတော့ မဟုတ်ပါဘူး။ ကစားသမားများသည် အခြားအချက်များပေါ် မူတည်၍ ဆုံးဖြတ်ချက်များ ပြောင်းလဲနိုင်သည်- ကျန်းမာရေးအဆင့် သို့မဟုတ် ခဲယမ်းပမာဏ။ ကျွန်ုပ်တို့သည် ဤတန်ဖိုးများကို မှတ်တမ်းတင်မထားသောကြောင့်၊ ကျွန်ုပ်တို့၏ ခန့်မှန်းချက်များသည် ပိုမိုတိကျပါလိမ့်မည်။

N-ဂရမ်

တိုက်ခိုက်ရေးဂိမ်းတစ်ခု၏ ဥပမာနှင့် ကစားသမား၏ ပေါင်းစပ်လှုပ်ရှားမှုများကို ခန့်မှန်းခြင်းနှင့်ပတ်သက်၍ကော။ အတူတူ! သို့သော် ပြည်နယ်တစ်ခု သို့မဟုတ် ပွဲတစ်ခုအစား၊ ပေါင်းစပ်သပိတ်မှောက်မှုတစ်ခုပြုလုပ်သည့် အတွဲအားလုံးကို စစ်ဆေးပါမည်။

၎င်းကိုလုပ်ဆောင်ရန်နည်းလမ်းတစ်ခုမှာ ထည့်သွင်းမှုတစ်ခုစီ (ဥပမာ Kick၊ Punch သို့မဟုတ် Block ကဲ့သို့) ကို ကြားခံတစ်ခုတွင် သိမ်းဆည်းပြီး ကြားခံတစ်ခုလုံးကို ဖြစ်ရပ်တစ်ခုအဖြစ် ရေးပါ။ ထို့ကြောင့် ကစားသမားသည် SuperDeathFist တိုက်ခိုက်မှုကိုအသုံးပြုရန် Kick, Kick, Punch ကို ထပ်ခါတလဲလဲ နှိပ်သည်၊ AI စနစ်သည် သွင်းအားစုများအားလုံးကို ကြားခံတစ်ခုတွင် သိမ်းဆည်းထားပြီး အဆင့်တစ်ခုစီတွင် အသုံးပြုခဲ့သော နောက်ဆုံးသုံးချက်ကို မှတ်မိသည်။

ဂိမ်း AI ဖန်တီးနည်း- စတင်သူများအတွက် လမ်းညွှန်
(ကစားသမားသည် SuperDeathFist တိုက်ခိုက်မှုကို စတင်သောအခါ ရဲရင့်သောမျဉ်းများဖြစ်သည်။)

ကစားသမားက Kick ကို ရွေးလိုက်တဲ့အခါ၊ နောက်တစ်ခုက Kick နဲ့ နောက်တစ်ခုက အမြဲတမ်း Punch ဖြစ်တယ်ဆိုတာကို AI က မြင်ပါလိမ့်မယ်။ ၎င်းသည် အေးဂျင့်အား SuperDeathFist ၏ ပေါင်းစပ်လှုပ်ရှားမှုကို ခန့်မှန်းနိုင်ပြီး ဖြစ်နိုင်ပါက ၎င်းကို ပိတ်ဆို့နိုင်စေမည်ဖြစ်သည်။

ဤဖြစ်ရပ်များ၏ ဆက်တိုက်များကို N-grams ဟုခေါ်ပြီး N သည် သိမ်းဆည်းထားသော ဒြပ်စင်အရေအတွက်ဖြစ်သည်။ ယခင်ဥပမာတွင်၊ ၎င်းသည် 3-gram (trigram) ဖြစ်သည်၊ ဆိုလိုသည်မှာ- ပထမ entry နှစ်ခုကို တတိယမြောက်ကို ခန့်မှန်းရန် အသုံးပြုပါသည်။ ထို့ကြောင့်၊ 5-gram တစ်ခုတွင်၊ ပထမအချက်လေးခုသည် ပဉ္စမမြောက်ကို ခန့်မှန်းသည်။

Разработчику нужно тщательно выбирать размер N-грамм. Меньшее число N требует меньше памяти, но и хранит меньшую историю. Например, 2-грамма (биграмма) будет записывать Kick, Kick или Kick, Punch, но не сможет хранить Kick, Kick, Punch, поэтому ИИ не отреагирует на комбо SuperDeathFist.

အခြားတစ်ဖက်တွင်၊ ပိုကြီးသောနံပါတ်များသည် Memory ပိုလိုအပ်ပြီး AI သည် ပို၍ဖြစ်နိုင်ချေရှိသော ရွေးချယ်စရာများစွာရှိသောကြောင့် လေ့ကျင့်ရန် ပို၍ခက်ခဲမည်ဖြစ်သည်။ အကယ်၍ သင့်တွင် Kick၊ Punch သို့မဟုတ် Block သုံးခု ဖြစ်နိုင်ပြီး ကျွန်ုပ်တို့သည် 10-gram ကိုအသုံးပြုပါက၊ ၎င်းသည် မတူညီသောရွေးချယ်မှုများ 60 ခန့်ရှိမည်ဖြစ်သည်။

bigram မော်ဒယ်သည် ရိုးရှင်းသော Markov ကွင်းဆက်တစ်ခုဖြစ်သည် - အတိတ်အခြေအနေ/လက်ရှိပြည်နယ်အတွဲတစ်ခုစီသည် bigram ဖြစ်ပြီး ပထမအပေါ်မူတည်၍ ဒုတိယအခြေအနေကို သင်ခန့်မှန်းနိုင်သည်။ 3-gram နှင့် ပိုကြီးသော N-grams များကို Markov chains အဖြစ်လည်း ယူဆနိုင်သည်၊ ဒြပ်စင်များအားလုံး (N-gram တွင် နောက်ဆုံးတစ်ခုမှလွဲ၍) သည် ပထမအခြေအနေနှင့် ဒုတိယဒြပ်စင်အဖြစ် ပေါင်းစပ်ဖွဲ့စည်းထားခြင်းဖြစ်သည်။ တိုက်ပွဲဂိမ်းနမူနာတွင် Kick and Kick အခြေအနေမှ Kick and Punch အခြေအနေသို့ ကူးပြောင်းနိုင်ခြေကို ပြသသည်။ ထည့်သွင်းမှုမှတ်တမ်းအများအပြားကို ယူနစ်တစ်ခုတည်းအဖြစ် ကုသခြင်းဖြင့်၊ ကျွန်ုပ်တို့သည် input sequence ကို ပြည်နယ်တစ်ခုလုံး၏ တစ်စိတ်တစ်ပိုင်းအဖြစ် ပြောင်းလဲပေးပါသည်။ ၎င်းသည် ကျွန်ုပ်တို့အား Markov ပိုင်ဆိုင်မှုကို ပေးစွမ်းနိုင်ပြီး၊ ၎င်းသည် ကျွန်ုပ်တို့အား နောက်ထပ်ထည့်သွင်းမှုကို ခန့်မှန်းရန်နှင့် နောက်တွင် ပေါင်းစပ်ရွှေ့မည်ကို ခန့်မှန်းရန် Markov ကွင်းဆက်များကို အသုံးပြုခွင့်ပေးသည်။

ကောက်ချက်

ကျွန်ုပ်တို့သည် ဉာဏ်ရည်တုတီထွင်မှုတွင် အသုံးအများဆုံးကိရိယာများနှင့် ချဉ်းကပ်နည်းများအကြောင်း ဆွေးနွေးခဲ့ကြသည်။ ၎င်းတို့ကို အသုံးပြုရန် လိုအပ်သည့် အခြေအနေများနှင့် ၎င်းတို့ကို အထူး အသုံးဝင်သည့် နေရာများကိုလည်း ကြည့်ရှုခဲ့သည်။

ဒါက game AI ရဲ့ အခြေခံတွေကို နားလည်ဖို့ လုံလောက်ပါတယ်။ သို့သော်၊ ဤအရာအားလုံးသည် နည်းလမ်းများမဟုတ်ပါ။ လူကြိုက်နည်းသော်လည်း ထိရောက်မှုနည်းသည်-

  • တောင်တက်ခြင်း၊ gradient ဆင်းသက်ခြင်း နှင့် မျိုးရိုးဗီဇဆိုင်ရာ အယ်လဂိုရီသမ်များ အပါအဝင် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်း algorithms
  • ဆန့်ကျင်ဘက်ရှာဖွေမှု/အချိန်ဇယားဆွဲခြင်းဆိုင်ရာ အယ်လဂိုရီသမ်များ (minimax နှင့် alpha-beta ဖြတ်တောက်ခြင်း)
  • အမျိုးအစားခွဲခြားနည်းများ (perceptrons၊ neural networks နှင့် support vector machines)
  • အေးဂျင့်များ၏ ခံယူချက်နှင့် မှတ်ဉာဏ်ကို လုပ်ဆောင်ရန်အတွက် စနစ်များ
  • AI အတွက် ဗိသုကာဆိုင်ရာချဉ်းကပ်မှုများ (hybrid စနစ်များ၊ အစုခွဲဗိသုကာလက်ရာများနှင့် AI စနစ်များကို ထပ်ဆင့်ခြင်း၏ အခြားနည်းလမ်းများ)
  • ကာတွန်းကိရိယာများ (စီစဉ်ခြင်းနှင့် လှုပ်ရှားမှုညှိနှိုင်းခြင်း)
  • စွမ်းဆောင်ရည်ဆိုင်ရာအချက်များ (အသေးစိတ်အဆင့်၊ အချိန်မရွေး၊ နှင့် အချိန်ဆွဲခြင်းဆိုင်ရာ အယ်လဂိုရီသမ်များ)

အကြောင်းအရာဆိုင်ရာ အွန်လိုင်းအရင်းအမြစ်များ-

1. GameDev.net မွာပါ။ AI ဆိုင်ရာ ဆောင်းပါးများနှင့် သင်ခန်းစာများပါရှိသော အပိုင်းနှင့် ဖိုရမ်.
2. AiGameDev.com ဂိမ်း AI ဖွံ့ဖြိုးတိုးတက်မှုနှင့် ပတ်သက်သည့် ကျယ်ပြန့်သော အကြောင်းအရာများစွာအတွက် တင်ဆက်မှုများနှင့် ဆောင်းပါးများ ပါဝင်သည်။
3. GDC Vault GDC AI Summit မှ အကြောင်းအရာများစွာ ပါဝင်ပြီး အများအပြားကို အခမဲ့ ရရှိနိုင်ပါသည်။
4. အသုံးဝင်သောပစ္စည်းများကို ဝဘ်ဆိုဒ်ပေါ်တွင်လည်း တွေ့နိုင်ပါသည်။ AI ဂိမ်းပရိုဂရမ်မာများအဖွဲ့.
5. Tommy Thompson၊ AI သုတေသီနှင့် ဂိမ်းဆော့ဖ်ဝဲရေးသားသူ Tommy Thompson သည် YouTube တွင် ဗီဒီယိုများ ပြုလုပ်သည်။ AI နှင့် ဂိမ်းများ စီးပွားဖြစ်ဂိမ်းများတွင် AI ၏ ရှင်းလင်းချက်နှင့် လေ့လာခြင်း။

ဘာသာရပ်ဆိုင်ရာ စာအုပ်များ-

1. Game AI Pro စာအုပ်စီးရီးသည် သီးခြားအင်္ဂါရပ်များကို အကောင်အထည်ဖော်နည်း သို့မဟုတ် သီးခြားပြဿနာများကို ဖြေရှင်းနည်းကို ရှင်းပြသည့် ဆောင်းပါးတိုများစုစည်းမှုဖြစ်သည်။

ဂိမ်း AI Pro- ဂိမ်း AI ကျွမ်းကျင်ပညာရှင်များ၏ ဉာဏ်ပညာကို စုဆောင်းထားသည်။
ဂိမ်း AI Pro 2- ဂိမ်း AI ပရော်ဖက်ရှင်နယ်များ၏ ဉာဏ်ပညာကို စုဆောင်းထားသည်။
ဂိမ်း AI Pro 3- ဂိမ်း AI ပရော်ဖက်ရှင်နယ်များ၏ ဉာဏ်ပညာကို စုဆောင်းထားသည်။

2. AI Game Programming Wisdom စီးရီးသည် Game AI Pro စီးရီး၏ ရှေ့မျိုးဆက်ဖြစ်သည်။ ၎င်းတွင် ရှေးကျသော နည်းလမ်းများ ပါဝင်သော်လည်း အားလုံးနီးပါးသည် ယနေ့ခေတ်တွင်ပင် သက်ဆိုင်ပါသည်။

AI Game Programming Wisdom ၁
AI Game Programming Wisdom ၁
AI Game Programming Wisdom ၁
AI Game Programming Wisdom ၁

3. Artificial Intelligence- ခေတ်မီချဉ်းကပ်နည်း ဥာဏ်ရည်တု၏ ယေဘုယျနယ်ပယ်ကို နားလည်လိုသူတိုင်းအတွက် အခြေခံစာများထဲမှ တစ်ခုဖြစ်သည်။ ဒီစာအုပ်ဟာ AI ရဲ့ အခြေခံတွေကို သင်ကြားပေးတဲ့ ဂိမ်းတည်ဆောက်မှုဆိုင်ရာ စာအုပ်မဟုတ်ပါဘူး။

source: www.habr.com

မှတ်ချက် Add