گزیده ای از سیستم هوش مصنوعی هدایت کننده به سوی هدف در موتور طراحی 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

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

بالا