واضح آرشیو وب فارسی:سایت ریسک: نحوه پردازش داده های در سیستم هوش مصنوعی Goal Driven Mahdi_Rashed 02 ارديبهشت 1390, 16:13در این پست میخوام در مورد نحوه پردازش داده های در سیستم هوش مصنوعی Goal Driven مطالبی رو بیان کنم. بهتره اول از خود سیستم Goal Driven شروع کنم. سیستم هوش مصنوعی Goal Driven چیست ؟ Goal Driven یا هدایت به سوی هدف یکی از سیستم های هوش مصنوعی در طراحی بازیهای رایانه و ویدئویی هست که برای کاراکتر های تبعیت کننده انتخابهایی رو بر طبق داده های و مقادیر مختلف مربوط به کاراکتر یا مربوط به محیط بازی قرار میده. به عنوان مثال برای یک کاراکتر تبعیت کننده در یک بازی نیازمندی به عنوان خرید یک اسلحه تعریف میشه. پس کاراکتر باید نسبت به خرید اون اقدام کنه. موقع خرید اول به مقدار یا متغیر پول توجه میشه. اگه کافیه سلاح مورد نظر خریداری میشه ولی اگر کافی نیست تعدادی انتخاب برای اون تعریف میشه. مثلاً دزدین پول از افراد مختلف، کار کردن، گرفتن پول از یک دوست. کاراکتر تبعیت کننده از Goal Driven با توجه به متغیرهایی شبیه فاصله، زمان، اهمیت خرید اون اسلحه، خطراتی که ممکنه در راه پیش بیاد، در بازیهای پیشرفته تر خستگی و گرسنگی و... یکی از 3 گزینه رو انتخاب میکنه . مثلاً گرفتن پول از دوستش. اینجا سیستم هوش مصنوعی 2 گزینه رو در پیش روی کاراکتر قرار میده. رفتن به خونه ی دوستش یا زنگ زدن از طریق تلفن. اگر کاراکتر رفتن به خونه طرف رو انتخاب کنه Goal Driven به سیستم هوش مصنوعی دیگه ای متصل میشه که برای کاراکتر تبعیت کننده بهترین راه و شاید نزدیکترین راه رو انتخاب میکنه و کاراکتر از مسیر مشخص شده به زیر مجموعه هدف اصلی میره و بعد از گرفتن پول برمیگرده و اسلحه مورد نظرشو میخره. سیستم Goal Driven از چهار نوع ساختار پردازش داده استفاده میکنه تا انتخابهای مختلفی رو در اختیار کاراکتر بذاره و اون رو با توجه به شرایط مختلف وادار به انتخاب یکی از راهها بکنه. این ساختارها در طی زمان کاملتر شدن و علت اینکه من این مقاله رو مینویسم اینه که یکی از جدیدترین روشهایی که اواخر سال 2010 ساخته شد و قابلیت اضافه شدن به Goal Driven رو داره باید جای خودشو به نمونه قبلی خودش بده. اما هنوز خیلی از طراحان از روش سوم استفاده میکنند با توجه به اینکه روش چهارم انتخابها و نحوه انتخاب هر گزینه رو بیشتر میکنه. در پستهای آینده هر کدوم رو به صورت جداگانه تعریف میکنم و ساختار اونها رو به صورت عکس قرار میدم. موفق باشید Mahdi_Rashed 02 ارديبهشت 1390, 18:52سیستم پردازش زنجیره ای - یک شاخه ای : وقتی که سیستم Goal Driven برای اولین بار طراحی شد ( فکر کنم 1997 یا 98 ) پردازش زنجیره ای اولین متد پردازش دستورات برای کاراکتر تبعیت کننده بود. این سیستم پردازشی یک شاخه داره و از دو تابع اجرای دستور و انکار دستور استفاده میکنه. یعنی اگر کاراکتر نتونست اولین حلقه از رنجیره رو اجرا کنه چاره ای به جر انکار دریافت دستور نداره. یعنی مثلاً اگر برای خرید اسلحه که هدف هست پولی نداشت دیگه انتخابی برای رفتن و قرض گرفتن پول نداره. همچنین اگر به شکل بالا دقت کنید همه فلشها یکطرفه هست و کاراکتر راه برگشت به دستور قبلی و برطرف کردن مشکلات احتمالی رو نداره. در شکل بالا هر شکل هندسی یک دستور یا انتخاب حساب میشه و فلشها طریقه دستیافتن به دستور و پیشروی در حلقه های زنجیره. این سیستم در بازیهای زیادی اجرا نشد چون هنوز در مراحل آزمایشی به سر میبرد و توان محاسباتی پایینی داشت. همچنین تک شاخه بودن دستورات این سیستم هم مشکل بزرگی به وجود میاورد چون محدودیتهای زیادی رو برای کاراکتر تبعیت کننده داشت. همچنین امکان خطا در محاسبه و اجرای دستورات بسیار زیاد بود. کد تعریف دستور اولیه : // MC Script a.k.a. Main Core Script define orderline01(); { set object aichar01(); { set action equipment(); { do reset value weapon01;(); { set value owning = 0; set cycle = 1; set recalc = 0; } do reset value weapon02;(); { set value owning = 0; set cycle = 1; set recalc = 0; } } set action requeriment(); { do reset value weapon01(); { set value owning = 1; set cycle = 1; set recalc = 1; } } set object aichar01(); { do reset value currentaiorder = orderact01; } } } // Endکد تعریف انتخاب یک : // MC Script a.k.a. Main Core Script define orderact01(); { set object aichar01(); { do action movement(); { on position A = new a; // "on" can be replace by "for" } // position new a is a shop for buying weaponary while do action movement(); { set actor anim01 = walk01; set speed value = 10; } } } // End کد تعریف انتخاب دو : define orderact02(); { set object aichar01(); { do action buying(); { for value weapon01() && owning() = 0; { if ( value cash >> 4000 ) { // weapon01 price is 4000 do reset value owning = 1; else { do action ignore(); } } while do reset value owning(); { set cutscene buyingcs = buyingcslib 01; set selectionmode = random; } } } } } // Endکد تعریف شرایط هدف : define goal(); { set object aichar01(); { set action equipment(); { get new value weapon01;(); { get new value owning = 1; } } set action requeriment(); { get new value weapon01(); { get new value owning = 0; } } } } // Endکد سوییچ کردن از انتخاب یک به دو در صورت انجام : // MC Script a.k.a. Main Core Script set object aichar01(); { if ( value order orderact01 = 1 ) { // value 1 mean aichar01 done the orderact01 do reset value currentaiorder = orderact02; else { do action ignore(); } } } // Endکد سوییچ کردن دستور دو به پایان شرط هدف در صورت انجام : set object aichar01(); { if ( value order orderact02 = 1 ) { do check value globalai01(); { if ( value globalai01 = goal && set int _all ) { do reset value currentaiorder = goaldone; else { do action ignore(); } } } } } // Endکد تعریف پایان شرط هدف : // MC Script a.k.a. Main Core Script define goaldone(); { // database part set object aichar01(); { do reset value globalai01(); { set value currentjob = 0; set value waitfororder = 1; set recalc = 1; } } } // Endالبته یک سری از توابع هست که توی این اسکریپتها تعریف نکردم چون واقعاً حجم زیادی هست و نوشتنش ارزش نداره چون این سبک پردازش داده دیگه استفاده نمیشه. این نمونه هم فقط برای درک مفهوم هست و نوشتن این سیستم پردازش برای Goal Driven اصلاً توصیه نمیشه. اگر توی اسکریپت غلط غلوط املایی یا خیلی ضایع بود ببخشید چون با عجله نوشتم:green: اسکریپت نویس : خودم نوشته شده توسط زبان اسکریپت نویسی موتور طراحی بازی Main Core سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 393]