گزیده ای از سیستم هوش مصنوعی هدایت کننده به سوی هدف در موتور طراحی Main Core

Mahdi_Rashed

Well-Known Member
یکی از روشهای ایجاد هوش مصنوعی سیستم هدایت کننده به هدف هست . یا goal driven. در این سیستم هوش مصنوعی کارکتر که برنامه ی هوش رو دریافت کرده هدفی رو دنبال میکنه که برای رسیدن به اون راهها و احتمالات زیادی وجود داره . اگر شبیه این سیستم در هوش مصنوعی waypoint یا برنامه نویسی های معمولی پیاده بشه کارکتر اولین و نزدیک ترین راه رو برای رسیدن به هدف انتخاب میکنه . بنابراین به احتمالاتی شبیه خطر یا نفع و ضرر انتخاب اون رو در نظر نمیگیره . اما پیاده سازی این هوش مصنوعی در سیستم هدایت به سوی هدف یک هوش مصنوعی بسیار کامل رو در اختیار ما قرار میده . ​
خوب بریم سر اصل مطلب که یکی از روشهای هوش مصنوعی در موتورطراحی بازی من و گروهم هست . یعنی Main Core . در موتور طراحی ما شاید این سیستم هوش مصنوعی کاملتر و دقیقتر از بقیه موارد باشه . سیستم و پایه کلی goal driven تقریباً سنگین هست و کمتر در بازی ها استفاده میشه . بازیهایی شبیه dungeon lords همچین سیستمی داره . ولی نمونه ای که به صورت مشترک توسط گروه ما و گروه مهندسی آقای حسینپور نوشته شده علاوه بر این که حجم داده های ورودی رو بیشتر کرده مقدار پردازش رو کمتر هم کردیم . ​
بهتره اول از خود سیستم در حالت معمولی بگم :​
یک مثال خیلی ساده انتخاب یک کالا برای خرید هست . البته شاید مثالم یک کم بیخود باشه ولی مثال در یکی از جزوات معتبر هوش مصنوعی وجود داشت .​
ما کارکتر خودمون رو یک آقایی درنظر میگیریم که شبیه کارکتر بازی gta دزد و آدم کش هست . در سیستم خود هوش مصنوعی یا سیستم های شبیه mass AI شبیه سازی میشه که کارکتر موقعی که گرسنه میشه میره به یک فروشگاه تا کالای خراکی رو بخره . مقدار پول اون مثلاً 10 هه ولی قیمت کالا 12 . حالا بین گزینه های سیستم پایه برنامه ریزی میشه که یا بخره . یا بدزده یا نخره . برای خریدن گزینه نمیتونه باشه و درصد انتخاب صفره . بنابراین بین دوگزینه مثلاً دزدیدن رو انتخاب کنه در این حالت باز چند گزینه پیش روش میاد . یکی اینکه یواشکی بذاره جیبش که ممکنه فروشنده به یک مقدار احتمال متوجه بشه و پلیس رو خبر کنه یا بیاد دعوا . و گزینه دوم این باشه که اسلحه رو بذار رو کله فروشنده و اقدام کنه به دزدی . باز میشه در حالی که چند گزینه اضافه کرد . مثلاً فقط تهدید کنه که پلیس رو خبر نکنه . یکی این که بزنه فروشنده رو بیهوش کنه و یکی هم مخ فروشنده رو بریزه رو زمین :D . این دیگه ته سیستم پیشفرض هدایت کننده چون اگر از 3 تا 4 شاخه ازاد بیشتر بشه مقدار پردازش با توجه به متد برنامه نویسی پیشفرض زیاد میکنه . ​
حالا ما چه کار کردیم . ما برای تست سیستم خودمون رو در یک مدل 2بعدی ساده پیاده کردیم . که در اون یک شهر کوچک با خونه و جاده و مغازه و همچنین اداره پلیس و بانک رو طراحی کردیم . همچنین برای کارکتر هم مقداری پول و اسلحه و کارت بانکی برای خرید با مقدار پول مشخص تعریف کردیم . یک سری متغیرهای گرسنگی و خستگی هم تعریف شد . ​
attachment.php
​
عکس بالا بازی یا حدوداً بازیی هست که برای تست این سیستم نوشتیم . از همه مهمتر نقشه هست که با جاده های خاکستری مشخص شده . محیطهای سبز مناطق مسکونی هستن و عبور و مرور از اونها بسیار اسونه . مناطق زرد که تجاری هستن و عبور از اونها مقداری سخته .مناطق قرمز که مکان های درحال ساخت و سازه و عبور از اون بسیار سخته و مناطق ابی که زمینهای و ادارات دولتی محسوب میشن . اینا بخشی از اطلاعاتی هست که سیستم هوش مصنوعی ما اونا رو به سادگی محاسبه میکنه . حالا نقاط . نقطه سفید بزرگ مخفیگاه کارکتر ماست و نقطه سفید کوچک خود کارکتر . نقاط ابی رنگ اداره پلیس و نقطه سبز رنگ بانکه . نقطه بنفش فروشگاه دارای پایانه خرید و دو نقطه صورتی فروشگاههای بدون پایانه خرید .​
بعضی از ویژگی های پیش فرض هم یکی کیفیت محاسبه گر . یعنی مقدار محاسبات هوش مصنوعی که در ثانیه انجام داده میشه . این مقدار در سیستم پیشفرض بازه عددی 1 تا 150 هست ولی در سیستم ما 1 تا 1573 . حال کنین :D​
سرعت محاسبه هم که به طور کلی سرعت بازیه و به درصد هست​
سیستم پایلون یک نوع هوش مصنوعی بسیار پیشرفته وابسته به خطوط گراف داره که در موتورهای معروف همچون unreal Engine مورد استفاده قرار گرفته . این سیستم برای کارکتر طبعیت کننده از اون تمام نقاط ممکن و غیر ممکن رو از نظر عبور و مرور در دو حالت رفت و برگشت محاسبه میکنه . اگر این سیستم نباشه کارکتر bot شناخته میشه و از طریق آنالیز محیطی یا تقلید رفتاری مسیر خودش رو ایجاد میکنه . ​
مس سیستم یک هوش مصنوعی دیگه هست که از مقادیر وابسته به هم و وابسته به کارکتر طبعیت کننده یک هدف یا تصمیم رو برای کارکتر میگیره . ولی اگر سیستم GD یا هدایت کننده هدف نباشه کارکتر بدون درنظر گرفتن ظرایب مختلف و با استفاده از نزدیک ترین راه و انتخاب به هدف خودش میرسه . بنابراین میتونه خیلی بیخود باشه اگر به تنهایی استفاده بشه .​
attachment.php
​
برای تحلیل سیستم میشه از عکس بالا استفاده کرد . در عکس محلهایی که با دایره مشخص شده محلهای تصمیم گیری سیستم هست . در اول تصمیم میگیره که با توجه به متغیرها چه کار کنه و بعد تصمصم میگره برای هدف چه راهی رو انتخاب کنه . اگر بره به رنگ بنفش میتونه جنس مورد نظر خودش رو بگیره که قیمت اون 200 هست و میتونه با کارت پرداخت کنه . بنابراین سیستم هیچ لزومی رو برای استفاده از پول دستی یا اسلحه نمیبینه . چون سیستم کارکتر رو به نوعی رفتار گریزنده از خطر تشویق میکنه . ولی اگر کارکتر به یک روشگاه بدون پایانه رفت یعنی نقاط صورتی با توجه به میزان متغیرهای شخصی و فاصله معمولاً نزدیکترین رو انتخاب میکنه و به سمتش میره . در مغازه نمیته جنس 150 تایی رو بخره چون 100 تا پول داره و دستگاه کارت هم در فروشگاه نیست . در این حالت سیستم شروع به محاسبه استفاده از سلاح و دزدی یا رفتن به بانک رو میکنه . باز با توجه به مقادیری شبیه تعداد گلوله یا خستگی و همچنین فاصله اداره پلیس از مغازه تصمیمی رو میگره . همچنین در حالت انتخاب دزدی راههایی برای در رفتن از دست پلیس و رسیدن به مخفیگاه رو محاسبه میکنه . اگر انتخاب رفتن به بانک باشه چون یک بانک بیشتر نیست میره همونجا . پول مورد نظرشرو از طریق خودپرداز برمیداره و محاسبه گر دوباره شروع میکنه به محاسبه فاصله از فروشگاه . کارکتر به نزدیک ترین اونها میره و چیزی رو که میخواد میخره و به مخفیگاهش برمیگرده . در این میان انتخاب مسیر هم مهمه . مسیرهایی که من مشخص کردم فقط یکی از مسیرهای وگرنه تعداد مسیرها خیلی زیاده . انتخاب مسیر با استفاده از اطلاعات شبیه سهولت عبور و مرور و دورتر بودن از پلیس هست . پس در این حالت سیستم ممکنه به جای انتخاب نزدیکترین راه راحتترین راه رو انتخاب کنه . هرچند مسافت بیشتری رو طی کنه .​
attachment.php
​
این عکس حالتی رو نشون میده که سیستم در حال محاسبه وضعیت و فاصله پلیس از فروشگاههاست و راههای فرار از دست پلیس و رسیدن به مخفیگاه در حالی که کارکتر راه دزدی رو انتخاب کنه . ​
و حالا فکر کنید اگه سیستم هدایت کننده نباشه مسیر چه شکلیه . از اونجایی که خیلی از اطلاعات و متغیرهای در سیستم gd تعریف میشن نبود اون باعث میشه تا کارکتر فقط به نزدیکترین راه و اولین انتخاب ممکن روی بسیاره . شبیه عکس زید که خط قرمز مسیر رفت و خط ابی مسیر برگشت هست .​
attachment.php
​
در این حالت کارکتر ما بدون توجه به خطر وجود پلیس و درستگیره و اینجور چیزا به صورت تصادفی یکی از مقصدهای حاوی جنس هدف رو انتخاب میکنه و طبق سیستم مس و پایلون بدون هدایت کننده اصلی نزدیک ترین راه و اولین گزینه ممکن رو برای رسیددن به هدف انتخاب میکنه . ​
اینقدر نخندین اگه مثالم خنده داره . چهکار کنم چیز دیگه برای استفاده مفید از سیستم به ذهنم نرسید :D​
خوب حالا راههای ساخت یک سیستم هدایت به سوی هدف در ابعاد محاسبه بیشتر چیه ؟؟؟​
خوب اول از همه شما باید framework مخصوص کاری خودتون رو داشته باشید تا امکان نوشتن این سیستم رو برای بازی یا موتور طراحی بازی خودتون داشته باشید . برای ساخت همچین سیستمی هیچ راه خاصی وجود نداره به جز ایجاد یک کتابخونه احتمالات . یک کتابخانه حاوی اطلاعات مربوط به عادات و کارهای و تصمیمات روزانه ای که هر روز باهاشون سرکار داریم و به جای این که سیستم رو مجبور به محاسبه یک حالت جدید بکنیم با استفاده از منطقهای رایانه شبیه منطق فازی – که خودش نوعی هوش مصنوعیه – سیستم رو وادار به پیدا کردن شرایط شبیه حالت انتفاق افتاده بکنیم . البته برنامه نویسی این بخش در حال حاظر برای گروه ما محرمانه و نمیتونم بیشتر از این بگم . هم چون یک متد جدید در برنامه نویسی همچین سیستمیه و هم چون ما این کار رو بدون framework نرم افزاری خودمون انجام بدیم . سیستمهای برنامه نویسی VC# همچین سیستمی رو با سرعت مطلوب پشتیبانی نمیکرد . بنابراین این سیستم در حال حاظر فقط با زبان برنامه نویسی موتور طراحی بازی main core که وابسته به زبان C# Advanced هست . البته ما نمیگیم فقط با سیستم ما . هر کس میتونه یک همچین سیستمی رو با قالب نرم افزاری خودش یا متدهای خودش پیاده کنه ولی ما با متد استاندارد برنامه نویسی نتونستیم . ​
منابعی رو که برای تحلیل و برنامه نویسی این سیستم استفاده کردین نسبتاً زیاد بود .​
1. کتاب programming game AI by C++ example ​
2. کتاب AI for Game engine ​
3. کتاب Artificial intelligence in games​
4. مثالها و نمونه های موجود در وبسایت رسمی XNA game Studio​
5. مقالات ارائه شده توسط دو کمپانی ساخت موتور طراحی بازی یعنی unreal tech و cry tech در GDC​
6. کتاب Advanced 3D Game Programming – All in one​
7. کتاب AI Core Concept​
8. مجموعه مقالات رایگان برخی از textbook های دانشجوهای مختلف که لینکش رو گم کردم .​
 

پیوست ها

  • screenshot.jpg
    screenshot.jpg
    266.6 کیلوبایت · بازدیدها: 98
  • the_brain.jpg
    the_brain.jpg
    321.2 کیلوبایت · بازدیدها: 88
  • goal_drive.jpg
    goal_drive.jpg
    317.6 کیلوبایت · بازدیدها: 89
  • gdfree.jpg
    gdfree.jpg
    291 کیلوبایت · بازدیدها: 88

جدیدترین ارسال ها

بالا