RatAtouille
28-07-2010, 14:12
Artificial Intelligence
هوش مصنوعي
زماني كه از هوش مصنوعي صحبت ميكنيم در حقيقت در حال صحبت در مورد دنياي الگوريتمي است و بازي هاي ما در صورت نداشتن هوش مصنوعي مناسب به نما هاي بي جان تبديل خواهند شد .
اربرد هوش مصنوعي
هدف هوش مصنوعي نزديك نمودن رفتار و پاسخ يك سيستم كامپيوتري به الگوهايي است كه انسان براساس آنها رفتار ميكند و پاسخ ميدهد. گاه سيستمهايي طراحي ميشوند كه قدرت تجزيه و تحليل آنها از انسان بيشتر است. ولي باز از الگوهاي ما استفاده ميكنند. هوش مصنوعي با سيستم فازي يا سيستمي كه انسان برطبق آن تصميم ميگيرد، رابطه تنگاتنگي در اين سيستم برخلاف سيستم صفر و يك ديجيتال، ميتوان به يك متغير مقداري كمتر از يك و بيشتر از صفر نيز داد.
براي نمونه ميخواهيد يك بازي كامپيوتري را از ميان چندين بازي مورد علاقه خود بخريد و از آنجا كه مقدار پول شما مشخص است، ميخواهيد فقط يك بازي را برگزينيد. پس شما به بازيهاي مورد علاقه خود، امتيازي بين صفر و يك ميدهيد. ارزش صفر براي بازيهايي است كه كمتر آنها را دوست داريد و هر چه مقدار عدديِ بيشتري به آن بازي بدهيد، بيشتر آن را دوست داريد و از ميان آنها بازياي كه بيشترين ارزش را براي شما دارد، انتخاب ميكنيد.
از ديد فروشنده، شما با سيستم صفر و يك پاسخ دادهايد و بازيهاي ديگر را انتخاب نكردهايد. هرچند در واقع شما فازي فكر كردهايد، ولي با منطق صفر و يك پاسخ دادهايد. اگر كامپيوترها فازيتر تحليل كنند، هوشمندتر ميشوند. ولي پاسخ آنها بايد براساس همين صفر و يك باشد؛ چرا كه هيچ كس نميخواهد يك پاسخ غيرقطعي از كامپيوتر دريافت كند. هر چه رفتارهاي شخصيتهاي بازي بيشتر براساس سيستم فازي باشد، پيشبينيناپذيرتر و هوشمندانهتر خواهند بود. يعني ميتوانند در مقابل رفتارهاي مختلف شما و موقعيت محيط، رفتارهايي متفاوت نشان دهند.
انواع هوش مصنوعي
در بازيهاي كامپيوتري سه نوع هوش بيشتر از همه استفاده ميشوند كه به صورت خلاصه عبارتند از:
هوش مصنوعي رويدادگرا: اين هوش معمولترين نوع هوش مصنوعي است. رويداد ميتواند شامل هر چيزي اعم از اتفاقات بازي تا دستوراتي باشد كه كاربر به شخصيت مجازي خود ميدهد. براساس هر رويدادي كه در بازي انجام ميشود، يك واكنش هوشمندانه نيز روي ميدهد. در بازي كانتراسترايك دشمن شما نسبت به صدا حساس است و صداي دويدن شما را هم ميشنود. از اينرو بسته به موقعيت خود، يا به آهستگي پنهان ميشود، يا برميگردد و از راه ديگري به سوي شما ميآيد يا به سوي شما ميآيد و شليك ميكند.
هوش مصنوعي هدفگرا: اين نوع هوش مصنوعي از هوش مصنوعي رويدادگرا مستقل است. ولي هوش مصنوعي رويدادگرا ميتواند در طراحي يك بازي، هدفهاي موتور هوش مصنوعي هدفگرا را تامين كند. اين نوع هوش مصنوعي، هدفِ با ارزش بيشتر را برميگزيند و آن را با تقسيم به زيرهدفهاي كوچكتر، پردازش ميكند.
شايد در بازي كانتراسترايك زماني كه كامپيوتر هم كنترل هم تيميها و هم كنترل دشمنان شما را به عهده دارد، ديده باشيد كه وقتي با هم تيميهايتان به سوي دشمنان خود تيراندازي ميكنيد، آنها هم بيشتر به سوي شما شليك ميكنند تا ديگر همتيميهايتان؛ چرا كه شما بايد هدفهاي خواستهشده در بازي (مانند آزاد كردن گروگانها يا خنثي كردن بمب) را انجام دهيد. براي همين ارزش شما براي آنها بيشتر است.
محفظههاي سوراخ: اين روش تركيبي از دو روش گفته شده است. روش كار ساده است. دو محفظه داريد و چند نوع كار: فرار (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
نشاني [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
---------- Post added at 03:10 PM ---------- Previous post was at 03:07 PM ----------
بازي با هوش - بررسي هوشمصنوعي در بازيهاي كامپيوتري
اشاره :
در دنياي امروز يكي از مهمترين قسمتهاي علم پزشكي، طراحي و بازسازي اجزاي مختلف بدن است. حال اين سؤال مطرح است كه در دنيايي كه ديگر، مواردي مانند نقص عضو و از بين رفتن حالت هدايتي- الكتريكي قلب، فشار بالاي جمجمه و حتي انواع مختلف فلجهاي دست و پا، براي بيمار، كمتر محدودكننده است و تا حدودي ديگر يك نقيصه محسوب نميشود، بازسازيِ احساسات، عواطف و تفكرات چه جايي دارد؟ بشر تا چه ميزان توانسته است مسائل روحي خود را در نمونهاي آزمايشگاهي توليدكند؟ آيا ميتوان اميدوار بود كه در آينده گوشهاي از عواطف آدمي در يك ماشين، جمعآوري شود؟
شايد جواب اين سؤالات با پيشرفتهايي كه در بازسازيِ هوش در كامپيوتر شدهاست، در آينده تا حدودي دور از دسترس نباشد. هوشمصنوعي، بهويژه آنچه كه در بازيهاي كامپيوتري شاهد آن هستيم، روز به روز در حال نزديك شدن به مدل واقعي خود است. يك بازي كامپيوتري خوب، بازياي است كه هر نكتهاي را در اين دنياي مجازي بهتر و واقعيتر به دنياي حقيقي ربط دهد. به همين منظور داشتن حريفي قدرتمند و انساننما لازمه بازسازي هوش و تفكرات انساني است.
اين سؤال كه <حريف كامپيوتري شما چه قدر ميفهمد؟> امروزه قبل از انجام هر بازي به فكر بازيكنندهها ميآيد؛ زيرا قرار است قسمتي از وقت و زندگي او معطوف اين بازي شود و اگر حريفش قدرتمند نباشد، عملاً اين وقت هدر رفته است. درست مانند اين است كه يك قهرمان شطرنج با كسي كه اولين بار است اين بازي را انجام ميدهد روبهرو شود. پس در كنار داشتن گرافيك، صدا و محيط بازي خوب، داشتن هوشمصنوعي مناسب نيز براي يك بازي كامپيوتري از محاسن آن بازي بهحساب ميآيد.
در اين مقاله سعي شده است مفاهيم و كاربردهاي ابتدايي هوشمصنوعي در بازيهاي كامپيوتري شرح داده شود. گفتني است براي تهيه اين مقاله از مطالب سايتهاي codeproject و gameai نيز استفادهشده است.
عناصر هوشمصنوعي به كاررفته در بازيهاي كامپيوتري براي رسيدن به جايگاهي كه در حال حاضر در آن قرار دارند، راه زيادي را طي كردهاند. در ابتدا، سيستمهاي پيشرفته برپايه مجموعهاي از قوانين عمل ميكردند كه مستقيماً در كدهاي بازي نوشتهشده بودند يا به صورت متنهايي رفتاري كه توسط كدهايي خاص ترجمه ميشدند. تمام اين اعمال بهصورت مشترك برمبناي انتخاب متناسبي از فاكتورهاي تصادفي، صورت ميگرفت. اين زمان درست همزمان با تولد بازيهايي بهيادماندني و بينظير مانند River Raid ،Donkey Kong ،Boulder-Dash و بسياري از بازيهاي جذاب براي كاربران ماشينهاي هشتبيتي در دهه 1970 بود.
قدم ديگر در پروسه توسعه هوشمصنوعي، معرفي روشهاي ساده علوم كامپيوتري بود كه از ميان اين روشها ميتوان به روش Finite State Machine اشاره كرد كه هنوز محبوب است و به صورت محدود كماكان مورد استفاده قرار ميگيرد. اساس اين روش، برپايه توصيفِ رفتاريِ دشمناني بود كه در بازيها توسط كامپيوتر و عليه بازيكننده كنترل ميشدند. با توجه به نياز روزافزون بازيكنندهها، روند رشد بازيها نيز پيچيدهتر ميشد، و اين به لطف استفاده بيشتر از الگوريتمهاي پيشرفته كامپيوتري است. ظهور قلمرو بازيهاي RTS (استراتژيهاي بيدرنگ) موجب استفاده گسترده از الگوريتمهايي شد كه بهترين مسير را بين دو نقطه از نقشه اين نوع بازيها تعيين ميكردند.
از سوي ديگر، پيشرفتهاي فني سريع و افزايش استفاده از پردازشگرهاي قويتر در كامپيوترهاي خانگي نيز امكان استفاده گستردهتر از نرمافزارها براي استفاده از هوشمصنوعي در بازيها را فراهم ميكرد.
اولين مجموعه بازيهاي كامپيوتري و هوشمصنوعي به كاررفته در آنها بايد طوري طراحي ميشدند كه روي ماشينهاي ساده آن زمان قابل اجرا باشند: ماشينهايي كه اكثراً فركانسِ پردازشگرهايشان بيشتر از دومگاهرتز نبود. با آمدن كامپيوترهاي شخصي اوليه امكان استفاده از برنامهها و امكانات بهتر، ميسر شد.
بعد از اينكه پيسيهاي مجهز به پردازشگرهاي 386 و 486 به عنوان كامپيوترهاي استاندارد خانگي مورد استفاده قرار گرفتند، براي نويسندگان برنامهها هم امكانات گستردهتري فراهم شد و اين آغاز مسابقهاي بود براي سازندگان بازيهاي كامپيوتري. براي مدتي طولاني بهترين مقياس براي خوب بودن كيفيت يك بازيِ كامپيوتري، خوب بودن كيفيت گرافيكيِ آن بازي محسوب ميشد؛ گرچه بعدها اين مقياس تغيير كرد و تنها خوب بودن گرافيك، طراحي انيميشني كاراكترها و صداي بازي، نمايانگر بالابودن كيفيت بازي نبود. امروزه يكي از مهمترين عناصر بازيهاي كامپيوتري، بدون ترديد، <هوشمصنوعي> آن بازي شناخته ميشود.
جريان و پروسه ساخت يك بازي كامپيوتري نيز در طول اين سالها دستخوش تغييرات فراواني شده است. بهطور مثال، در گذشته طراحي هوشمصنوعي يك بازي تقريباً يك امر بياهميت انگاشته ميشد و طراحان بازيها ترجيح ميدادند مرحله وارد كردن هوشمصنوعيِ ناقص بازي را در مراحل پاياني تهيه بازي انجام دهند، ولي امروزه طراحي مدلهاي هوشمصنوعي و ارتباطي كه اين قسمت با ديگر اجزاي بازي خواهد داشت، يكي از مهمترين مراحل طراحي بازي به شمار ميرود. به طوري كه از ابتداي توليد بازي به آن فكر ميشود.
در واقع اهميت اين قسمت به قدري زياد است كه حداقل يكي از اعضاي برنامهنويسي از ابتداي توليد يك بازي به صورت تمام وقت استخدام ميشود تا بر مراحل توسعه و ساخت هوشمصنوعي بازي و ارتباط آن با ديگر قسمتها نظارت كامل داشته باشد.
در حال حاضر، با توجه به اينكه در هر خانهاي ميتوان يك كامپيوتر پنتيوم چهار با پردازشگري حدود سه تا چهارگيگاهرتز پيدا كرد، انتظار ميرود بازيهاي كامپيوتري از پيشرفتهترين و عظيمترين سيستمهاي هوشمصنوعي بهره بگيرند. سيستمهايي مانند شبكههاي عصبي، الگوريتمهاي ژنتيك و منطق فازي.
در عصرِ بازيهاي اينترنتي و شبكهاي، هوشمصنوعي در بازيهاي كامپيوتري هم وظايف جديد پيدا كرده است. يكي از اين وظايف اين است كه يك حريف كامپيوتري، با سبك و استراتژيِ بازي منحصر به خود، بايد از يك بازيكننده انساني كه در آن سوي ارتباط اينترنتي در حال بازي كردن است، قابل تمايز نباشد.
بازيهاي تأثيرگذار در هوشمصنوعي
هنگامي كه در مورد انقلاب هوشمصنوعي صحبت ميشود، بايد به بازيهاي مهمي كه در تاريخچه اين انقلاب سهم بسزايي داشتهاند نيز اشاره شود.
يكي از مهمترين اين بازيها كه هوشمصنوعي را در دهه 1990 ميلادي دگرگون ساخت، بيشك سري بازيهايWarCraft بود كه توسط شركت Blizzard ساخته شد. اين بازي اولين بازياي بود كه الگوريتمهاي مسيريابي را در هوشمصنوعي به كار ميبرد. يكي از اين الگوها مقياسهاي عالياي بود كه براي صدها واحد مشغول در صحنههاي عظيم جنگي اين بازي طراحي شدهبود. بازيِ SimCity كه توسط Maxis ساخته شد، اولين بازياي بود كه ثابت كرد كه ميشود در يك بازيِ كامپيوتري از فناوريهاي حيات مصنوعي استفاده كرد.
يكي ديگر از پيشرفتهاي هوشمصنوعي در بازيهاي كامپيوتري با بازي Black and White به وجود آمد كه توسطLionhead Studios در سال 2001 ساخته شد و در آن براي اولين بار، فناوريِ يادگيريِ شخصيتهاي هدايت شونده توسط كامپيوتر مورد استفاده قرار ميگرفت.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
هوشمصنوعي در بازيهاي تيراندازيِ اول شخص
بازيهاي تيراندازيِ اول شخص يا First Person Shooters معمولاً از سيستم هوشمصنوعي با ساختار لايهلايه استفاده ميكنند. لايههايي كه در قسمت زيرين قرار دارند، وظايف ابتدايي را به عهده دارند.
از اين وظايف ابتدايي ميتوان به تعيين بهترين مسير تا هدف (كه خود توسط لايههاي بالاييتر تعيين ميشود) و اجراي متناسب سكانسهاي انيميشنِ كاراكتر، اشاره كرد.
لايههاي بالاييتر مسئولِ اجرايِ برهانهاي تاكتيكي و انتخاب رفتاري است كه عنصر استفادهكننده از هوشمصنوعي (به طور مثال شخصيتهاي دشمن در بازيها) برطبق اين تاكتيك و استراتژي عمل ميكند.
سيستم مسيريابي معمولاً برپايه نمايشهاي هندسياي است كه دنياي بازي را شرح ميدهد. هر راس اين نمودارها نمايانگر محلي منطقي از بازي (مانند اتاقي از يك ساختمان يا قطعهاي از ميدان جنگ) محسوب ميشود. وقتي به شخصيتي دستور داده ميشود كه به نقطهاي از نقشه بازي برود، عوامل هوشمصنوعي با استفاده از نمودارها، نقاط ثانويه هدايتي (Subsequent Navigation Points) را به دست ميآورند و با هدايت پيدرپي اين شخصيت به طرف اين نقاط، نهايتاً آن را به نقطه هدف مشخص ميرسانند. در حين عبور از اين نقاط هدايتي، هوشمصنوعي همچنان وظيفه دارد از مسيرهاي منطقي براي رسيدن به نقطه بعدي استفاده كند و كاراكتر را از موانع متحرك يا ثابتي كه در مسير بين دو نقطه در سر راهش ظاهر مي شوند نيز عبور دهد. در شكل 1، نمايش مسيريابي را در بازيهاي RTS در تصويري ساده ميبينيد.
سپس سيستم گرافيكي وظيفه دارد اجراي مناسبي از سكانسهاي اجرا شده در سرعت معيني از انيميشن را با توجه به دستورات ارائهشده توسط هوشمصنوعي نمايش دهد. اين سيستم همچنين بايد بتواند سكانسهاي متحركِ مختلفي را براي اجزاي مختلف بدن شخصيتها اجرا كند. نمونهاي از اين سيستم را ميتوانيد در صحنهاي از يك بازي جنگي فرض كنيد كه در آن سربازي همزمان ميدود و به طرف دشمن نشانه ميگيرد، تيراندازي ميكند و اسلحه خود را در حين دويدن پر ميكند.
بازيهايي از اين دست اغلب از سيستم كينماتيك معكوس (Inverted Kinematics System) استفاده ميكنند. يك سيستم انيميشنيِ IK ميتواند به طور مناسب پارامترهاي موقعيتيابي محوري يك انيميشن را محاسبه كند. درنتيجه با وجود اين سيستم، دست يك شخصيت ميتواند جسمي را كه در درون آن است نگهدارد يا ميز، قفسه، شيئي را در بر ميگيرد كه روي آنها قرار دارد. وظايف لايههاي بالايي به كاررفته در هوشمصنوعي، استفاده مناسب از نوع رفتاري است كه براي هر موقعيت توسط كامپيوتر استفاده ميشود. بهطور مثال، در همان بازيِ جنگي اين لايهها، انتخاب ميكنند كه سربازي از سربازهاي دشمن در يك جا نگهباني كند، وارد نبرد شود، فرار كند يا به نقطهاي ديگر از نقشه برود تا دشمنش را پيدا كند.
هنگامي كه هوشمصنوعي تصميم گرفت كدام رفتار براي موقعيت ايجادشده بهتر است، يك لايه زيرين انتخاب ميشود كه بهترين تاكتيك را براي انجام اين تصميم انتخاب كند. بهطور نمونه، در مثال قبلي اگر هوشمصنوعي تصميم بگيرد كه سرباز وارد نبرد شود، اين لايه زيرين بهترين شيوه مبارزه را براي او تعيين ميكند. مثلاً تصميم ميگيرد كه او آرام آرام به شخصيت بازيكننده نزديك شود و به او تيراندازي كند، يا در گوشهاي پنهان شود و منتظر شود كه شخصيت بازيكننده به حوزه ديدش برسد و سپس بهطرفش تيراندازي كند يا اينكه به طرف او بدود و تيراندازي كند.
هوشمصنوعي در بازيهاي استراتژيِ بيدرنگ
در بازيهاي استراتژيِ بيدرنگ (Real Time Strategy) امكان تشخيص مدلها و لايههاي متعددِ هوشمصنوعي وجود دارد. يكي از اساسيترين اين مدلها يك سيستم مؤثرِ راهيابي براي كاراكتر است كه بعضي وقتها، در كسري از زمان، اين سيستم بايد جوابگوي مشكل حركت صدها كاراكتر روي نقشه اينگونه بازيها باشد. بايد توجه داشت كه مسيريابي اين سيستم چيزي فراتر از مسيريابي سادهاي است كه تنها كاراكتري را از نقطه A به Bميرساند؛ زيرا در ازدحامِ نقشه، مهمترين نكته در حركت، تشخيص مواجهاتِ اين واحدهاي كوچك در حين عبور بين دو نقطه با هم و متعاقب آن اداره آنها است به نحوي كه به هم برخورد نداشته باشند.
اين الگوريتمها معمولاً بر پايه نقشه بازي استوار است كه اين مسئله خود توسط عناصري گرافيكيِ رشتهمانند و چهارگوش معرفي ميشوند. اين رشتههاي مستطيلشكل توسط تورهايي شبكهاي، عوامل تصحيح شده از لحاظ اندازه را در محيط تعيين و معرفي ميكنند. در سطوح بالاتر سلسله مراتب هوشمصنوعي اين بازيها، ماژولهايي طراحي شده است كه وظيفه آنها تعيين مسائل اقتصاديِ بازي، توسعه و از همه مهمتر، مدلي براي آناليز نقشه بازي، است. اين همان ماجولي است كه نوع زمين هر ناحيه از نقشه و عناصري كه روي آن ساخته ميشوند را آناليز ميكند. بهطور مثال، در محلي از نقشه كه دريا قرار دارد، اين ماجول اجازه ميدهد ناوگان دريايي ساخته شود. اين ماجول زمان انجام ساختن يك شهر يا ديوارهاي حفاظتي و باروها را نيز تعيين ميكند.
هوشمصنوعي در بازيهاي ورزشي
اساساً، در اكثر بازيهاي ورزشي، ما با مقدار زيادي تقلب از جانب هوشمصنوعي روبهرو هستيم! بهطور مثال بازيهاي ماشينسواري را در نظر بگيريد. هوش مصنوعي، از كل اشكال هندسي نقشه بازي، فقط چندضلعيهايي را شناسايي ميكند كه متعلق به جادهاي است كه حريف كامپيوتري در آن مشغول راندن است، و كاري به ديگر جاهاي نقشه بازي (كه همان جاده باشد) ندارد. در نظر بگيريد كه كامپيوتر توانايي انجام دو نوع رانندگي در پيچهاي تعبيه شده در بازي را دارد: نوع اول كه در غياب حريف ديگر رخ ميدهد، نمايانگر بهترين رانندگي در اين پيچها است و نوع دوم زماني است كه او ميخواهد در اين پيچ، همزمان از حريفش سبقت بگيرد.
در اين مثال كل جاده به سكتورهاي متناسب كوچكي تقسيمبندي ميشود و پارامترهاي سطح جاده به مقادير عدديِ قابل ترجمه تبديل ميشوند و مسير هر جزء كوچك جاده محاسبه ميشود. سپس با تركيب اين اجزاي، بهصورت بصري، كل جاده بازسازي ميشود و مجاورت ماشينها روي آن با هم نيز در اين تركيب نمايشداده ميشود.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
عملاً كامپيوتر ميداند كه در پيچ بايد سرعتش را كم كند؛ زيرا در حال پيچيدن اگر سرعتش از حدي بيشتر باشد، كنترل ماشين را از دست خواهد داد. حال بسته به اينكه كامپيوتر از حريف انسانيش عقبتر است يا جلوتر، در نوع پيچيدن در اين گونه صحنهها تصميمگيري ميكند.
اگر او عقبتر باشد، سعي ميكند با روش بهينهسازيِ پيچيدن كه شامل بريدن پيچها و حركت از داخليترين مسير است، كمي مسافت عقبافتاده را جبران كند.
در غيراين صورت، به روش عادي ميپيچد. نوع تقسيمبندي مسير جاده توسط هوشمصنوعي و دو نوع پيچيدن اتومبيل كامپيوتر در پيچها را در شكل شماره2 ميبينيد.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نوع ديگر تقلب كامپيوتر در اين بازيها هم در استفاده از راههاي ميانبر ديده ميشود.
هنگامي كه كامپيوتر از حريف انساني خود عقب ميافتد، بيشترين استفاده را از اين گونه راهها كه مسير را برايش كوتاهتر ميكند، خواهد داشت. در شكل 3 نمونهاي از اين شيوه را ميبينيد.
با توضيحاتي كه داده شد، تجاربي كه از بازيهاي ماشينسواري تا به حال كسب كردهايد، كمي ملموستر ميشود.
به طور مثال، در بازياي مانند Need For Speed كمتر پيش ميآيد كه مسافت زيادي از بهترين حريف خود جلوتر باشيد.
زمانهايي پيش ميآيد كه اين حريف شما به علت تصادف يا منحرف شدن از جاده، مسافت زيادي از شما عقب ميماند، ولي با پيگيري او روي نقشه كوچك بازي ميبينيد كه با سرعتي غيرمنطقي به شما نزديك و نزديكتر ميشود. در واقع چيزي كه فاصله او را با شما كم ميكند سرعت زياد او نيست، بلكه نوع بهينهسازي رانندگي او است.
دو خصيصه مهم ديگر هوشمصنوعي در اين نوع بازيها عبارتند از:
● توانايي آناليز سطوح جاده براي شناسايي موانعي كه روي آن قرار دارند.
● هماهنگيِ محكمي كه نوع رانندگي كامپيوتر را با مدل فيزيكي طراحي شده بازي تنظيم ميكند.
مدل فيزيكي اين امكان را فراهم ميكند كه هنگامي كه اتومبيل كامپيوتر بنا به هر دليلي، از جاده منحرف شد، هوشمصنوعي به طرز مناسب و منطقياي كنترل آن را مجدداً به دست بگيرد تا او از كورس رقابت بيشتر عقب نماند.
تقلبهاي مشابه موارد ذكرشده در ديگر بازيهاي ورزشي نيز ديده ميشود. براي همين، در بازيهاي FIFAميبينيد كه هنگامي كه كامپيوتر از شما عقب است، بهتر بازي ميكند. در اكثر مواقع يك بازيكن كامپيوتري در اين نوع بازيها، قبل از اين كه حركت ورزشي خود را انجام دهد، نقشهاي از حركت خود را بهصورت آماده و تعيين شده در اختيار دارد. اين حركت بسته به اينكه از حريف انسانيش جلو است يا عقب تعيين شده است.
بهطور مثال، در بازيهاي فيفا، هنگامي كه بازيكني قصد دارد به طرف دروازه شما شوت كند، سرنوشت اين شوت از قبل مشخص است. البته عكسالعمل شما نيز ميتواند روي آن تأثير گذار باشد و همين مسئله باعث پيروزي انسان بر كامپيوتر ميشود. درست مانند شطرنجبازي كه ميتواند بهترين حريف كامپيوتري خود را شكست دهد، اينجا هم شما با عكسالعملهاي بهموقع خود ميتوانيد هوشمصنوعي كامپيوتر را با هوش طبيعي و كاملتر خود شكست دهيد.
هوشمصنوعي در بازيهايي كه برد و باخت آن توسط داوري انجام ميشود (مانند بوكس در صورتي كه حريف ناكاوت نشود) نيز توسط قوانيني كه از قبل براي اعمال آن ورزش در هوشمصنوعي تعبيه ميشود، محاسبه ميشود و برنده را مشخص ميكند.
بعد از انجام تمام مراحل گفته شده، سناريوي از قبل تعيينشدهِ يك بازيكنِ كنترلشده توسط كامپيوتر، به وسيله سيستم انيميشن شخصيتها بازسازي ميشود.
محبوبترين الگوريتمهاي هوشمصنوعي به كار رفته در بازيهاي كامپيوتري
در ادامه اين مقاله دو نمونه از محبوبترين الگوريتمهاي هوشمصنوعي معرفي ميشود كه به وفور از آنها در طراحي هوشمصنوعي بازيهاي كامپيوتري استفاده ميشود. با دانستن مطالبي در مورد اين الگوريتمها، شايد شما هم ترغيب شويد با طراحي يكي از آنها، يك بازيِ FPS و RTS ساده بسازيد. اولين الگوريتم از اين دست،
*A نام دارد كه سلسله جستوجوهاي سريعي را براي پيدا كردن بهترين مسير بين دو نقطه انجام ميدهد. الگوي ديگر ماشين با حالات محدود (Finite State Machine) نام دارد كه بسيار مورد استفاده قرار ميگيرد و وظيفهاش آمادهكردن سناريوهاي رفتاري براي حريفاني است كه توسط كامپيوتر در بازي كنترل ميشوند. در مرحله بعدي اين رفتارها توسط ماژولهاي سطوح پايين، مانند ماجول رهيابي، پردازش ميشوند.
---------- Post added at 03:12 PM ---------- Previous post was at 03:12 PM ----------
منبع :
artificial.ir
هوش مصنوعي
زماني كه از هوش مصنوعي صحبت ميكنيم در حقيقت در حال صحبت در مورد دنياي الگوريتمي است و بازي هاي ما در صورت نداشتن هوش مصنوعي مناسب به نما هاي بي جان تبديل خواهند شد .
اربرد هوش مصنوعي
هدف هوش مصنوعي نزديك نمودن رفتار و پاسخ يك سيستم كامپيوتري به الگوهايي است كه انسان براساس آنها رفتار ميكند و پاسخ ميدهد. گاه سيستمهايي طراحي ميشوند كه قدرت تجزيه و تحليل آنها از انسان بيشتر است. ولي باز از الگوهاي ما استفاده ميكنند. هوش مصنوعي با سيستم فازي يا سيستمي كه انسان برطبق آن تصميم ميگيرد، رابطه تنگاتنگي در اين سيستم برخلاف سيستم صفر و يك ديجيتال، ميتوان به يك متغير مقداري كمتر از يك و بيشتر از صفر نيز داد.
براي نمونه ميخواهيد يك بازي كامپيوتري را از ميان چندين بازي مورد علاقه خود بخريد و از آنجا كه مقدار پول شما مشخص است، ميخواهيد فقط يك بازي را برگزينيد. پس شما به بازيهاي مورد علاقه خود، امتيازي بين صفر و يك ميدهيد. ارزش صفر براي بازيهايي است كه كمتر آنها را دوست داريد و هر چه مقدار عدديِ بيشتري به آن بازي بدهيد، بيشتر آن را دوست داريد و از ميان آنها بازياي كه بيشترين ارزش را براي شما دارد، انتخاب ميكنيد.
از ديد فروشنده، شما با سيستم صفر و يك پاسخ دادهايد و بازيهاي ديگر را انتخاب نكردهايد. هرچند در واقع شما فازي فكر كردهايد، ولي با منطق صفر و يك پاسخ دادهايد. اگر كامپيوترها فازيتر تحليل كنند، هوشمندتر ميشوند. ولي پاسخ آنها بايد براساس همين صفر و يك باشد؛ چرا كه هيچ كس نميخواهد يك پاسخ غيرقطعي از كامپيوتر دريافت كند. هر چه رفتارهاي شخصيتهاي بازي بيشتر براساس سيستم فازي باشد، پيشبينيناپذيرتر و هوشمندانهتر خواهند بود. يعني ميتوانند در مقابل رفتارهاي مختلف شما و موقعيت محيط، رفتارهايي متفاوت نشان دهند.
انواع هوش مصنوعي
در بازيهاي كامپيوتري سه نوع هوش بيشتر از همه استفاده ميشوند كه به صورت خلاصه عبارتند از:
هوش مصنوعي رويدادگرا: اين هوش معمولترين نوع هوش مصنوعي است. رويداد ميتواند شامل هر چيزي اعم از اتفاقات بازي تا دستوراتي باشد كه كاربر به شخصيت مجازي خود ميدهد. براساس هر رويدادي كه در بازي انجام ميشود، يك واكنش هوشمندانه نيز روي ميدهد. در بازي كانتراسترايك دشمن شما نسبت به صدا حساس است و صداي دويدن شما را هم ميشنود. از اينرو بسته به موقعيت خود، يا به آهستگي پنهان ميشود، يا برميگردد و از راه ديگري به سوي شما ميآيد يا به سوي شما ميآيد و شليك ميكند.
هوش مصنوعي هدفگرا: اين نوع هوش مصنوعي از هوش مصنوعي رويدادگرا مستقل است. ولي هوش مصنوعي رويدادگرا ميتواند در طراحي يك بازي، هدفهاي موتور هوش مصنوعي هدفگرا را تامين كند. اين نوع هوش مصنوعي، هدفِ با ارزش بيشتر را برميگزيند و آن را با تقسيم به زيرهدفهاي كوچكتر، پردازش ميكند.
شايد در بازي كانتراسترايك زماني كه كامپيوتر هم كنترل هم تيميها و هم كنترل دشمنان شما را به عهده دارد، ديده باشيد كه وقتي با هم تيميهايتان به سوي دشمنان خود تيراندازي ميكنيد، آنها هم بيشتر به سوي شما شليك ميكنند تا ديگر همتيميهايتان؛ چرا كه شما بايد هدفهاي خواستهشده در بازي (مانند آزاد كردن گروگانها يا خنثي كردن بمب) را انجام دهيد. براي همين ارزش شما براي آنها بيشتر است.
محفظههاي سوراخ: اين روش تركيبي از دو روش گفته شده است. روش كار ساده است. دو محفظه داريد و چند نوع كار: فرار (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
نشاني [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
---------- Post added at 03:10 PM ---------- Previous post was at 03:07 PM ----------
بازي با هوش - بررسي هوشمصنوعي در بازيهاي كامپيوتري
اشاره :
در دنياي امروز يكي از مهمترين قسمتهاي علم پزشكي، طراحي و بازسازي اجزاي مختلف بدن است. حال اين سؤال مطرح است كه در دنيايي كه ديگر، مواردي مانند نقص عضو و از بين رفتن حالت هدايتي- الكتريكي قلب، فشار بالاي جمجمه و حتي انواع مختلف فلجهاي دست و پا، براي بيمار، كمتر محدودكننده است و تا حدودي ديگر يك نقيصه محسوب نميشود، بازسازيِ احساسات، عواطف و تفكرات چه جايي دارد؟ بشر تا چه ميزان توانسته است مسائل روحي خود را در نمونهاي آزمايشگاهي توليدكند؟ آيا ميتوان اميدوار بود كه در آينده گوشهاي از عواطف آدمي در يك ماشين، جمعآوري شود؟
شايد جواب اين سؤالات با پيشرفتهايي كه در بازسازيِ هوش در كامپيوتر شدهاست، در آينده تا حدودي دور از دسترس نباشد. هوشمصنوعي، بهويژه آنچه كه در بازيهاي كامپيوتري شاهد آن هستيم، روز به روز در حال نزديك شدن به مدل واقعي خود است. يك بازي كامپيوتري خوب، بازياي است كه هر نكتهاي را در اين دنياي مجازي بهتر و واقعيتر به دنياي حقيقي ربط دهد. به همين منظور داشتن حريفي قدرتمند و انساننما لازمه بازسازي هوش و تفكرات انساني است.
اين سؤال كه <حريف كامپيوتري شما چه قدر ميفهمد؟> امروزه قبل از انجام هر بازي به فكر بازيكنندهها ميآيد؛ زيرا قرار است قسمتي از وقت و زندگي او معطوف اين بازي شود و اگر حريفش قدرتمند نباشد، عملاً اين وقت هدر رفته است. درست مانند اين است كه يك قهرمان شطرنج با كسي كه اولين بار است اين بازي را انجام ميدهد روبهرو شود. پس در كنار داشتن گرافيك، صدا و محيط بازي خوب، داشتن هوشمصنوعي مناسب نيز براي يك بازي كامپيوتري از محاسن آن بازي بهحساب ميآيد.
در اين مقاله سعي شده است مفاهيم و كاربردهاي ابتدايي هوشمصنوعي در بازيهاي كامپيوتري شرح داده شود. گفتني است براي تهيه اين مقاله از مطالب سايتهاي codeproject و gameai نيز استفادهشده است.
عناصر هوشمصنوعي به كاررفته در بازيهاي كامپيوتري براي رسيدن به جايگاهي كه در حال حاضر در آن قرار دارند، راه زيادي را طي كردهاند. در ابتدا، سيستمهاي پيشرفته برپايه مجموعهاي از قوانين عمل ميكردند كه مستقيماً در كدهاي بازي نوشتهشده بودند يا به صورت متنهايي رفتاري كه توسط كدهايي خاص ترجمه ميشدند. تمام اين اعمال بهصورت مشترك برمبناي انتخاب متناسبي از فاكتورهاي تصادفي، صورت ميگرفت. اين زمان درست همزمان با تولد بازيهايي بهيادماندني و بينظير مانند River Raid ،Donkey Kong ،Boulder-Dash و بسياري از بازيهاي جذاب براي كاربران ماشينهاي هشتبيتي در دهه 1970 بود.
قدم ديگر در پروسه توسعه هوشمصنوعي، معرفي روشهاي ساده علوم كامپيوتري بود كه از ميان اين روشها ميتوان به روش Finite State Machine اشاره كرد كه هنوز محبوب است و به صورت محدود كماكان مورد استفاده قرار ميگيرد. اساس اين روش، برپايه توصيفِ رفتاريِ دشمناني بود كه در بازيها توسط كامپيوتر و عليه بازيكننده كنترل ميشدند. با توجه به نياز روزافزون بازيكنندهها، روند رشد بازيها نيز پيچيدهتر ميشد، و اين به لطف استفاده بيشتر از الگوريتمهاي پيشرفته كامپيوتري است. ظهور قلمرو بازيهاي RTS (استراتژيهاي بيدرنگ) موجب استفاده گسترده از الگوريتمهايي شد كه بهترين مسير را بين دو نقطه از نقشه اين نوع بازيها تعيين ميكردند.
از سوي ديگر، پيشرفتهاي فني سريع و افزايش استفاده از پردازشگرهاي قويتر در كامپيوترهاي خانگي نيز امكان استفاده گستردهتر از نرمافزارها براي استفاده از هوشمصنوعي در بازيها را فراهم ميكرد.
اولين مجموعه بازيهاي كامپيوتري و هوشمصنوعي به كاررفته در آنها بايد طوري طراحي ميشدند كه روي ماشينهاي ساده آن زمان قابل اجرا باشند: ماشينهايي كه اكثراً فركانسِ پردازشگرهايشان بيشتر از دومگاهرتز نبود. با آمدن كامپيوترهاي شخصي اوليه امكان استفاده از برنامهها و امكانات بهتر، ميسر شد.
بعد از اينكه پيسيهاي مجهز به پردازشگرهاي 386 و 486 به عنوان كامپيوترهاي استاندارد خانگي مورد استفاده قرار گرفتند، براي نويسندگان برنامهها هم امكانات گستردهتري فراهم شد و اين آغاز مسابقهاي بود براي سازندگان بازيهاي كامپيوتري. براي مدتي طولاني بهترين مقياس براي خوب بودن كيفيت يك بازيِ كامپيوتري، خوب بودن كيفيت گرافيكيِ آن بازي محسوب ميشد؛ گرچه بعدها اين مقياس تغيير كرد و تنها خوب بودن گرافيك، طراحي انيميشني كاراكترها و صداي بازي، نمايانگر بالابودن كيفيت بازي نبود. امروزه يكي از مهمترين عناصر بازيهاي كامپيوتري، بدون ترديد، <هوشمصنوعي> آن بازي شناخته ميشود.
جريان و پروسه ساخت يك بازي كامپيوتري نيز در طول اين سالها دستخوش تغييرات فراواني شده است. بهطور مثال، در گذشته طراحي هوشمصنوعي يك بازي تقريباً يك امر بياهميت انگاشته ميشد و طراحان بازيها ترجيح ميدادند مرحله وارد كردن هوشمصنوعيِ ناقص بازي را در مراحل پاياني تهيه بازي انجام دهند، ولي امروزه طراحي مدلهاي هوشمصنوعي و ارتباطي كه اين قسمت با ديگر اجزاي بازي خواهد داشت، يكي از مهمترين مراحل طراحي بازي به شمار ميرود. به طوري كه از ابتداي توليد بازي به آن فكر ميشود.
در واقع اهميت اين قسمت به قدري زياد است كه حداقل يكي از اعضاي برنامهنويسي از ابتداي توليد يك بازي به صورت تمام وقت استخدام ميشود تا بر مراحل توسعه و ساخت هوشمصنوعي بازي و ارتباط آن با ديگر قسمتها نظارت كامل داشته باشد.
در حال حاضر، با توجه به اينكه در هر خانهاي ميتوان يك كامپيوتر پنتيوم چهار با پردازشگري حدود سه تا چهارگيگاهرتز پيدا كرد، انتظار ميرود بازيهاي كامپيوتري از پيشرفتهترين و عظيمترين سيستمهاي هوشمصنوعي بهره بگيرند. سيستمهايي مانند شبكههاي عصبي، الگوريتمهاي ژنتيك و منطق فازي.
در عصرِ بازيهاي اينترنتي و شبكهاي، هوشمصنوعي در بازيهاي كامپيوتري هم وظايف جديد پيدا كرده است. يكي از اين وظايف اين است كه يك حريف كامپيوتري، با سبك و استراتژيِ بازي منحصر به خود، بايد از يك بازيكننده انساني كه در آن سوي ارتباط اينترنتي در حال بازي كردن است، قابل تمايز نباشد.
بازيهاي تأثيرگذار در هوشمصنوعي
هنگامي كه در مورد انقلاب هوشمصنوعي صحبت ميشود، بايد به بازيهاي مهمي كه در تاريخچه اين انقلاب سهم بسزايي داشتهاند نيز اشاره شود.
يكي از مهمترين اين بازيها كه هوشمصنوعي را در دهه 1990 ميلادي دگرگون ساخت، بيشك سري بازيهايWarCraft بود كه توسط شركت Blizzard ساخته شد. اين بازي اولين بازياي بود كه الگوريتمهاي مسيريابي را در هوشمصنوعي به كار ميبرد. يكي از اين الگوها مقياسهاي عالياي بود كه براي صدها واحد مشغول در صحنههاي عظيم جنگي اين بازي طراحي شدهبود. بازيِ SimCity كه توسط Maxis ساخته شد، اولين بازياي بود كه ثابت كرد كه ميشود در يك بازيِ كامپيوتري از فناوريهاي حيات مصنوعي استفاده كرد.
يكي ديگر از پيشرفتهاي هوشمصنوعي در بازيهاي كامپيوتري با بازي Black and White به وجود آمد كه توسطLionhead Studios در سال 2001 ساخته شد و در آن براي اولين بار، فناوريِ يادگيريِ شخصيتهاي هدايت شونده توسط كامپيوتر مورد استفاده قرار ميگرفت.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
هوشمصنوعي در بازيهاي تيراندازيِ اول شخص
بازيهاي تيراندازيِ اول شخص يا First Person Shooters معمولاً از سيستم هوشمصنوعي با ساختار لايهلايه استفاده ميكنند. لايههايي كه در قسمت زيرين قرار دارند، وظايف ابتدايي را به عهده دارند.
از اين وظايف ابتدايي ميتوان به تعيين بهترين مسير تا هدف (كه خود توسط لايههاي بالاييتر تعيين ميشود) و اجراي متناسب سكانسهاي انيميشنِ كاراكتر، اشاره كرد.
لايههاي بالاييتر مسئولِ اجرايِ برهانهاي تاكتيكي و انتخاب رفتاري است كه عنصر استفادهكننده از هوشمصنوعي (به طور مثال شخصيتهاي دشمن در بازيها) برطبق اين تاكتيك و استراتژي عمل ميكند.
سيستم مسيريابي معمولاً برپايه نمايشهاي هندسياي است كه دنياي بازي را شرح ميدهد. هر راس اين نمودارها نمايانگر محلي منطقي از بازي (مانند اتاقي از يك ساختمان يا قطعهاي از ميدان جنگ) محسوب ميشود. وقتي به شخصيتي دستور داده ميشود كه به نقطهاي از نقشه بازي برود، عوامل هوشمصنوعي با استفاده از نمودارها، نقاط ثانويه هدايتي (Subsequent Navigation Points) را به دست ميآورند و با هدايت پيدرپي اين شخصيت به طرف اين نقاط، نهايتاً آن را به نقطه هدف مشخص ميرسانند. در حين عبور از اين نقاط هدايتي، هوشمصنوعي همچنان وظيفه دارد از مسيرهاي منطقي براي رسيدن به نقطه بعدي استفاده كند و كاراكتر را از موانع متحرك يا ثابتي كه در مسير بين دو نقطه در سر راهش ظاهر مي شوند نيز عبور دهد. در شكل 1، نمايش مسيريابي را در بازيهاي RTS در تصويري ساده ميبينيد.
سپس سيستم گرافيكي وظيفه دارد اجراي مناسبي از سكانسهاي اجرا شده در سرعت معيني از انيميشن را با توجه به دستورات ارائهشده توسط هوشمصنوعي نمايش دهد. اين سيستم همچنين بايد بتواند سكانسهاي متحركِ مختلفي را براي اجزاي مختلف بدن شخصيتها اجرا كند. نمونهاي از اين سيستم را ميتوانيد در صحنهاي از يك بازي جنگي فرض كنيد كه در آن سربازي همزمان ميدود و به طرف دشمن نشانه ميگيرد، تيراندازي ميكند و اسلحه خود را در حين دويدن پر ميكند.
بازيهايي از اين دست اغلب از سيستم كينماتيك معكوس (Inverted Kinematics System) استفاده ميكنند. يك سيستم انيميشنيِ IK ميتواند به طور مناسب پارامترهاي موقعيتيابي محوري يك انيميشن را محاسبه كند. درنتيجه با وجود اين سيستم، دست يك شخصيت ميتواند جسمي را كه در درون آن است نگهدارد يا ميز، قفسه، شيئي را در بر ميگيرد كه روي آنها قرار دارد. وظايف لايههاي بالايي به كاررفته در هوشمصنوعي، استفاده مناسب از نوع رفتاري است كه براي هر موقعيت توسط كامپيوتر استفاده ميشود. بهطور مثال، در همان بازيِ جنگي اين لايهها، انتخاب ميكنند كه سربازي از سربازهاي دشمن در يك جا نگهباني كند، وارد نبرد شود، فرار كند يا به نقطهاي ديگر از نقشه برود تا دشمنش را پيدا كند.
هنگامي كه هوشمصنوعي تصميم گرفت كدام رفتار براي موقعيت ايجادشده بهتر است، يك لايه زيرين انتخاب ميشود كه بهترين تاكتيك را براي انجام اين تصميم انتخاب كند. بهطور نمونه، در مثال قبلي اگر هوشمصنوعي تصميم بگيرد كه سرباز وارد نبرد شود، اين لايه زيرين بهترين شيوه مبارزه را براي او تعيين ميكند. مثلاً تصميم ميگيرد كه او آرام آرام به شخصيت بازيكننده نزديك شود و به او تيراندازي كند، يا در گوشهاي پنهان شود و منتظر شود كه شخصيت بازيكننده به حوزه ديدش برسد و سپس بهطرفش تيراندازي كند يا اينكه به طرف او بدود و تيراندازي كند.
هوشمصنوعي در بازيهاي استراتژيِ بيدرنگ
در بازيهاي استراتژيِ بيدرنگ (Real Time Strategy) امكان تشخيص مدلها و لايههاي متعددِ هوشمصنوعي وجود دارد. يكي از اساسيترين اين مدلها يك سيستم مؤثرِ راهيابي براي كاراكتر است كه بعضي وقتها، در كسري از زمان، اين سيستم بايد جوابگوي مشكل حركت صدها كاراكتر روي نقشه اينگونه بازيها باشد. بايد توجه داشت كه مسيريابي اين سيستم چيزي فراتر از مسيريابي سادهاي است كه تنها كاراكتري را از نقطه A به Bميرساند؛ زيرا در ازدحامِ نقشه، مهمترين نكته در حركت، تشخيص مواجهاتِ اين واحدهاي كوچك در حين عبور بين دو نقطه با هم و متعاقب آن اداره آنها است به نحوي كه به هم برخورد نداشته باشند.
اين الگوريتمها معمولاً بر پايه نقشه بازي استوار است كه اين مسئله خود توسط عناصري گرافيكيِ رشتهمانند و چهارگوش معرفي ميشوند. اين رشتههاي مستطيلشكل توسط تورهايي شبكهاي، عوامل تصحيح شده از لحاظ اندازه را در محيط تعيين و معرفي ميكنند. در سطوح بالاتر سلسله مراتب هوشمصنوعي اين بازيها، ماژولهايي طراحي شده است كه وظيفه آنها تعيين مسائل اقتصاديِ بازي، توسعه و از همه مهمتر، مدلي براي آناليز نقشه بازي، است. اين همان ماجولي است كه نوع زمين هر ناحيه از نقشه و عناصري كه روي آن ساخته ميشوند را آناليز ميكند. بهطور مثال، در محلي از نقشه كه دريا قرار دارد، اين ماجول اجازه ميدهد ناوگان دريايي ساخته شود. اين ماجول زمان انجام ساختن يك شهر يا ديوارهاي حفاظتي و باروها را نيز تعيين ميكند.
هوشمصنوعي در بازيهاي ورزشي
اساساً، در اكثر بازيهاي ورزشي، ما با مقدار زيادي تقلب از جانب هوشمصنوعي روبهرو هستيم! بهطور مثال بازيهاي ماشينسواري را در نظر بگيريد. هوش مصنوعي، از كل اشكال هندسي نقشه بازي، فقط چندضلعيهايي را شناسايي ميكند كه متعلق به جادهاي است كه حريف كامپيوتري در آن مشغول راندن است، و كاري به ديگر جاهاي نقشه بازي (كه همان جاده باشد) ندارد. در نظر بگيريد كه كامپيوتر توانايي انجام دو نوع رانندگي در پيچهاي تعبيه شده در بازي را دارد: نوع اول كه در غياب حريف ديگر رخ ميدهد، نمايانگر بهترين رانندگي در اين پيچها است و نوع دوم زماني است كه او ميخواهد در اين پيچ، همزمان از حريفش سبقت بگيرد.
در اين مثال كل جاده به سكتورهاي متناسب كوچكي تقسيمبندي ميشود و پارامترهاي سطح جاده به مقادير عدديِ قابل ترجمه تبديل ميشوند و مسير هر جزء كوچك جاده محاسبه ميشود. سپس با تركيب اين اجزاي، بهصورت بصري، كل جاده بازسازي ميشود و مجاورت ماشينها روي آن با هم نيز در اين تركيب نمايشداده ميشود.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
عملاً كامپيوتر ميداند كه در پيچ بايد سرعتش را كم كند؛ زيرا در حال پيچيدن اگر سرعتش از حدي بيشتر باشد، كنترل ماشين را از دست خواهد داد. حال بسته به اينكه كامپيوتر از حريف انسانيش عقبتر است يا جلوتر، در نوع پيچيدن در اين گونه صحنهها تصميمگيري ميكند.
اگر او عقبتر باشد، سعي ميكند با روش بهينهسازيِ پيچيدن كه شامل بريدن پيچها و حركت از داخليترين مسير است، كمي مسافت عقبافتاده را جبران كند.
در غيراين صورت، به روش عادي ميپيچد. نوع تقسيمبندي مسير جاده توسط هوشمصنوعي و دو نوع پيچيدن اتومبيل كامپيوتر در پيچها را در شكل شماره2 ميبينيد.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نوع ديگر تقلب كامپيوتر در اين بازيها هم در استفاده از راههاي ميانبر ديده ميشود.
هنگامي كه كامپيوتر از حريف انساني خود عقب ميافتد، بيشترين استفاده را از اين گونه راهها كه مسير را برايش كوتاهتر ميكند، خواهد داشت. در شكل 3 نمونهاي از اين شيوه را ميبينيد.
با توضيحاتي كه داده شد، تجاربي كه از بازيهاي ماشينسواري تا به حال كسب كردهايد، كمي ملموستر ميشود.
به طور مثال، در بازياي مانند Need For Speed كمتر پيش ميآيد كه مسافت زيادي از بهترين حريف خود جلوتر باشيد.
زمانهايي پيش ميآيد كه اين حريف شما به علت تصادف يا منحرف شدن از جاده، مسافت زيادي از شما عقب ميماند، ولي با پيگيري او روي نقشه كوچك بازي ميبينيد كه با سرعتي غيرمنطقي به شما نزديك و نزديكتر ميشود. در واقع چيزي كه فاصله او را با شما كم ميكند سرعت زياد او نيست، بلكه نوع بهينهسازي رانندگي او است.
دو خصيصه مهم ديگر هوشمصنوعي در اين نوع بازيها عبارتند از:
● توانايي آناليز سطوح جاده براي شناسايي موانعي كه روي آن قرار دارند.
● هماهنگيِ محكمي كه نوع رانندگي كامپيوتر را با مدل فيزيكي طراحي شده بازي تنظيم ميكند.
مدل فيزيكي اين امكان را فراهم ميكند كه هنگامي كه اتومبيل كامپيوتر بنا به هر دليلي، از جاده منحرف شد، هوشمصنوعي به طرز مناسب و منطقياي كنترل آن را مجدداً به دست بگيرد تا او از كورس رقابت بيشتر عقب نماند.
تقلبهاي مشابه موارد ذكرشده در ديگر بازيهاي ورزشي نيز ديده ميشود. براي همين، در بازيهاي FIFAميبينيد كه هنگامي كه كامپيوتر از شما عقب است، بهتر بازي ميكند. در اكثر مواقع يك بازيكن كامپيوتري در اين نوع بازيها، قبل از اين كه حركت ورزشي خود را انجام دهد، نقشهاي از حركت خود را بهصورت آماده و تعيين شده در اختيار دارد. اين حركت بسته به اينكه از حريف انسانيش جلو است يا عقب تعيين شده است.
بهطور مثال، در بازيهاي فيفا، هنگامي كه بازيكني قصد دارد به طرف دروازه شما شوت كند، سرنوشت اين شوت از قبل مشخص است. البته عكسالعمل شما نيز ميتواند روي آن تأثير گذار باشد و همين مسئله باعث پيروزي انسان بر كامپيوتر ميشود. درست مانند شطرنجبازي كه ميتواند بهترين حريف كامپيوتري خود را شكست دهد، اينجا هم شما با عكسالعملهاي بهموقع خود ميتوانيد هوشمصنوعي كامپيوتر را با هوش طبيعي و كاملتر خود شكست دهيد.
هوشمصنوعي در بازيهايي كه برد و باخت آن توسط داوري انجام ميشود (مانند بوكس در صورتي كه حريف ناكاوت نشود) نيز توسط قوانيني كه از قبل براي اعمال آن ورزش در هوشمصنوعي تعبيه ميشود، محاسبه ميشود و برنده را مشخص ميكند.
بعد از انجام تمام مراحل گفته شده، سناريوي از قبل تعيينشدهِ يك بازيكنِ كنترلشده توسط كامپيوتر، به وسيله سيستم انيميشن شخصيتها بازسازي ميشود.
محبوبترين الگوريتمهاي هوشمصنوعي به كار رفته در بازيهاي كامپيوتري
در ادامه اين مقاله دو نمونه از محبوبترين الگوريتمهاي هوشمصنوعي معرفي ميشود كه به وفور از آنها در طراحي هوشمصنوعي بازيهاي كامپيوتري استفاده ميشود. با دانستن مطالبي در مورد اين الگوريتمها، شايد شما هم ترغيب شويد با طراحي يكي از آنها، يك بازيِ FPS و RTS ساده بسازيد. اولين الگوريتم از اين دست،
*A نام دارد كه سلسله جستوجوهاي سريعي را براي پيدا كردن بهترين مسير بين دو نقطه انجام ميدهد. الگوي ديگر ماشين با حالات محدود (Finite State Machine) نام دارد كه بسيار مورد استفاده قرار ميگيرد و وظيفهاش آمادهكردن سناريوهاي رفتاري براي حريفاني است كه توسط كامپيوتر در بازي كنترل ميشوند. در مرحله بعدي اين رفتارها توسط ماژولهاي سطوح پايين، مانند ماجول رهيابي، پردازش ميشوند.
---------- Post added at 03:12 PM ---------- Previous post was at 03:12 PM ----------
منبع :
artificial.ir