در بسیاری از ژانرهای بازیهای كامپیوتری، نزدیكتر بودن به واقعیت، هم برای سازندگان و هم برای دوستداران بازی جایگاه ویژهای دارد. گرافیك بازیها در طبیعیتر جلوه دادن محیط و چهرهها، و استفاده از صدا و افكتهای صوتی پیشرفته در واقعیت بخشیدن به اتفاقاتی كه در بازیها با آن روبهرو میشویم، مؤثرند. انیمیشن نیز هر چه با دقت و جزئیات بیشتری طراحی شود، باورپذیرتر به نظر میآید. ولی آنچه دوستداران بازی را در ژانرهای ویژهای از بازیها به وجد میآورد، هوشمندی شخصیتهای بازی است. حوصله همه از اینكه همتیمیهای مجازیشان در بازیهای كامپیوتری نسنجیده عملكنند، سر میرود. گاه آنها نمیتوانند از خودشان هم محافظت كنند؛ چه برسد به آنكه بخواهند در طول بازی به شما كمك كنند. مبارزه با دشمنانی كه دست كمی از افرادتان ندارند نیز جذابیتی ندارد. همانگونه كه گرافیك خوب به مدلها، صدای خوب به رویدادها و انیمیشن خوب به حركتهای موجود در بازی واقعیت میبخشد، استفاده از روشهای مختلف هوش مصنوعی نیز رفتار شخصیتهای بازی را طبیعیتر میكند.
در بازیهای كامپیوتری، هوش مصنوعی بیشتر برای شخصیتهای مجازی مقابل شما به كار میرود و اگر در بازی، همتیمیهایی نیز داشته باشید كه خودِ بازی، آنها را كنترل میكند، برای آنها نیز به كار میرود. برای ملموستر بودن توضیحاتی كه در ادامه پیشرو خواهد بود، از رفتار شخصیتهای مجازی بازی Counter - ۱.۷ Strike در حالتی كه دستكم كنترل یك طرف بازی با كامپیوتر است و بازیهای Quake استفاده خواهد شد. هوش مصنوعی در بازی Counter - Strike به خوبی پیادهسازی شده است و بسیاری از دوستداران بازی نیز با آن آشنا هستند. وقتی در هر مرحله، شخصیت مجازی شما كشته میشود و چند دقیقهای از بازی بیرون هستید، زمان خوبی است كه رفتار هم تیمیها و دشمنانتان را بررسی كنید و به عملكرد هوش مصنوعی آنها پی ببرید. پنهانشدن، آهسته حركت كردن و همكاری آنها با هم، بسیار دیدنی است و در كمتر بازیای چنین رفتارهایی دیده میشود.
كاربرد هوش مصنوعی
هدف هوش مصنوعی نزدیك نمودن رفتار و پاسخ یك سیستم كامپیوتری به الگوهایی است كه انسان براساس آنها رفتار میكند و پاسخ میدهد. گاه سیستمهایی طراحی میشوند كه قدرت تجزیه و تحلیل آنها از انسان بیشتر است. ولی باز از الگوهای ما استفاده میكنند. هوش مصنوعی با سیستم فازی یا سیستمی كه انسان برطبق آن تصمیم میگیرد، رابطه تنگاتنگی در این سیستم برخلاف سیستم صفر و یك دیجیتال، میتوان به یك متغیر مقداری كمتر از یك و بیشتر از صفر نیز داد.
برای نمونه میخواهید یك بازی كامپیوتری را از میان چندین بازی مورد علاقه خود بخرید و از آنجا كه مقدار پول شما مشخص است، میخواهید فقط یك بازی را برگزینید. پس شما به بازیهای مورد علاقه خود، امتیازی بین صفر و یك میدهید. ارزش صفر برای بازیهایی است كه كمتر آنها را دوست دارید و هر چه مقدار عددیِ بیشتری به آن بازی بدهید، بیشتر آن را دوست دارید و از میان آنها بازیای كه بیشترین ارزش را برای شما دارد، انتخاب میكنید.
از دید فروشنده، شما با سیستم صفر و یك پاسخ دادهاید و بازیهای دیگر را انتخاب نكردهاید. هرچند در واقع شما فازی فكر كردهاید، ولی با منطق صفر و یك پاسخ دادهاید. اگر كامپیوترها فازیتر تحلیل كنند، هوشمندتر میشوند. ولی پاسخ آنها باید براساس همین صفر و یك باشد؛ چرا كه هیچ كس نمیخواهد یك پاسخ غیرقطعی از كامپیوتر دریافت كند. هر چه رفتارهای شخصیتهای بازی بیشتر براساس سیستم فازی باشد، پیشبینیناپذیرتر و هوشمندانهتر خواهند بود. یعنی میتوانند در مقابل رفتارهای مختلف شما و موقعیت محیط، رفتارهایی متفاوت نشان دهند.
انواع هوش مصنوعی
در بازیهای كامپیوتری سه نوع هوش بیشتر از همه استفاده میشوند كه به صورت خلاصه عبارتند از:
هوش مصنوعی رویدادگرا: این هوش معمولترین نوع هوش مصنوعی است. رویداد میتواند شامل هر چیزی اعم از اتفاقات بازی تا دستوراتی باشد كه كاربر به شخصیت مجازی خود میدهد. براساس هر رویدادی كه در بازی انجام میشود، یك واكنش هوشمندانه نیز روی میدهد. در بازی كانتراسترایك دشمن شما نسبت به صدا حساس است و صدای دویدن شما را هم میشنود. از اینرو بسته به موقعیت خود، یا به آهستگی پنهان میشود، یا برمیگردد و از راه دیگری به سوی شما میآید یا به سوی شما میآید و شلیك میكند.
هوش مصنوعی هدفگرا: این نوع هوش مصنوعی از هوش مصنوعی رویدادگرا مستقل است. ولی هوش مصنوعی رویدادگرا میتواند در طراحی یك بازی، هدفهای موتور هوش مصنوعی هدفگرا را تامین كند. این نوع هوش مصنوعی، هدفِ با ارزش بیشتر را برمیگزیند و آن را با تقسیم به زیرهدفهای كوچكتر، پردازش میكند.
شاید در بازی كانتراسترایك زمانی كه كامپیوتر هم كنترل هم تیمیها و هم كنترل دشمنان شما را به عهده دارد، دیده باشید كه وقتی با هم تیمیهایتان به سوی دشمنان خود تیراندازی میكنید، آنها هم بیشتر به سوی شما شلیك میكنند تا دیگر همتیمیهایتان؛ چرا كه شما باید هدفهای خواستهشده در بازی (مانند آزاد كردن گروگانها یا خنثی كردن بمب) را انجام دهید. برای همین ارزش شما برای آنها بیشتر است.
محفظههای سوراخ:
این روش تركیبی از دو روش گفته شده است. روش كار ساده است. دو محفظه دارید و چند نوع كار: فرار (flee)، مبارزه (fight) و پركردن تفنگ (restock) را در نظر میگیریم. محفظهها مقداری از محتوای خود را با گذشت زمان از دست میدهند.
شما اسكریپتی را در ارتباط با محفظهای كه بیشتر پر است، به اجرا در میآورید. رویدادهایی كه اتفاق میافتند، این محفظهها را با ارزشهای مختلفی پر میكنند و این محفظهها پر و خالی میشوند. برای نمونه دشمن مجازی را در موقعیتهای زیر در نظر بگیرید كه میتوان بسته به طراحی بازی عددهای زیر را كم و زیاد كرد:
▪شما دشمن را ببینید، پنج درصد به ارزش فرار و ده درصد به ارزش مبارزه او افزوده میشود. چون در بازی اولین هدف مبارزه است نه فرار. فرار كاری است كه هنگام رویارویی با دشمن زمانی كه دشمن شما موقعیت مناسبی ندارد، انجام میدهد. پس ارزش مبارزه در اینجا از فرار بیشتر است.
▪ گلوله او كم باشد، بیست درصد به ارزش ریستوك یا پر كردن تفنگ افزوده میشود. چون شاید به زودی به آن نیاز داشته باشد.
▪ اگر آسیبدیدگی او كم باشد، بیستدرصد به ارزش فرار و دهدرصد به ارزش ریستوك افزوده میشود. چون اگر شخصیت مجازی آسیب كمی دیده باشد، با ماندن در یكجا و پركردن تفنگ خود چنانچه در تیررس شما باشد، آسیب بیشتری میبیند.
پس در حالی كه جای خود را عوض میكند، باید تفنگ خود را نیز پركند. چون اگر باز در تیررس قرار بگیرد و گلولههای او رو به پایان باشد، هنگام پركردن، آسیب بیشتری میبیند. دشمنان شما در كانتراسترایك نیز این كار را میكنند. اگر شما پشت سر هم به آنها شلیك كنید، در پشت دیوار پنهان میشوند یا به جایی فرار میكنند و تفنگ خود را در صورت رو به پایان بودن گلولهها پرمیكنند. پس اولویت در فرار و قرار گرفتن در یك جای خوب و سپس پر كردن تفنگ است.
▪ شلیك به سوی او و آسیبدیدگی زیاد باشد، پنجاه درصد به ارزش مبارزه افزوده میشود و بیستدرصد از ارزش فرار و ریستوك كم میشود. چون وقتی به سوی او شلیك میكنید، هنگام فرار اگر در جای مناسبی نباشد، آسیبپذیرتر میشود و زمانی كه تفنگ خود را پر میكند، شما آسانتر میتوانید به سوی او شلیك كنید.
▪اگر در یكبار شلیك پنجاهدرصد آسیب ببیند، پنجاهدرصد به ارزش فرار و بیستدرصد به ارزش ریستوك افزوده میشود و پنجاهدرصد از ارزش مبارزه كم میشود. گاهی با یك سلاح قوی میتوانید آسیب بیشتری به دشمنتان برسانید. اگر در بازی كانتراسترایك، یك نارنجك به سمت دشمن پرتاب كنید، بیش از نیمی از نیروی او كم میشود. اگر او در جای مناسبی نباشد، چون بیش از نیمی از نیروی خود را از دست دادهاست، باید فرار كند و تنها زمانی كه موقعیت او از موقعیت شما بهتر است، شلیك میكند. در اینجا فرار ارزش بیشتری دارد.
هوش مصنوعی در ژانرهای بازی
بازیهای كامپیوتری اكشن، ماجرایی - اكشن و تیراندازی، بیش از بازیهای ژانرهای دیگر از هوش مصنوعی استفاده میبرند. بازیهای مسابقهای و استراتژیك نیز میتوانند از هوش مصنوعی برای قویتر كردن رقیبانشان استفاده كنند. نمونه خوب بازیهای مسابقهای، Need For Speed UnderGround۲ است. در این بازی، هنگامی كه در شهر مشغول رانندگی هستید، میتوانید با اتومبیلهای مسابقهای دیگر كه مانند شما در شهر حركت میكنند مسابقه دهید. برای اینكار باید به آن اتومبیل نزدیك شوید و هنگامی كه منوی پرسش برای پذیرش مسابقه را دیدید، كلید Enter را فشار دهید.
هنگامی كه جلو هستید باید فاصله شما از آن اتومبیل بیش از یك مقدار خاص باشد تا برنده شوید و زمانی كه پشت سر او هستید، نباید فاصله شما از این مقدار بیشتر باشد. اگر همزمان با مسابقه به نقشه كوچك گوشه مانیتور نگاه كنید، میبینید زمانی كه راننده رقیب از شما عقبتر است، كوتاهترین مسیر را برای رسیدن به شما از میان خیابانهای مختلف كه به هم راه دارند انتخاب میكند و زمانی كه از شما جلوتر است، هنگام رسیدن به تقاطعها ناگهان تغییر مسیر میدهد تا شما را سردرگم كند.
در بازی Need For Most Wanted، به نظر میآید پلیسها در تعقیب و گریز شما و یافتن مسیر، ضعیفتر عمل میكنند. البته شاید شركت EA، خود اینگونه خواسته است. به غیر از این، بازیهای ماجرایی معمولاً نیازی به هوش مصنوعی ندارند؛ چرا كه كنترل شخصیت بازی به عهده شماست و آنچه باید از پیش روبردارید، پازلهای طراحی شده است نه دشمنان یا هیولاهایی كه به هوشمندسازی نیاز داشته باشند؛ مانند بازی سایبریا.
هوش مصنوعی، بیشتر در بازیهای تیراندازی اول شخص (FPS) گسترش یافت. یك بازی تیراندازی اول شخص بیشتر از یك موتور براساس هوش مصنوعی رویدادگر استفاده میكند كه رویدادها و واكنشها میتوانند مانند الگوی زیر باشند:
▪ هنگام دیده شدن: یورش با مناسبترین سلاح
▪هنگام آسیبدیدگی زیاد: فرار و بازگرداندن نیرو. مانند استفاده از كیتهای سلامتی در برخی بازیها.
▪نبود گلوله: پیدا كردن گلوله
شایان ذكر است كه استفاده از روش محفظههای سوراخ میتواند هوش مصنوعی در این بازیها را انعطافپذیرتر كند.
پیدایش و پیشرفت هوش مصنوعی
در اواسط دهه ۱۹۹۰، یك بازی تیراندازی اول شخص منتشر شد كه به كاربر امكان میداد بازی را برای خود سفارشی (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 یك الگوریتم جستجوی "اول عمق" است كه هیورستیك آن را كنترل میكند و میتواند مناسبترین شاخه بعدی گراف را حدس بزند و در هر عمق، تنها شاخهای كه ارزش هیورستیك بهتری دارد، گسترش مییابد.
نظریهها و روشهای رایج
در ابتدا كمی از بازیها از روشهای استاندارد هوشمصنوعی استفاده میكردند. یكی از آن باتها برای بازی 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 را انجام میدهد و مسئولیت تبادل اطلاعات میان موتور بازی و دیگر لایههای میانافزار را نیز برعهده دارد.
موتور بازی، دادههای وضعیت كاراكتر و محیط مجازی را فراهم میكند و RWAI ورودی را درلایههای متناسب با آن منتشر میسازد و درخواستها را برای دادههای بیشتر یا كنترل كاراكترهااستخراج میكند. RWAI سرویسها و امكاناتی برای هوش مصنوعی فراهم میآورد. یكی از این سرویسها، مسیریابی در محیط سه بعدی است كه به وسیله تعامل اشیای موجود در لایههای سرویسهایی كه گفته شد پشتیبانی میشود. یكی از اشیای موجود در این میانافزار، شی CNextMoveManager است كه سرویس اصلی مسیریابی در طول گرافی كه از الگوریتمA استفاده كرده است را برعهده دارد. با در دسترسبودن سورسكد شی CNextMoveManager، میتوان این پردازنده را چنان كه موردنیاز است، در بازی تغییر داد.
مدیریت موجودیت میتواند با استفاده از Entity API انجام شود. هم موجودیت متفكر و هم موجودیت منفعل باید در دنیای مجازی قابل شناسایی با RWAI ایجاد شوند تا بر چگونگی تصمیمگیری و سرویسهای قابل ارائه تاثیر بگذارند.میانافزار RWAI یك كیت توسعه نرمافزاری قدرتمند است و زمانی كه همراه با دیگر كامپوننتهای سكویRenderWare استفاده شود، راهبردی قابل اعتماد و قوی فراهم میكند. حتی زمانی كه از RWAI به تنهایی استفاده میشود و موتور بازی سرویسهای پلتفرم RenderWare را ایجاد میكند، (SDK) نرمافزار، قابلیت پیادهسازی رفتار كاراكتری پیچیده و پیشرفته را دارد.
ماهنامه شبکه -- گردآوری و تدوین: علی حسینی