نگاهي به هوش مصنوعي - در بازيهاي كامپيوتري
اشاره :
در بسياري از ژانرهاي بازيهاي كامپيوتري، نزديكتر بودن به واقعيت، هم براي سازندگان و هم براي دوستداران بازي جايگاه ويژهاي دارد. گرافيك بازيها در طبيعيتر جلوه دادن محيط و چهرهها، و استفاده از صدا و افكتهاي صوتي پيشرفته در واقعيت بخشيدن به اتفاقاتي كه در بازيها با آن روبهرو ميشويم، مؤثرند. انيميشن نيز هر چه با دقت و جزئيات بيشتري طراحي شود، باورپذيرتر به نظر ميآيد. ولي آنچه دوستداران بازي را در ژانرهاي ويژهاي از بازيها به وجد ميآورد، هوشمندي شخصيتهاي بازي است. حوصله همه از اينكه همتيميهاي مجازيشان در بازيهاي كامپيوتري نسنجيده عملكنند، سر ميرود. گاه آنها نميتوانند از خودشان هم محافظت كنند؛ چه برسد به آنكه بخواهند در طول بازي به شما كمك كنند. مبارزه با دشمناني كه دست كمي از افرادتان ندارند نيز جذابيتي ندارد. همانگونه كه گرافيك خوب به مدلها، صداي خوب به رويدادها و انيميشن خوب به حركتهاي موجود در بازي واقعيت ميبخشد، استفاده از روشهاي مختلف هوش مصنوعي نيز رفتار شخصيتهاي بازي را طبيعيتر ميكند. در بازيهاي كامپيوتري، هوش مصنوعي بيشتر براي شخصيتهاي مجازي مقابل شما به كار ميرود و اگر در بازي، همتيميهايي نيز داشته باشيد كه خودِ بازي، آنها را كنترل ميكند، براي آنها نيز به كار ميرود. براي ملموستر بودن توضيحاتي كه در ادامه پيشرو خواهد بود، از رفتار شخصيتهاي مجازي بازي Counter - 1.7 Strike در حالتي كه دستكم كنترل يك طرف بازي با كامپيوتر است و بازيهاي Quake استفاده خواهد شد. هوش مصنوعي در بازي Counter - Strike به خوبي پيادهسازي شده است و بسياري از دوستداران بازي نيز با آن آشنا هستند. وقتي در هر مرحله، شخصيت مجازي شما كشته ميشود و چند دقيقهاي از بازي بيرون هستيد، زمان خوبي است كه رفتار هم تيميها و دشمنانتان را بررسي كنيد و به عملكرد هوش مصنوعي آنها پي ببريد. پنهانشدن، آهسته حركت كردن و همكاري آنها با هم، بسيار ديدني است و در كمتر بازياي چنين رفتارهايي ديده ميشود.
كاربرد هوش مصنوعي
هدف هوش مصنوعي نزديك نمودن رفتار و پاسخ يك سيستم كامپيوتري به الگوهايي است كه انسان براساس آنها رفتار ميكند و پاسخ ميدهد. گاه سيستمهايي طراحي ميشوند كه قدرت تجزيه و تحليل آنها از انسان بيشتر است. ولي باز از الگوهاي ما استفاده ميكنند. هوش مصنوعي با سيستم فازي يا سيستمي كه انسان برطبق آن تصميم ميگيرد، رابطه تنگاتنگي در اين سيستم برخلاف سيستم صفر و يك ديجيتال، ميتوان به يك متغير مقداري كمتر از يك و بيشتر از صفر نيز داد.
براي نمونه ميخواهيد يك بازي كامپيوتري را از ميان چندين بازي مورد علاقه خود بخريد و از آنجا كه مقدار پول شما مشخص است، ميخواهيد فقط يك بازي را برگزينيد. پس شما به بازيهاي مورد علاقه خود، امتيازي بين صفر و يك ميدهيد. ارزش صفر براي بازيهايي است كه كمتر آنها را دوست داريد و هر چه مقدار عدديِ بيشتري به آن بازي بدهيد، بيشتر آن را دوست داريد و از ميان آنها بازياي كه بيشترين ارزش را براي شما دارد، انتخاب ميكنيد.
از ديد فروشنده، شما با سيستم صفر و يك پاسخ دادهايد و بازيهاي ديگر را انتخاب نكردهايد. هرچند در واقع شما فازي فكر كردهايد، ولي با منطق صفر و يك پاسخ دادهايد. اگر كامپيوترها فازيتر تحليل كنند، هوشمندتر ميشوند. ولي پاسخ آنها بايد براساس همين صفر و يك باشد؛ چرا كه هيچ كس نميخواهد يك پاسخ غيرقطعي از كامپيوتر دريافت كند. هر چه رفتارهاي شخصيتهاي بازي بيشتر براساس سيستم فازي باشد، پيشبينيناپذيرتر و هوشمندانهتر خواهند بود. يعني ميتوانند در مقابل رفتارهاي مختلف شما و موقعيت محيط، رفتارهايي متفاوت نشان دهند.
انواع هوش مصنوعي
در بازيهاي كامپيوتري سه نوع هوش بيشتر از همه استفاده ميشوند كه به صورت خلاصه عبارتند از:
هوش مصنوعي رويدادگرا: اين هوش معمولترين نوع هوش مصنوعي است. رويداد ميتواند شامل هر چيزي اعم از اتفاقات بازي تا دستوراتي باشد كه كاربر به شخصيت مجازي خود ميدهد. براساس هر رويدادي كه در بازي انجام ميشود، يك واكنش هوشمندانه نيز روي ميدهد. در بازي كانتراسترايك دشمن شما نسبت به صدا حساس است و صداي دويدن شما را هم ميشنود. از اينرو بسته به موقعيت خود، يا به آهستگي پنهان ميشود، يا برميگردد و از راه ديگري به سوي شما ميآيد يا به سوي شما ميآيد و شليك ميكند.
هوش مصنوعي هدفگرا: اين نوع هوش مصنوعي از هوش مصنوعي رويدادگرا مستقل است. ولي هوش مصنوعي رويدادگرا ميتواند در طراحي يك بازي، هدفهاي موتور هوش مصنوعي هدفگرا را تامين كند. اين نوع هوش مصنوعي، هدفِ با ارزش بيشتر را برميگزيند و آن را با تقسيم به زيرهدفهاي كوچكتر، پردازش ميكند.
شايد در بازي كانتراسترايك زماني كه كامپيوتر هم كنترل هم تيميها و هم كنترل دشمنان شما را به عهده دارد، ديده باشيد كه وقتي با هم تيميهايتان به سوي دشمنان خود تيراندازي ميكنيد، آنها هم بيشتر به سوي شما شليك ميكنند تا ديگر همتيميهايتان؛ چرا كه شما بايد هدفهاي خواستهشده در بازي (مانند آزاد كردن گروگانها يا خنثي كردن بمب) را انجام دهيد. براي همين ارزش شما براي آنها بيشتر است.
تصوير 1 - يك كاراكتر در بازي Counter 1.7 - Strike در حال دويدن به سوي يكي از دو محل مبارزه است. او ميداند اسلحه و هم تيميهايش كجا هستند.
محفظههاي سوراخ: اين روش تركيبي از دو روش گفته شده است. روش كار ساده است. دو محفظه داريد و چند نوع كار: فرار (flee)، مبارزه (fight) و پركردن تفنگ (restock) را در نظر ميگيريم. محفظهها مقداري از محتواي خود را با گذشت زمان از دست ميدهند.
شما اسكريپتي را در ارتباط با محفظهاي كه بيشتر پر است، به اجرا در ميآوريد. رويدادهايي كه اتفاق ميافتند، اين محفظهها را با ارزشهاي مختلفي پر ميكنند و اين محفظهها پر و خالي ميشوند. براي نمونه دشمن مجازي را در موقعيتهاي زير در نظر بگيريد كه ميتوان بسته به طراحي بازي عددهاي زير را كم و زياد كرد:
- شما دشمن را ببينيد، پنج درصد به ارزش فرار و ده درصد به ارزش مبارزه او افزوده ميشود. چون در بازي اولين هدف مبارزه است نه فرار. فرار كاري است كه هنگام رويارويي با دشمن زماني كه دشمن شما موقعيت مناسبي ندارد، انجام ميدهد. پس ارزش مبارزه در اينجا از فرار بيشتر است.
- گلوله او كم باشد، بيست درصد به ارزش ريستوك يا پر كردن تفنگ افزوده ميشود. چون شايد به زودي به آن نياز داشته باشد.
- اگر آسيبديدگي او كم باشد، بيستدرصد به ارزش فرار و دهدرصد به ارزش ريستوك افزوده ميشود. چون اگر شخصيت مجازي آسيب كمي ديده باشد، با ماندن در يكجا و پركردن تفنگ خود چنانچه در تيررس شما باشد، آسيب بيشتري ميبيند.
پس در حالي كه جاي خود را عوض ميكند، بايد تفنگ خود را نيز پركند. چون اگر باز در تيررس قرار بگيرد و گلولههاي او رو به پايان باشد، هنگام پركردن، آسيب بيشتري ميبيند. دشمنان شما در كانتراسترايك نيز اين كار را ميكنند. اگر شما پشت سر هم به آنها شليك كنيد، در پشت ديوار پنهان ميشوند يا به جايي فرار ميكنند و تفنگ خود را در صورت رو به پايان بودن گلولهها پرميكنند. پس اولويت در فرار و قرار گرفتن در يك جاي خوب و سپس پر كردن تفنگ است.
- شليك به سوي او و آسيبديدگي زياد باشد، پنجاه درصد به ارزش مبارزه افزوده ميشود و بيستدرصد از ارزش فرار و ريستوك كم ميشود. چون وقتي به سوي او شليك ميكنيد، هنگام فرار اگر در جاي مناسبي نباشد، آسيبپذيرتر ميشود و زماني كه تفنگ خود را پر ميكند، شما آسانتر ميتوانيد به سوي او شليك كنيد.
- اگر در يكبار شليك پنجاهدرصد آسيب ببيند، پنجاهدرصد به ارزش فرار و بيستدرصد به ارزش ريستوك افزوده ميشود و پنجاهدرصد از ارزش مبارزه كم ميشود. گاهي با يك سلاح قوي ميتوانيد آسيب بيشتري به دشمنتان برسانيد. اگر در بازي كانتراسترايك، يك نارنجك به سمت دشمن پرتاب كنيد، بيش از نيمي از نيروي او كم ميشود. اگر او در جاي مناسبي نباشد، چون بيش از نيمي از نيروي خود را از دست دادهاست، بايد فرار كند و تنها زماني كه موقعيت او از موقعيت شما بهتر است، شليك ميكند. در اينجا فرار ارزش بيشتري دارد.
هوش مصنوعي در ژانرهاي بازي
بازيهاي كامپيوتري اكشن، ماجرايي - اكشن و تيراندازي، بيش از بازيهاي ژانرهاي ديگر از هوش مصنوعي استفاده ميبرند. بازيهاي مسابقهاي و استراتژيك نيز ميتوانند از هوش مصنوعي براي قويتر كردن رقيبانشان استفاده كنند. نمونه خوب بازيهاي مسابقهاي، Need For Speed UnderGround2 است. در اين بازي، هنگامي كه در شهر مشغول رانندگي هستيد، ميتوانيد با اتومبيلهاي مسابقهاي ديگر كه مانند شما در شهر حركت ميكنند مسابقه دهيد. براي اينكار بايد به آن اتومبيل نزديك شويد و هنگامي كه منوي پرسش براي پذيرش مسابقه را ديديد، كليد Enter را فشار دهيد.
هنگامي كه جلو هستيد بايد فاصله شما از آن اتومبيل بيش از يك مقدار خاص باشد تا برنده شويد و زماني كه پشت سر او هستيد، نبايد فاصله شما از اين مقدار بيشتر باشد. اگر همزمان با مسابقه به نقشه كوچك گوشه مانيتور نگاه كنيد، ميبينيد زماني كه راننده رقيب از شما عقبتر است، كوتاهترين مسير را براي رسيدن به شما از ميان خيابانهاي مختلف كه به هم راه دارند انتخاب ميكند و زماني كه از شما جلوتر است، هنگام رسيدن به تقاطعها ناگهان تغيير مسير ميدهد تا شما را سردرگم كند.
در بازي Need For Most Wanted، به نظر ميآيد پليسها در تعقيب و گريز شما و يافتن مسير، ضعيفتر عمل ميكنند. البته شايد شركت EA، خود اينگونه خواسته است. به غير از اين، بازيهاي ماجرايي معمولاً نيازي به هوش مصنوعي ندارند؛ چرا كه كنترل شخصيت بازي به عهده شماست و آنچه بايد از پيش روبرداريد، پازلهاي طراحي شده است نه دشمنان يا هيولاهايي كه به هوشمندسازي نياز داشته باشند؛ مانند بازي سايبريا.
هوش مصنوعي، بيشتر در بازيهاي تيراندازي اول شخص (FPS) گسترش يافت. يك بازي تيراندازي اول شخص بيشتر از يك موتور براساس هوش مصنوعي رويدادگر استفاده ميكند كه رويدادها و واكنشها ميتوانند مانند الگوي زير باشند:
- هنگام ديده شدن: يورش با مناسبترين سلاح
- هنگام آسيبديدگي زياد: فرار و بازگرداندن نيرو. مانند استفاده از كيتهاي سلامتي در برخي بازيها.
- نبود گلوله: پيدا كردن گلوله
شايان ذكر است كه استفاده از روش محفظههاي سوراخ ميتواند هوش مصنوعي در اين بازيها را انعطافپذيرتر كند.
پيدايش و پيشرفت هوش مصنوعي
در اواسط دهه 1990، يك بازي تيراندازي اول شخص منتشر شد كه به كاربر امكان ميداد بازي را براي خود سفارشي (Customize) كند. اين بازي، Quake بود كه در فناوري ساخت بازيهاي كامپيوتري يك نوآوري محسوب ميشد. Quake اولين بازي سهبعدي واقعي است. به اين معني كه بهصورت بلادرنگ در سه بعد رندر ميشود. (پيش از آن spiritها يا گرافيكهاي دوبعدي به صورت سهبعدي شبيهسازي ميشدند). چيزهاي ديگري نيز در اين بازي وجود داشت كه موردتوجه قرار گرفت؛ مانند نشانه گرفتن سلاح به بالا يا پايين. زيرا حركتدادن سلاح به بالا يا پايين نيازمند پردازش در بعد سوم، يعني عمق يا ارتفاع در يك محيط سهبعدي است.
بازي Quake از موجودات مجازي هوشمند (bot) هر چند با هوش مصنوعي كم، بهره برده بود. هوش مصنوعي يكbot در بازيهاي تيراندازي اول شخص، ميتواند در دو بخش بررسي شود: يكي ناوبري و حركت، و ديگري مبارزه. اگر بخواهيم رفتار bot نزديك به رفتار يك انسان باشد، پيادهسازي آن بسيار پيچيدهتر از هوشمصنوعي در مبارزه است. هر چند پيادهسازي هوش مصنوعي در مبارزه نيز با هر استاندارد و روشي آسان نيست.
براي اينكه باتها بتوانند حركت كنند، بايد بتوانند درباره اشيا و موجودات پيرامون خود ياد بگيرند. اين ايده بسيار اساسي، ميتواند به بخشهاي بيشتري مانند قابليت آناليز هنگام حركت در يك جهت خاص و سپس قابليت پيدا كردن اشيا و شخصيتهاي مجازيِ مقابل در يك مرحله بازي گسترش يابد. اين ايدهها شايد ساده به نظر برسند، ولي واقعاً اينگونه نيست؛ چرا كه يك bot بايد بتواند در برابر دو چيز واكنش درستي داشته باشد: ديوارها و فضاهاي خالي.
ديوارها شامل همه چيزهايي است كه نميتوان از آن عبور كرد؛ مانند خود يك ديوار، نرده، شخصيتهاي مجازي، جعبهها، پلههاي رو به بالا و ... فضاهاي خالي نيز هر جايي است كه زمين همواره نيست يا دچار شكستگي است؛ مانند يك چاله، پلههاي رو به پايين و ... . براي رويارويي با اين دو مانع، يك روش خوب، افزايش كارايي تابع جستجو است. اين تابع كه در بازي Quake معرفي شد، به بات امكان ميدهد يك خط را از يكي از بُعدهاي X-Y-Z تا بُعد بعدي جستجو كند و اطلاعاتي مانند اينكه <اين خط به كجا ميرود، چه چيزي آن را قطع ميكند و ...> را دريافت كند.
دو روش براي گذشتن يكبات از يك مرحله، بيشتر مورد استفاده قرار ميگيرد: روش نخست از گرههاي گراف وضعيت و روش دوم از مسيرهاي (path) آن استفاده ميكند. در يك محيط براساس روش گره، گرهها در قسمت قوانين بهينهسازي مرحله (level) كه به وسيله سازنده يك bot تعريف شده است قرار دارند. هر گره ميتواند اطلاعات بات درباره قسمت خاصي از محيط را بدهد. وضعيت مبارزه، كاربردهاي زيادي براي تعدادي از الگوريتمهاي جستجو يا پروسه تصميمگيري دارد. در يك مبارزه، بايد براي تشخيص اينكه كدام كار براي بات بهتر است حركتهاي رقيب پيشبيني شود.
روش Minimax، در مواقعي كه يك تابع هيورستيك خوب (يك هيورستيك برخلاف الگوريتم، ممكن است به يك پاسخ قطعي نرسد) در دست باشد، ميتواند يك حركت خوب را انجام دهد. از آنجا كه minimax روش كندي است، ميتوان از Partial Minimax استفاده كرد كه در الگوريتمهاي تصميمگيري به كار ميرود؛ هر چند اين روش هنوز چندان پذيرفته نشده است.
پژوهشگران هوش مصنوعي پيشنهاد ميكنند، تنها زماني از Partial Minimax استفاده كنيد كه يك گزينه بديهي در دست داشته باشيد (زماني كه متغير minimax با ارزش بيشتر كاملا بهتر از متغير ديگر باشد). در غير اينصورت اگر ارزش همه متغيرها نزديك به هم است، از استراتژي ديگري استفاده كنيد. حال آنكه در يك بازي بلادرنگ براي يكbot معمولاً گزينه بديهي وجود ندارد تا آن را برگزينيد. هر گزينه به يك استراتژي متفاوت وابسته است كه bot ميتواند آن را انتخاب كند.
شايد بسياري از طرفداران روش minimax به ارزش سرعت، هنگام بررسي كارايي يك بات در بازي بلادرنگ واقف نيستند؛ مانند كمترين زماني كه يك بات نياز دارد تا درباره يك تصميم بينديشد، گزينههاي بيشتري كه براي تصميمگيري ايجاد ميكند، كيفيت واكنش بهتر و سطح خبرگي. به ياد داشته باشيد كه يك بات در برابر مغز يك انسان كه ميتواند دنياي سهبعدي را با كمك حس و تخيل خود تفسير كند، قرار ميگيرد. براي نمونه در يك مبارزه، يك بات نياز به نشانهگيري به سوي دشمن خود، پيشبيني حركت آن و... دارد كه همه، بدون داشتن درك واقعي از محيطي كه در آن قراردارد انجام ميشود.
براي دستيابي به بيشترين سرعت، بيشتر از الگوريتم *A استفاده ميشود. هر چند اين الگوريتم پيشرفته نيست، ولي سرعت بالايي دارد. پيچيدگي زماني اين الگوريتم ((O(log h(n است كه (h(n پيچيدگي تابع هيورستيك است. *A يك الگوريتم جستجوي "اول عمق" است كه هيورستيك آن را كنترل ميكند و ميتواند مناسبترين شاخه بعدي گراف را حدس بزند و در هر عمق، تنها شاخهاي كه ارزش هيورستيك بهتري دارد، گسترش مييابد.
تصوير 2- نمايي از بازي Quake III Arena
نظريهها و روشهاي رايج
در ابتدا كمي از بازيها از روشهاي استاندارد هوشمصنوعي استفاده ميكردند. يكي از آن باتها براي بازي Quake II ساخته شده بود كه براساس شبكههاي عصبي ميتوانست محيط اطراف خود را بشناسد.
اين موجود، Neuralbot نام گرفت كه موردتوجه پژوهشگران هوش مصنوعي و بازيهاي كامپيوتري واقع شد. آقاي Elusive طراح و سازنده چندين بات است كه مشهورترين آنها را در بازي Quake III Arena كه شركت id Software ساخته است ميبينيم. او درباره Neuralbot ميگويد:
برخي از طرفداران اين بات بر اين عقيدهاند كه دوستداران بازيها به دنبال موجودي كاملا هوشمند و شبيه انسان نيستند و تنها ميخواهند مبارزه خوب و سختي با آنها داشته باشند. آنان ميگويند يك هوش مصنوعي خوب نبايد يك شبيهسازي از هوش واقعي باشد. بلكه بايد اشتباه در آن كمتر باشد؛ به گونهاي كه بازي را جذاب وسخت كند.
اما بسياري از برنامهنويسان بازيهاي كامپيوتري، با پژوهشگران هوش مصنوعي بازيهاي كامپيوتري همسو نيستند. آنها موجودات هوشمند مجازي خود را تا آنجا كه ميتوانند، شبيه انسان ميسازند و سپس آنها را در مقابل انسان آزمايش ميكنند. براي نمونه Elusive ميگويد:
يكي از چيزهايي كه در هوش مصنوعي بازيهاي كامپيوتري هنوز مورد پژوهش و بررسي قرار ميگيرد، ساختن يكbot است كه هرگز <تقلب> نميكند! بيشتر باتها تابعهايي دارند كه براي هرچه بهتر بازي كردن، دادهها را از بازيكنان ديگر (انسان يا bot) استخراج ميكنند؛ كه اين كار يك تقلب محسوب ميشود. در روش آزمون و خطا، موجودات هوشمند مجازي نبايد وابسته به دانش خاص بازيكنان ديگر باشند. براي آنكه اين باتها وابسته به دادههاي شخصيتهاي مجازي ديگر نباشند، بايد توانايي تشخيص و سرعت آنها افزايش يابد. نتيجه كار، باتي خواهد بود كه هر چند نسبت به باتهاي ديگر ويژگيهاي غيرانساني بيشتري دارد، هنوز هم رقيب سرسخت و خوبي است.
Elusive باتهايي براي بازي Quake III ساخت، كه هرگز تقلب نميكنند. براي هر چه شبيهتر كردن باتها به انسان، آنها به گونهاي طراحي شدهاند كه نياز به پيش تعريف مسيرها در هر مرحله دارند. سپس دستورهاي نوشته شده به بات ميگويد چگونه مسيرها را زماني كه مبارزهاي درجريان نيست ناوبري كند. برخي براين باورند كه اين روش نيز براي باتها نوعي تقلب است. چون آنها قبلا محيط را شناختهاند و همزمان با رويارويي با محيط، تصميم نميگيرند.
ولي در مقابل، اگر يك بازيكن واقعي هم چندبار يك مرحله از بازي را تجربه كند، با محيط آشنا ميشود و هر چه را كه در پيرامونش قرار دارد ميشناسد. پس چرا يك بات بايد هر بار كه وارد محيطي ميشود كه قبلا هم در آنجا بوده است، همه اطلاعات آنجا را دوباره ياد بگيرد؟ با توجه به اين مسئله ميتوان موجودات هوشمند مجازياي ساخت كه فهم انساني از يك مرحله دارند و ميتوانند زمان بيشتر پردازنده را به كارهاي ديگر اختصاص دهند تا دوباره كاري.
باتهاي امروزي، بيشتر مانند انسان رفتار ميكنند. در اين بازيها هوش مصنوعي، متفاوت از هوش مصنوعي دانشگاهي است. يك بات واقعاً چيزي ياد نميگيرد. ولي ميكوشد وانمود كند كه يك انسان واقعي است.
پژوهشگران هوش مصنوعي، از صنعت بازيسازي دل خوشي ندارند. چون شركتهاي بازيسازي از بسياري از روشهاي ساده استفاده مينمايند و روشهاي پيشرفته را رها ميكنند. ولي هنوز هم چيزهايي درباره باتها وجود دارد كه ميتوان از سازندگان بازيهاي كامپيوتري ياد گرفت.
معرفي ميانافزار RWAI
Render Ware AI) RWAI) ميانافزاري براي توسعهدهندگان هوش مصنوعي در بازيهاي كامپيوتري است كه شركت فرانسوي Kynogon ساخته و بخشي از بسته نرمافزاري پلتفرم RenderWare، محصول اين شركت است كه شامل ابزارهاي گرافيكي، صوتي و ... براي ايجاد محتوا در بازيهاي كامپيوتري است.
كيت توسعه نرمافزاري (SDK) اين نرمافزار متمركز بر كمك به توسعهدهندگان بازيهاي كامپيوتري براي طراحي و پيادهسازي رفتار كاراكترها در بازي است. براي اين منظور، RWAI SDK سرويسهايي براي مدلسازي محيط، اشياي موجود در محيط و سرانجام كاراكترها و رفتارهايشان در اختيار برنامهنويسان ميگذارند.
RWAI اشيا را در يك دنياي مجازي، يك موجوديت (entity) در دو فرم اصلي در نظر ميگيرد:
Thinking entity و Passive entity
Thinking entity يا موجوديت متفكر بيشتر در بازيهاي Non-Player Character) NPC) استفاده ميشود. موجوديت متفكر يك آبجكت با نام brain (مغز) دارد كه قابليت تصميمگيري كاراكتر را فعال ميكند و موجب بروز رفتار در آنها ميشود.
موجوديتهاي منفعل، آبجكتهايي در دنياي مجازي هستند كه با موجوديتهاي متفكر ايجاد ميشوند و با آنها در تعاملند، ولي تحت كنترل RWAI نيستند. RWAI SDK سرويسهاي زير را در يك محيط چند لايهاي فراهم ميكند:
§ لايه تصميم (Decision): اين لايه از شي مغز كه پيشتر گفته شد، پشتيباني ميكند. زماني كه يك موجوديت متفكر ايجاد ميشود، يك شي مغز نيز براي آن موجوديت ساخته ميشود. شي مغز، كار تصميمگيري را انجام ميدهد.
§لايه عامل(Agent): اين لايه از رفتارهايي كه از موجوديتها سر ميزند پشتيباني ميكند. منظور از agent در ميانافزار RWAI مجموعهاي از كارها است كه بازتابدهنده رفتاري سطح بالا است.
ميتوان از Go To (رفتن به جايي ...)، دنبالكننده (Follower)، دنبال كردن مسير (Follow Path)، حركت در جهتهاي مختلف (Wanderer)، گريختن (Runaway)، پنهانكننده (Hider) و ... به عنوان نمونههايي از agentهاي اين ميانافزار نام برد.
§لايه خدمات (Service): اين لايه تعدادي اشياي مديريتكننده را دربردارد. براي نمونه، مديريتكننده NextMove Manager براي يافتن مسير حركت كاراكترها در دنياي مجازي،Graph Manager براي مديريت دادههاي يك مسير كه منعكسكننده ويژگيهاي دنياي مجازي در هر مسير هستند و NeuralNet Manager براي مديريت دادههاي شبكههاي عصبي استفاده شده در RWAI.
§لايه معماري (Architecture): كار معرفي، بروز كردن و پايان دادن به لايههاي تحت كنترل موتور بازي در RWAI را انجام ميدهد و مسئوليت تبادل اطلاعات ميان موتور بازي و ديگر لايههاي ميانافزار را نيز برعهده دارد.
در تصوير 3 چگونگي ارتباط لايهها با موتور بازي نشان داده شده است.
تصوير3 - چگونگي ارتباط لايههاي RWAI با موتور بازي.
موتور بازي، دادههاي وضعيت كاراكتر و محيط مجازي را فراهم ميكند و RWAI ورودي را در لايههاي متناسب با آن منتشر ميسازد و درخواستها را براي دادههاي بيشتر يا كنترل كاراكترها استخراج ميكند. RWAI سرويسها و امكاناتي براي هوش مصنوعي فراهم ميآورد. يكي از اين سرويسها، مسيريابي در محيط سه بعدي است كه به وسيله تعامل اشياي موجود در لايههاي سرويسهايي كه گفته شد پشتيباني ميشود. يكي از اشياي موجود در اين ميانافزار، شي CNextMoveManager است كه سرويس اصلي مسيريابي در طول گرافي كه از الگوريتم A استفاده كرده است را برعهده دارد. با در دسترسبودن سورسكد شي CNextMoveManager، ميتوان اين پردازنده را چنان كه موردنياز است، در بازي تغيير داد.
مديريت موجوديت ميتواند با استفاده از Entity API انجام شود. هم موجوديت متفكر و هم موجوديت منفعل بايد در دنياي مجازي قابل شناسايي با RWAI ايجاد شوند تا بر چگونگي تصميمگيري و سرويسهاي قابل ارائه تاثير بگذارند.
ميانافزار RWAI يك كيت توسعه نرمافزاري قدرتمند است و زماني كه همراه با ديگر كامپوننتهاي سكويRenderWare استفاده شود، راهبردي قابل اعتماد و قوي فراهم ميكند. حتي زماني كه از RWAI به تنهايي استفاده ميشود و موتور بازي سرويسهاي پلتفرم RenderWare را ايجاد ميكند، (SDK) نرمافزار، قابليت پيادهسازي رفتار كاراكتري پيچيده و پيشرفته را دارد.
منابع
Anders Petersson:Artificial Intelligence in games
نشاني
worldforge.com
Chris Moyer: Bot, Anyway? How Intelligent is a Game
نشاني
www.tcnj.com
Gamasutra - The Art & Business of Making Games