کاربرد هوش مصنوعی در طراحی بازی ها
مقدمه ای بر نحوه ی کاربرد هوش مصنوعی در بازی
حتما در دوران کودکی بازی
O - X
را انجام دادید . به طور مثال شما با حرف
O
و دوستتون با حرف
X
خونه های یه جدول 9 خونه ای را پر میکردید. و هرکس که میتونست با حرف مربوط به خودش سه خونه پشت هم رو پر کنه برنده میشد!
حالا حالات ممكن صفحه را در حين اجراي بازي در نظر بگيريد. . اين حالات محدود و قابل پيشبيني هستند و تعداد آنها 19683 حالت است (براي محاسبه، براي هر يك از 9 تا خانه جدول ميتوان سه حالت خالي،
X و O
را در نظر گرفت پس تعداد كل حالات 9^3 خواهد بود).
میشه برنامهاي نوشت كه تمام اين حالات را در نظر ميگيرد و در ازاي هر حالت خاص، رفتاري هوشمندانه را انجام ميدهد. شايد عدد 9 ^3 به نظرتون بزرگ بيابيد. اما حقيقت اين است كه با در نظر گرفتن قوانين بازي ميتوان اين حالات را خلاصهتر كرد. نكتهي مهم در اين برنامه، محدود بودن حالات ممكن است. ببرای همین میشه برنامه ی اين بازي را به گونهاي نوشت كه هيچگاه بازنده نباشد.
(در نظر بگيريد كه نوشتن چنين برنامهاي براي بازي شطرنج تقريباً غيرممكن است)
درست است كه اين الگوريتم در بازي در برابر حريف شكست نميخورد و همواره هوشمندانهترين رفتار را از خود نشان ميدهد اما اين هوشمندي برنامهنويس است كه در قالب دستورات الگوريتميك به كامپيوتر القا شده است و برنامه به خودي خود هيچگونه خلاقيت و هوشمندي در اجراي بازي نداشته و فقط از يك مجموعه بايد و نبايد و دستور كه برنامهنويس به آن داده، تبعيت كرده است.
پس ما از يك برنامهي هوشمند و يا بهعبارت ديگر هوش مصنوعي، قابليتهاي مختلفی مثل استنتاج، حدس، خلاقيت و يادگيري را انتظار داريم. اما آيا بواقعا میشه چنين انتظارهايي را از برنامههاي كامپيوتري داشت؟
عدهاي از رياضيدانان و دانشمندان علوم كامپيوتر معتقد بودند چنين كاري غيرممكن است به اين علت كه كامپيوتر صرفاً ميتواند دستورهاي برنامهنويس را - كه در قالب يك الگوريتم به آن داده ميشود -انجام دهد. پس نميتوانيم از يك برنامه، انتظار انجام كاري را داشته باشيم كه در قالب الگوريتم به او دستور داده نشده است. در حقيقت برنامههاي كامپيوتري نميتوانند كارهايي غيرقابل پيشبيني انجام دهند، پس نميتوانند خلاقيت داشته باشند.
پاسخ اين ادعاي درست، ادعاي درست ديگري است كه تمام فعاليتهاي انجام شده در زمينهي هوش مصنوعي را توجيه ميكند. اگر بتوانيم استنتاج، خلاقيت و يادگيري را در قالب الگوريتم و دستورها به كامپيوتر بدهيم و انتظار داشته باشيم تا با تبعيت از اين دستورها، رفتاري هوشمندانه داشته باشد، چيزي خلاف گفتهي بالا انجام نگرفته است.
در حقيقت دستورهايي كه كامپيوتر در قالب الگوريتمهاي هوش انجام ميدهد، چنين معنايي خواهند داشت:
- هوشمندانه رفتار كن.
- استنتاج كن.
- ياد بگير.
- خلاقيت داشته باش.
- يك اشتباه را دوبار تكرار نكن.
- از تجربههايت درس بگير.
پس بهطور كلي، روند كار، همانندسازي برنامه با مغز انسان است؛ هر چند اين كار بهطور كامل ممكن نيست. اما نتايج خوبي مثل شبكههاي عصبي از محصولات همين فعاليتهاي نه چندان كامل و دقيق است.
مهمترين نكته در علم هوش مصنوعي اين است كه بتوانيم تعريف دقيقي از آنچه دقيقاً در مغز انسان طي يك فعاليت هوشمندانه رخ ميدهد ارائه كنيم. به عنوان مثال سعي كنيد دقيقاً بيان كنيد كه در حين اثبات يك قضيهي رياضي چه اتفاقي در مغزتان ميافتد. كار خیلی سختی به نظر میاد، اما جنبههايي از هوش هستند كه سادهتر قابل بيانند.
بازي با هوش - بررسي هوشمصنوعي در بازيهاي كامپيوتري
اشاره :
در دنياي امروز يكي از مهمترين قسمتهاي علم پزشكي، طراحي و بازسازي اجزاي مختلف بدن است. حال اين سؤال مطرح است كه در دنيايي كه ديگر، مواردي مانند نقص عضو و از بين رفتن حالت هدايتي- الكتريكي قلب، فشار بالاي جمجمه و حتي انواع مختلف فلجهاي دست و پا، براي بيمار، كمتر محدودكننده است و تا حدودي ديگر يك نقيصه محسوب نميشود، بازسازيِ احساسات، عواطف و تفكرات چه جايي دارد؟ بشر تا چه ميزان توانسته است مسائل روحي خود را در نمونهاي آزمايشگاهي توليدكند؟ آيا ميتوان اميدوار بود كه در آينده گوشهاي از عواطف آدمي در يك ماشين، جمعآوري شود؟
شايد جواب اين سؤالات با پيشرفتهايي كه در بازسازيِ هوش در كامپيوتر شدهاست، در آينده تا حدودي دور از دسترس نباشد. هوشمصنوعي، بهويژه آنچه كه در بازيهاي كامپيوتري شاهد آن هستيم، روز به روز در حال نزديك شدن به مدل واقعي خود است. يك بازي كامپيوتري خوب، بازياي است كه هر نكتهاي را در اين دنياي مجازي بهتر و واقعيتر به دنياي حقيقي ربط دهد. به همين منظور داشتن حريفي قدرتمند و انساننما لازمه بازسازي هوش و تفكرات انساني است.
اين سؤال كه <حريف كامپيوتري شما چه قدر ميفهمد؟> امروزه قبل از انجام هر بازي به فكر بازيكنندهها ميآيد؛ زيرا قرار است قسمتي از وقت و زندگي او معطوف اين بازي شود و اگر حريفش قدرتمند نباشد، عملاً اين وقت هدر رفته است. درست مانند اين است كه يك قهرمان شطرنج با كسي كه اولين بار است اين بازي را انجام ميدهد روبهرو شود. پس در كنار داشتن گرافيك، صدا و محيط بازي خوب، داشتن هوشمصنوعي مناسب نيز براي يك بازي كامپيوتري از محاسن آن بازي بهحساب ميآيد.
در اين پست سعي شده است مفاهيم و كاربردهاي ابتدايي هوشمصنوعي در بازيهاي كامپيوتري شرح داده شود. گفتني است براي تهيه اين پست از مطالب سايتهاي
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)
را به دست ميآورند و با هدايت پيدرپي اين شخصيت به طرف اين نقاط، نهايتاً آن را به نقطه هدف مشخص ميرسانند. در حين عبور از اين نقاط هدايتي، هوشمصنوعي همچنان وظيفه دارد از مسيرهاي منطقي براي رسيدن به نقطه بعدي استفاده كند و كاراكتر را از موانع متحرك يا ثابتي كه در مسير بين دو نقطه در سر راهش ظاهر مي شوند نيز عبور دهد.
نمايش مسيريابي را در بازيهاي
RTS
سپس سيستم گرافيكي وظيفه دارد اجراي مناسبي از سكانسهاي اجرا شده در سرعت معيني از انيميشن را با توجه به دستورات ارائهشده توسط هوشمصنوعي نمايش دهد. اين سيستم همچنين بايد بتواند سكانسهاي متحركِ مختلفي را براي اجزاي مختلف بدن شخصيتها اجرا كند. نمونهاي از اين سيستم را ميتوانيد در صحنهاي از يك بازي جنگي فرض كنيد كه در آن سربازي همزمان ميدود و به طرف دشمن نشانه ميگيرد، تيراندازي ميكند و اسلحه خود را در حين دويدن پر ميكند.
بازيهايي از اين دست اغلب از سيستم كينماتيك معكوس
(Inverted Kinematics System)
استفاده ميكنند. يك سيستم انيميشنيِ
IK
ميتواند به طور مناسب پارامترهاي موقعيتيابي محوري يك انيميشن را محاسبه كند. درنتيجه با وجود اين سيستم، دست يك شخصيت ميتواند جسمي را كه در درون آن است نگهدارد يا ميز، قفسه، شيئي را در بر ميگيرد كه روي آنها قرار دارد. وظايف لايههاي بالايي به كاررفته در هوشمصنوعي، استفاده مناسب از نوع رفتاري است كه براي هر موقعيت توسط كامپيوتر استفاده ميشود. بهطور مثال، در همان بازيِ جنگي اين لايهها، انتخاب ميكنند كه سربازي از سربازهاي دشمن در يك جا نگهباني كند، وارد نبرد شود، فرار كند يا به نقطهاي ديگر از نقشه برود تا دشمنش را پيدا كند.
هنگامي كه هوشمصنوعي تصميم گرفت كدام رفتار براي موقعيت ايجادشده بهتر است، يك لايه زيرين انتخاب ميشود كه بهترين تاكتيك را براي انجام اين تصميم انتخاب كند. بهطور نمونه، در مثال قبلي اگر هوشمصنوعي تصميم بگيرد كه سرباز وارد نبرد شود، اين لايه زيرين بهترين شيوه مبارزه را براي او تعيين ميكند. مثلاً تصميم ميگيرد كه او آرام آرام به شخصيت بازيكننده نزديك شود و به او تيراندازي كند، يا در گوشهاي پنهان شود و منتظر شود كه شخصيت بازيكننده به حوزه ديدش برسد و سپس بهطرفش تيراندازي كند يا اينكه به طرف او بدود و تيراندازي كند.
هوشمصنوعي در بازيهاي استراتژيِ بيدرنگ
در بازيهاي استراتژيِ بيدرنگ
(Real Time Strategy)
امكان تشخيص مدلها و لايههاي متعددِ هوشمصنوعي وجود دارد. يكي از اساسيترين اين مدلها يك سيستم مؤثرِ راهيابي براي كاراكتر است كه بعضي وقتها، در كسري از زمان، اين سيستم بايد جوابگوي مشكل حركت صدها كاراكتر روي نقشه اينگونه بازيها باشد. بايد توجه داشت كه مسيريابي اين سيستم چيزي فراتر از مسيريابي سادهاي است كه تنها كاراكتري را از نقطه
A
به
B
ميرساند؛ زيرا در ازدحامِ نقشه، مهمترين نكته در حركت، تشخيص مواجهاتِ اين واحدهاي كوچك در حين عبور بين دو نقطه با هم و متعاقب آن اداره آنها است به نحوي كه به هم برخورد نداشته باشند.
اين الگوريتمها معمولاً بر پايه نقشه بازي استوار است كه اين مسئله خود توسط عناصري گرافيكيِ رشتهمانند و چهارگوش معرفي ميشوند. اين رشتههاي مستطيلشكل توسط تورهايي شبكهاي، عوامل تصحيح شده از لحاظ اندازه را در محيط تعيين و معرفي ميكنند. در سطوح بالاتر سلسله مراتب هوشمصنوعي اين بازيها، ماژولهايي طراحي شده است كه وظيفه آنها تعيين مسائل اقتصاديِ بازي، توسعه و از همه مهمتر، مدلي براي آناليز نقشه بازي، است. اين همان ماجولي است كه نوع زمين هر ناحيه از نقشه و عناصري كه روي آن ساخته ميشوند را آناليز ميكند. بهطور مثال، در محلي از نقشه كه دريا قرار دارد، اين ماجول اجازه ميدهد ناوگان دريايي ساخته شود. اين ماجول زمان انجام ساختن يك شهر يا ديوارهاي حفاظتي و باروها را نيز تعيين ميكند.
هوشمصنوعي در بازيهاي ورزشي
اساساً، در اكثر بازيهاي ورزشي، ما با مقدار زيادي تقلب از جانب هوشمصنوعي روبهرو هستيم! بهطور مثال بازيهاي ماشينسواري را در نظر بگيريد. هوش مصنوعي، از كل اشكال هندسي نقشه بازي، فقط چندضلعيهايي را شناسايي ميكند كه متعلق به جادهاي است كه حريف كامپيوتري در آن مشغول راندن است، و كاري به ديگر جاهاي نقشه بازي (كه همان جاده باشد) ندارد. در نظر بگيريد كه كامپيوتر توانايي انجام دو نوع رانندگي در پيچهاي تعبيه شده در بازي را دارد: نوع اول كه در غياب حريف ديگر رخ ميدهد، نمايانگر بهترين رانندگي در اين پيچها است و نوع دوم زماني است كه او ميخواهد در اين پيچ، همزمان از حريفش سبقت بگيرد.
در اين مثال كل جاده به سكتورهاي متناسب كوچكي تقسيمبندي ميشود و پارامترهاي سطح جاده به مقادير عدديِ قابل ترجمه تبديل ميشوند و مسير هر جزء كوچك جاده محاسبه ميشود. سپس با تركيب اين اجزاي، بهصورت بصري، كل جاده بازسازي ميشود و مجاورت ماشينها روي آن با هم نيز در اين تركيب نمايشداده ميشود.
عملاً كامپيوتر ميداند كه در پيچ بايد سرعتش را كم كند؛ زيرا در حال پيچيدن اگر سرعتش از حدي بيشتر باشد، كنترل ماشين را از دست خواهد داد. حال بسته به اينكه كامپيوتر از حريف انسانيش عقبتر است يا جلوتر، در نوع پيچيدن در اين گونه صحنهها تصميمگيري ميكند.
اگر او عقبتر باشد، سعي ميكند با روش بهينهسازيِ پيچيدن كه شامل بريدن پيچها و حركت از داخليترين مسير است، كمي مسافت عقبافتاده را جبران كند.
در غيراين صورت، به روش عادي ميپيچد. نوع تقسيمبندي مسير جاده توسط هوشمصنوعي و دو نوع پيچيدن اتومبيل كامپيوتر در پيچها را در شكل شماره2 ميبينيد.
نوع ديگر تقلب كامپيوتر در اين بازيها هم در استفاده از راههاي ميانبر ديده ميشود.
هنگامي كه كامپيوتر از حريف انساني خود عقب ميافتد، بيشترين استفاده را از اين گونه راهها كه مسير را برايش كوتاهتر ميكند، خواهد داشت. در شكل 3 نمونهاي از اين شيوه را ميبينيد.
با توضيحاتي كه داده شد، تجاربي كه از بازيهاي ماشينسواري تا به حال كسب كردهايد، كمي ملموستر ميشود.
به طور مثال، در بازياي مانند
Need For Speed
كمتر پيش ميآيد كه مسافت زيادي از بهترين حريف خود جلوتر باشيد.
زمانهايي پيش ميآيد كه اين حريف شما به علت تصادف يا منحرف شدن از جاده، مسافت زيادي از شما عقب ميماند، ولي با پيگيري او روي نقشه كوچك بازي ميبينيد كه با سرعتي غيرمنطقي به شما نزديك و نزديكتر ميشود. در واقع چيزي كه فاصله او را با شما كم ميكند سرعت زياد او نيست، بلكه نوع بهينهسازي رانندگي او است.
دو خصيصه مهم ديگر هوشمصنوعي در اين نوع بازيها عبارتند از:
- توانايي آناليز سطوح جاده براي شناسايي موانعي كه روي آن قرار دارند.
● هماهنگيِ محكمي كه نوع رانندگي كامپيوتر را با مدل فيزيكي طراحي شده بازي تنظيم ميكند.
مدل فيزيكي اين امكان را فراهم ميكند كه هنگامي كه اتومبيل كامپيوتر بنا به هر دليلي، از جاده منحرف شد، هوشمصنوعي به طرز مناسب و منطقياي كنترل آن را مجدداً به دست بگيرد تا او از كورس رقابت بيشتر عقب نماند.
تقلبهاي مشابه موارد ذكرشده در ديگر بازيهاي ورزشي نيز ديده ميشود. براي همين، در بازيهاي
FIFA
ميبينيد كه هنگامي كه كامپيوتر از شما عقب است، بهتر بازي ميكند. در اكثر مواقع يك بازيكن كامپيوتري در اين نوع بازيها، قبل از اين كه حركت ورزشي خود را انجام دهد، نقشهاي از حركت خود را بهصورت آماده و تعيين شده در اختيار دارد. اين حركت بسته به اينكه از حريف انسانيش جلو است يا عقب تعيين شده است.
بهطور مثال، در بازيهاي فيفا، هنگامي كه بازيكني قصد دارد به طرف دروازه شما شوت كند، سرنوشت اين شوت از قبل مشخص است. البته عكسالعمل شما نيز ميتواند روي آن تأثير گذار باشد و همين مسئله باعث پيروزي انسان بر كامپيوتر ميشود. درست مانند شطرنجبازي كه ميتواند بهترين حريف كامپيوتري خود را شكست دهد، اينجا هم شما با عكسالعملهاي بهموقع خود ميتوانيد هوشمصنوعي كامپيوتر را با هوش طبيعي و كاملتر خود شكست دهيد.
هوشمصنوعي در بازيهايي كه برد و باخت آن توسط داوري انجام ميشود (مانند بوكس در صورتي كه حريف ناكاوت نشود) نيز توسط قوانيني كه از قبل براي اعمال آن ورزش در هوشمصنوعي تعبيه ميشود، محاسبه ميشود و برنده را مشخص ميكند.
بعد از انجام تمام مراحل گفته شده، سناريوي از قبل تعيينشدهِ يك بازيكنِ كنترلشده توسط كامپيوتر، به وسيله سيستم انيميشن شخصيتها بازسازي ميشود.
محبوبترين الگوريتمهاي هوشمصنوعي به كار رفته در بازيهاي كامپيوتري
در ادامه اين پست دو نمونه از محبوبترين الگوريتمهاي هوشمصنوعي معرفي ميشود كه به وفور از آنها در طراحي هوشمصنوعي بازيهاي كامپيوتري استفاده ميشود. با دانستن مطالبي در مورد اين الگوريتمها، شايد شما هم ترغيب شويد با طراحي يكي از آنها، يك بازيِ
FPS و RTS
ساده بسازيد. اولين الگوريتم از اين دست،
*A
نام دارد كه سلسله جستوجوهاي سريعي را براي پيدا كردن بهترين مسير بين دو نقطه انجام ميدهد. الگوي ديگر ماشين با حالات محدود
(Finite State Machine)
نام دارد كه بسيار مورد استفاده قرار ميگيرد و وظيفهاش آمادهكردن سناريوهاي رفتاري براي حريفاني است كه توسط كامپيوتر در بازي كنترل ميشوند. در مرحله بعدي اين رفتارها توسط ماژولهاي سطوح پايين، مانند ماجول رهيابي، پردازش ميشوند.
الگوريتمِ
*A
موضوع پيداكردن راه بين دو نقطه
A و B
در اكثر بازيهاي كامپيوتري، غير از بازيهاي ورزشي و تعداد انگشتشماري از بازيها، مشكل كليدياي محسوب ميشود. الگوريتمهاي اين گروه، در آن واحد جزئي از سطوح پايينتر هوشمصنوعي بازي هستند. همچنين به عنوان پايهاي براي ساختار رفتارهاي پيچيدهتر و هوشمندتر، مانند تصميمهاي استراتژيك، حركت در آرايشهاي جنگي و گروهي و بسياري ديگر از رفتارهاي سطح بالاتر، مورد استفاده قرار ميگيرد. اين الگوريتم امروزه به طور چشمگيري پيشرفت كردهاست. به طوري كه در بازيهاي كامپيوتري كنوني، الگوريتم
*A
جايگاه ويژهاي دارد.
اساس اين الگوريتم برپايه <جستوجوي گرافيكي بينگرهي> استوار است. اين سيستم از يك ارزيابي غيرمستدل
(Heuristic Estimate)
بهره گيري ميكند. اين الگوريتم اولين بار در سال 1968 همزمان توسط سه رياضيدان به نامهاي
Peter Hart ،Nils Nilsson و Bertram Raphael
شرح داده شد.
دنياي واقعي، تقريباً در تمامي بازيهاي كامپيوتري، بسته به نوع بازي، ميتواند با خطوطي گرافيكي بازسازي شود. در بازيهاي
RTS
، دنياي بازي معمولاً از آرايشي دو بعدي تشكيل شدهاست و نقشه بازي شامل مربعهاي فراواني ميشود كه هر يك از آنها مطابق است با نقشه چهارگوش بازي. هر عنصر اين سيستم (جز عناصر مرزي) هشت عنصر همسايه دارند. با استفاده از اينگونه مدل نمايشي در بازيهاي
RTS
، ميتوانيم گرافيكي ايجاد كنيم كه در آن هر يك از اين عناصر به راس گرافيك كل نقشه مربوط باشد. لبههاي هر يك از عناصر گرافيكي (كه هريك با عنصر همسايه خود مجاورت دارد) امكان يا عدم امكان حركت يكي از اجراي نقشه را به عنصر همسايه نمايش ميدهد. در استراتژيهاي بيدرنگ ما معمولاً يكي از رئوس اين عناصر گرافيكي را به عنوان محلي كه كوچكترين واحد بازي در آن جاي ميگيرد، قلمداد ميكنيم.
در بازيهاي
FPS
رئوس عناصر گرافيكي معمولاً محلها يا اتاقها هستند و توسط اين رئوس است كه اين محلها/ اتاقها با هم ارتباط پيدا ميكنند.
الگوريتمهايي فراواني براي پيدا كردن بهترين مسيريابي در اين عناصر گرافيكي وجود دارد. يكي از سادهترين اين الگوريتمها كه آتش در چمنزار
(Fire on the Prairie)
ناميده ميشود، به اين صورت كار ميكند كه چندين دايره متوالي را در نقطه شروع ميسازد و در هر مرحله دايرههاي ديگري ميسازد كه قطر آنها بزرگتر از دايرههاي قبلي است. اين دواير متوالي و عناصر مربوط به هر يك، بهتدريج بزرگتر ميشوند و داراي شاخصهاي بزرگتري نيز ميشوند.
حال، با حركت به سوي طرف مقابل و با پيروي از اين قانون كه در هر قدم ما به نقطهاي نزديكتر از نقشه حركت ميكنيم و شاخص اين نقطه كوچكتر است، ما به نقطه شروع ميرسيم. در نتيجه توسط عناصري كه توسط آنها ما نقشه را طي كردهايم و بار ديگر از آن مسير بازگشتهايم، كوتاهترين مسير بين نقطه شروع و نقطه هدف به وجود ميآيد.
با آزمايش روشي كه اين الگوريتم كار ميكند، متوجه خواهيم شد كه گرچه اين روش داراي برتري سادگي است، مشكل جدياي هم دارد. مسيري كه اين الگوريتم در مثال ذكرشده پيدا كردهاست تنها از پنج خانه نقشه بازي تشكيل شده و اين سيستم براي اين كار 81 خانه را مورد آزمايش قرار داده است.
حال فرض كنيد كه در نقشهاي كه متشكل از 256 خانه عرضي و طولي است، بايد 65536 خانه مورد آزمايش قرار گيرد تا مسير مشخص گردد!
بايد توجه داشت در اين الگوريتم بهترين راه الزاماً نزديكترين راه نيست. اين الگوريتم غير از مسيريابي، ميتواند فاكتورهاي ديگري همانند نوع زمين بازي را نيز مشخص كند. (به طور مثال، يك تانك در بازيهاي استراتژي در زمين معمولي تندتر از زمين گلآلود حركت ميكند).
از ديگر استفادههاي اين الگوريتم، ميتوان به تغيير محدوديت زاويههاي دوربين و نمايش تعداد بيشتري از واحدها در يك زمان، اشاره كرد. همچنين اين الگوريتم شرايطي را فراهم ميكند كه واحدها نتوانند از نقاط غيرقابل عبور نقشه عبور كنند. البته نبايد فراموش كرد كه بهترين استفاده از اين الگوريتم همان راهيابي بين دو نقطه است.
به علت مشكل محاسباتي كه در بالا براي اين الگوريتم توضيح داده شد، روشهاي ويژهاي مدنظر قرار گرفته شده است كه يكي از آنها روش بهينهسازي است. در واقع تمام تلاشهاي يك سيستم هوشمصنوعي كه از اين الگوريتم استفاده ميكند، بدون روش بهينهسازي به علت عملياتهاي ناكارآمدي كه براي تعيين مسير ميشود، از بين ميرود. به همين منظور از مدتها پيش، متدهاي برنامهنويسي متعددي براي رفع اين نقيصه طراحي شد كه يكي از آنها همين روش بهينهسازي بود. اين روش به دو صورت اين نقيصه را رفع ميكند:
- بهينه سازي خودِ عمليات جستوجوي الگوريتم
- بهينه سازي ساختار اطلاعاتي
در مورد اول، تمام نقشه بازي به نواحي كوچكتري تقسيم ميشود و الگوريتم نيز به دو بخش مجزا تقسيم ميشود. قسمت اول دنبال مسيري ميگردد كه بايد از آن ناحيه عبور كند. سپس قسمت دوم حركت را براي هر منطقه از نقطه ورود به نقطه هدايت ميكند. در نتيجه در هر ناحيه، با استفاده از الگوريتم
*A
مسير مطلوبي به دست ميآيد. با اين روش به طور عمده ميدان جستوجو را محدودتر و منابع محاسباتي را كمتر ميكنيم.
در واقع استفاده از اين روش درست مانند دنياي واقعي، هنگام رفتن فردي از يك جاي شهر به جاي ديگر است. در واقع كسي كه ميخواهد از نقطهاي از شهر به جاي ديگر آن برود، تمام مسير را با دقت مساوي طي نميكند، بلكه به جاي آن به جاهاي شناسايي مشخصي ميرسد و از آنجا براي ادامه مسير خود و ميزان راه باقيمانده تا نقطه بعدي تصميمگيري ميكند.
فاكتور مطلوبسازيِ ديگر انتخاب مناسب عمليات و پارامترهاي جستوجوگر است كه تعيين ميكند جستوجو تا چه محدودهاي از نقشه بازي صورت گيرد.
الگوريتم ماشين با حالات محدود
الگوريتمهاي ماشين با حالات محدود
(Finite State Machines)
مدلهاي رفتارياي هستند كه از موقعيت
(State)
، انتقال اين موقعيت
(Transition)
و ايجاد يك عمل
(Action)
تشكيل ميشود. در يك موقعيت، اطلاعاتي قبلي ذخيره ميشود.
به طور مثال، اطلاعات ورودي از شروع سيستم تا زمان حال در اين بخش قرار ميگيرد. در مرحله انتقال، اين موقعيت تغيير ميكند و بسته به شرايط، انتقال مييابد و در مرحله آخر اين موقعيتِ منتقلشده كه خود نماينده يك حالت بوده است، يك عمل متناسب با آن موقعيت را ايجاد ميكند.
دليل نامگذاري اين الگوريتم نيز مقايسهاي است كه آن را از مغز انسان متمايز ميكند. همان طور كه ميدانيد مغز انسان در هر لحظه ميتواند عمليات ذكر شده در بالا را در تعداد نامتناهي انجام دهد. اما كامپيوتر و هوشمصنوعي، هرچند هم كه پيشرفته باشد، تنها قادر است تعداد معيني از اين عمليات را انجام دهد. با اينكه الگوريتمهاي سادهاي هستند، در عين حال يكي از پركاربردترين و مؤثرترين روش برنامهريزي هوشمصنوعي ميباشند. براي هر موقعيت در يك بازي كامپيوتري ميتوان مجموعه اعدادي از چگونگي آن لحظه قائل شد.
براي مثال، يك شواليه را در نظر بگيريد. او در بازي ميتواند زره بپوشد، به عنوان نگهباني عمل كند، حمله كند يا در حال استراحت باشد.
يا در يك بازي
RTS
يكي از مردم عادي شما ميتواند چوب جمع كند، خانهاي بسازد يا در برابر حمله دشمن از خود دفاع كند. بسته به موقعيت هر يك از اين دو شخصيت، اشيا و اجزاي بازي ميتوانند عكسالعملهاي متفاوت، اما محدودي داشته باشند.
در واقع روش
FSM
به ما امكان ميدهد رفتار اين اجزا را در بازي به قسمتهاي كوچكتري مجزا كنيم و سپس با سهولت بيشتري اين قسمتها را
Debug و Extend
كنيم. براي موقعيت هر شيء در لحظه آغازين و لحظه بعد از انجام عمل مورد نظر، كدي در نظر گرفته ميشود. براي انتقال موقعيتها نيز كدهايي در نظر گرفته ميشود. اين كدها در هر فريم از بازي مورد استفاده هوشمصنوعي قرار ميگيرد و با كدهاي آمده از محيط بازي نيز خود را تطبيق ميدهد.
شبكه عصبي مصنوعي و الگوريتمهاي پيشرفته در بازيهاي كامپيوتري
همانطور كه ميدانيد سيستم عصبي بدن انسان از دو قسمت مركزي
(CNS)
و محيطي
(PNS)
تشكيل شده است. سيستم عصبي مركزي شامل مغز و نخاع و سيستم عصبي محيطي شامل رشتههاي عصبي و گيرندههاي آن در اعضاي مختلف بدن است. وظيفه سيستم عصبي محيطي، جمعآوري اطلاعاتي است كه در نهايت بايد توسط مغز و نخاع پردازش شود. اخيراً با معرفي شبكه عصبي مصنوعي در مبحث هوشمصنوعي، درست مانند سيستم عصبي بدن انسان، جزء محيطي نيز براي اين سيستم تعريف شده است. در واقع اطلاعاتي كه قبلاً براي پردازش به هوشمصنوعي سپرده ميشد، با معرفي اين سيستم به نحو كاملتر و طبقهبنديتري در اختيار آن قرار ميگيرد.
بحث شبكههاي عصبي مصنوعي و موارد استفاده آنها در بازيهاي كامپيوتري، اخيراً به يكي از بحثهاي داغ در صنعت بازيسازي تبديل شده است. در بسياري از مجلات و سايتهاي بازي به اين بحث و تواناييهاي الگوريتمهاي امروزي ساخت بازيها اشاره شده است. مشكلات مربوط به شبكه عصبي مصنوعي نيز بارها در اجلاس سازندگان بازيها
(GDC)
كه سالانه در شهر لندن برگزار ميشود مطرح شده است.
بازي ماشينسواريِ
Collin McRae Rally2
يكي از اولين بازيهايي است كه از اين سيستم در هوشمصنوعي خود استفاده كرده است و اتفاقاً بسيار هم موفق بوده است. در اين بازي در حين اينكه كامپيوتر سعي دارد ماشينهاي خود را به بهترين نحو در جاده كنترل كند، همزمان توسط كمكراننده ماشينها، بنا به شيوه مسابقات رالي، توضيحاتي در مورد آينده جاده و نحوه پيچها ميدهد. در اين بازي هم، درست مانند توضيحي كه در قسمت هوشمصنوعيِ بازيهاي ورزشي گفته شد، هر جاده توسط خطوطي شكسته كه طرح خطياي را براي هوشمصنوعي تشكيل ميدهند، شناخته ميشود.
اگر بخواهيم شبكه عصبي مصنوعي را براي اين بازي توضيح دهيم، بايد به اطلاعاتي اشاره كنيم كه اين سيستم آنها را براي هوشمصنوعي جمعآوري ميكند. در واقع اطلاعات وروديِ شبكه عصبي مصنوعي اطلاعاتي است مانند: ميزان انحناي هر پيچ، فاصله اتومبيل تا ابتداي پيچ، نوع سطح جاده، سرعت و اجزاي سوارشده روي هر اتومبيل از قبيل توربو و فلاپها و كيتها.
سپس اين شبكه وظيفه دارد اين اطلاعات ورودي را با عبور از لايههاي مختلف به هسته اصلي هوشمصنوعيِ بازي (كه با موتور ساخت بازي نيز ارتباط تنگاتنگ دارد) برساند. سپس در آنجا پردازشهاي نهايي صورت ميگيرد و اطلاعات خروجي به دست ميآيد. وظيفه پيرايش و نمايش اين اطلاعات خروجي باز هم به عهده شبكه عصبي مصنوعي است. بدين ترتيب در مثال بالا حركت و كنترل اتومبيل در جاده، بنا به موقعيت، به درستي و به بهترين شكل ممكن صورت ميگيرد و قسمت معرفي جاده توسط كمكراننده نيز در كنار هدايت اتومبيل به طبيعيترين حالت ممكن، انجام ميشود.
در كنترل اتومبيل به اين شيوه، كامپيوتر ميداند كه ميتواند از روي موانع كوچكتر عبور كند؛ بدون آنكه مشكلي در هدايت داشته باشد يا ميداند كه در حالات برفي و باراني كه جاده لغزنده است، بايد زودتر از حالت طبيعي تصميم به پيچيدن داشته باشد. اين بازي از مدلي چند لايه به نام
Perceptron Model
استفاده ميكند. در علم پزشكي اين مدل عصبي-هدايتي كه نورون
McCulloch-Pitts
هم ناميده ميشود، عبارت است شبكهاي از نورونها كه ارتباطات سنگين و مهمي بين ورودي عدهاي از نورونهاي با خروجي عده ديگر از نورونها، برقرار ميكنند.
در واقع اين ارتباطات مانند سيناپسهاي پيشرفتهاي هستند كه بر اساس تجربيات بسيار كوچك، تصميمهاي مؤثر و مهمي را اتخاذ ميكنند. تصميماتي مانند يادگيريهاي پيشرفته. با توضيحي كه در مورد شبكه عصبي مصنوعي در بازيِ فوق داده شد، ميبينيم كه شباهتهاي بسياري بين اين سيستم و سيستم به كاررفته در بازي ديده ميشود. شبكه عصبي مصنوعي، به صورت تئوري، ميتواند بسياري از وظايف كنوني هوشمصنوعي را انجام دهد و زمان و سرعت بيشتري را براي اعمال مهمتر در اختيار آن قرار دهد. ولي عملاً مسائلي، فعاليت اين شبكه عصبي را محدود ميكنند كه در ادامه به چند مورد از آنها اشاره ميكنيم:
- مشكلاتي در انتخاب اطلاعات ورودي مناسب براي اين شبكه
● عدم حساسيت اين شبكه به تغييرات منطقي كنشهاي بازي و دوباره سازيِ هر شبكه با
تغيير هر حالت در بازي.
● ساختار مشكل و پيچيده آن و مشكلاتي كه در
Debug
كردن هر موقعيت به وجود ميآورد.
- زمان زيادي كه براي طراحيِ چنين شبكهاي احتياج است.
حال براي مقابله با مشكلات فوق، چه كاري بايد انجام داد تا بتوان در بازيهاي كامپيوتري
امروزي، با اين سيستم حداكثر بهره را برد؟
در ابتدا بايد نوع اطلاعاتي را مشخص كنيم كه ميخواهيم توسط اين سيستم پردازش شود. بهطور مثال بازياي را در نظر بگيريد كه سيستم عصبي هوشمند در آن قرار است هدايت هواپيماي مقابل ما را داشته باشد. اطلاعاتي كه اين سيستم قرار است آنها را پردازش كند، عبارتند از: مسيرهاي مطلوب راندن هواپيما و سرعت، شتاب و ارتفاعي كه هواپيماي او را به هواپيماي ما خواهد رساند.
در مثال ديگر، ميتوان به يك بازي
RTS
اشاره كرد. بسته به تحليل هر موقعيت، اين شبكه تصميم به گسترش شهر و فتوحات، توسعه ارتش يا تعميرات بعد از جنگ، خواهد گرفت. تمام پارامترهايي كه بازي بايد آنها را بهصورت بصري و صوتي در اختيار بازيكننده بگذارد، بايد از فيلتر اين سيستم گذشته باشد و به صورت خروجي در اختيار ما قرار گيرد. با اينكه مرحله خروجي اين سيستم ساده بهنظر ميآيد، مشكل اصلي انتخاب پارامترهاي ورودي براي اين سيستم است.
پارامترهاي پيچيده بايد طوري انتخاب شوند كه امكان سادهتر شدن توسط اين سيستم را در مدت زمان كمي داشته باشند. يك قانون كلي در اين بحث ميگويد: <اطلاعات ورودي بايد تا جايي كه امكان دارد بيشترين اطلاعات را در مورد دنياي بازي بدهد> اين قانون در مثال بازيِ هواپيمايي اينگونه است كه اطلاعات ورودي هر زمان براي يك حريف كامپيوتري بايد شامل ارتفاع و موقعيت هواپيماي ما، وضعيت جو و آب و هوا، ميزان خسارت هواپيماي ما و كامپيوتر، سرعت و شتاب هواپيماي خود و ما و موارد باشد؟!
قدم بعدي در تسهيل كار اين سيستم، اين است كه تا جايي كه ميشود براي هر موقعيت موارد مشابه از قبل تعريف شده باشد و هوشمصنوعي اين امكان را داشته باشد كه اطلاعات به دست آمده از تجربيات سپري شدهاش را حفظ كند. به طور مثال نوع پرواز و حمله قبلي هواپيماي ما را بداند و آن را در خاطره خود ثبت كند و در موارد بعدي از آن استفاده نمايد.
به كارگيري شبكه عصبي مصنوعي در عمل كار سادهاي نيست. طراحي آن به زمان، تجربه و صبر زيادي احتياج دارد. منطق عملياتي اين شبكه برخلاف تجربيات صفر و يكي كامپيوتر و مانند مغز انسان، گستردهتر است. اين منطق نشان ميدهد كه آيا موقعيت ظاهري در هر لحظه از بازي واقعي است يا خير و اگر واقعي است تا چه حدي مهم و قابل اعتنا است. گرچه طراحي چنين شبكههايي كاري سخت و طاقتفرسا است، بازيها و نتايجي كه از طراحي آنها گرفته ميشود، اكثراً حيرتانگيز و تماشايي هستند. در آينده استفاده از اين شبكههاي عصبي هوشمصنوعي را در اكثر بازيهايي كه دوستشان داريد، خواهيد ديد.
كتابخانههاي هوشمصنوعي
طراحي يك سيستم قويِ هوشمصنوعي در يك بازيِ كامپيوتري كاري است كه نيازمند وقت و تجربه زيادي است. اگر يك شركت طراح بازي نتواند تيم طراحي قوياي براي اينكار داشته باشد، ميتواند يك سيستمِ از قبل طراحي شده را كه در بازار نرمافزاري وجود دارد، از شركت ديگر خريداري كند.
در اين قسمت اشارهاي خواهيم داشت به دو نمونه از معروفترين و بهترين نمونههاي هوشهاي مصنوعي ساخته شده.
هوش مصنوعيِِ
Renderware
اين سيستم در واقع يك موتورِ بازي است كه در بسياري از كنسولهاي بازي قابل استفاده است. اين موتور شامل بخشهاي مختلف صوتي، گرافيكي، محيط بازي و... ميشود كه يكي از اين بخشها به هوشمصنوعي اختصاص دارد.
هوشمصنوعي
Renderware
هم ميتواند در بازيهايي كه از اين موتور استفاده ميكنند قرار گيرد و هم ميتواند در بازيهاي ساخته شده براساس موتورهاي ديگر كه ميخواهند از اين هوشمصنوعي بهره ببرند، به كار رود.
از خصوصيات اين سيستم بهكارگيري فلسفهِ لايهاي است. در زير سه لايه اصلي اين هوشمصنوعي معرفي ميشود:
- لايه ادراك:
(Perception Layer)
مسئول آناليز موقعيتها است. به طور مثال در يك بازي
RTS
دو جزء استاتيك (مثل نوع زمين و قلمروها) و ديناميك (سپاهيان و كاراكترها) توسط اين لايه تحليل ميشود.
● لايه تصميمگيرنده:
(Decision Layer)
مسئول تصميمگيريهاي استراتژيك در مورد موقعيتهايي است كه توسط لايه ادراكي دريافت كردهاست. تصميمگيريهايي مانند مسيريابي، انجام يا عدم انجام جنگ و دفاع كردن.
- لايه عملياتي
(Action Layer)
وظيفه انجام كار مناسب را دارد.
از لايههاي فوق شايد بتوان گفت لايه اول مهمترين است؛ زيرا اگر كامپيوتر نتواند درك صحيحي از موقعيتهاي يك زمان خاص بازي داشته باشد، ديگر لايهها تصميمها و اعمال نادرستي خواهند داشت. اين لايه در هوشمصنوعيِ
Renderware
با نام
PathData
شناخته ميشود. (كه نامي بهظاهر اشتباه جلوه ميكند؛ زيرا وظايف لايه ادراكي را فقط معطوف به مسيريابي ميداند).
سيستم
PathData
سيستمي قوي است كه بهراحتي ميتواند از خواص توپولوژيك و مسيرهاي بازي اطلاعات تحليلي خوبي را در اختيار لايه تصميمگيري بگذارد. از برتريهاي اين سيستم، تحليل خوب اطلاعات در مورد خواص توپولوژيك هر منطقه و واحدهاي نزديك به آن است. به عنوان مثال، با اين سيستم كامپيوتر قادر خواهد بود كه بداند در كدام منطقه نقشه نقطهاي كور براي پنهان شدن وجود دارد، چهچيزهاي پراهميتي در نقشه بايد به چشم او بيايد و به چه چيزهايي نبايد اعتنا كند، كدام مسير بهترين راه براي نزديك شدن به دشمن است و ... همچنين با اين سيستم محل ديوارها، موانعي كه نميتوان از روي آنها پريد يا عبور كرد و ديگر عناصر محيطي به خوبي تحليل ميشوند.
از ديگر مزيتهاي اين سيستم هوشمصنوعي، عملياتي است كه بعد از شناسايي، درك و تصميمگيري توسط آن، بهويژه در مورد حركت واحدها، انجام ميشود. بعد از مرحله درك، توسط اين هوشمصنوعي و با استفاده از اطلاعات به دست آمده، نمودارهاي خطي مناسبي ساخته ميشود و سپس با استفاده از الگوريتم *A مسير ابتدايي حركت بين دو نقطه ترسيم ميشود و سپس با جزئيات دقيق، حركت هر واحد اعمال ميشود.
موتور بازي
Renderware
براي دستگاههاي
PC ،Playstation و PS2 ،Nintendo و Xbox
قابل استفاده است. البته براي هر يك از اين دستگاهها بهينه سازي شدهاست و امكان بهرهگيري از يك هوشمصنوعي بينقص را براي بازيهاي آنها فراهم ميكند.
Implant
اين موتور اولين بار در سال 2002 در كنفرانس طراحان بازيهاي كامپيوتري ارائه شد و فوراً به يكي از محبوبترين موتورهاي بازيسازي براي طراحان تبديل شد. بهترين و مهمترين خصوصيت منحصربهفرد اين هوشمصنوعي، به كارگيري يك سيستم پيشرفته با استفاده از الگوريتمهاي سلسلهاي است كه در مسيريابي بسيار موفق عمل ميكند. در اين سيستم نحوه تصميمگيري براي يك عمليات خاص پيرو درختچههاي دودويي است. رابط كاربرپسند اين هوشمصنوعي، ميزان استفاده از آن را براي برنامهنويسان زياد كردهاست. بهعبارت ديگر، ارتباط ساده و مؤثري كه اين هوشمصنوعي با برنامههايي مانند
3DStudio Max و Maya
برقرار ميكند، باعث ميشود عمليات اجرايي بازي همزمان با مراحل توليد گرافيكي آن قابل ديدن و تصحيح باشد.
از ديگر مزيتهاي اين هوشمصنوعي ميتوان به هدايت مناسب واحدهاي عظيم از لحاظ تعداد، به طور مثال در بازيهاي استراتژي، اشاره كرد. اين هوشمصنوعي هم براي دستگاههاي پيسي،
GameCube ،Xbox، وPlaystiation
قابل استفاده است.
سخن آخر
هوش مصنوعي يكي از پهناورترين، جذابترين و مهمترين قسمتهاي علوم كامپيوتري است. در اين پست سعي شد مفاهيم اوليه اين علم در ساخت بازيهاي كامپيوتري توضيح داده شود. البته بايد بدانيد هوشمصنوعي در اين بازيها مبحث مفصل و گستردهاي است كه در بسياري از دانشگاههاي معتبر دنيا براي آن رشتههاي تا حد كارداني در نظر گرفته شده است. در معدود بازيهاي توليدشده در كشورمان ميبينيم كه قسمت هوشمصنوعي بازي بسيار ايراد دارد. علت هم مشخص است.
ساخت هوشمصنوعي (و همچنين موتورهاي ساخت بازي) يا بايد توسط طراحان كشورمان صورت گيرد كه متأسفانه علم آن وجود ندارد يا از مدلهاي خارجي استفاده شود كه آن هم به علت هزينههاي زياد خريد آنها عملاً غيرممكن است. اميدواريم در آينده با پيشرفت برنامهنويسان كشورمان در اين حوزه، بتوانيم بازيهاي كامپيوتري ساخت كشورمان را با لذت و بدون احساس تفاوتهاي آشكار با نمونههاي خارجيشان، بازي كنيم
مطلبی دیگر از این انتشارات
آموزش پایتون کلید ورود به دنیای هوش مصنوعی (گام دوم - قسمت هجدهم:کار با فایلها)
مطلبی دیگر از این انتشارات
آموزش پایتون کلید ورود به دنیای هوش مصنوعی (گام دوم - قسمت شانزدهم:دیکشنری)
مطلبی دیگر از این انتشارات
چگونگی کار با الگوریتم درخت تصمیم به کمک کتابخانه Scikit-Learn