نمايش پست تنها
قديمي ۰۸-۲۷-۱۳۸۷, ۰۳:۳۰ بعد از ظهر   #16 (لینک دائم)
mohammad_tz Male
Active users
 
آواتار mohammad_tz
 
تاريخ عضويت: شهريور ۱۳۸۷
پست ها: 34
تشكرها: 1
254 تشكر در 32 پست
Smile بازی با هوش‌ - بررسی هوش ‌مصنوعی در بازی‌ های كامپيوتری‌ / بخش دوم

گردآوري، تاليف و ترجمه: اميرپاشا آزادي‌پو
ماهنامه شبکه

هوش‌مصنوعي در بازي‌هاي تيراندازيِ اول شخص
بازي‌هاي تيراندازيِ اول شخص يا First Person Shooters معمولاً از سيستم هوش‌مصنوعي با ساختار لايه‌لايه استفاده مي‌كنند. لايه‌هايي كه در قسمت زيرين قرار دارند، وظايف ابتدايي را به ‌عهده دارند.


شكل 1

از اين وظايف ابتدايي مي‌توان به تعيين بهترين مسير تا هدف (كه خود توسط لايه‌هاي بالايي‌تر تعيين مي‌شود) و اجراي متناسب سكانس‌هاي انيميشنِ كاراكتر، اشاره كرد.

لايه‌هاي بالايي‌تر مسئولِ اجرايِ برهان‌هاي تاكتيكي و انتخاب رفتاري است كه عنصر استفاده‌كننده از هوش‌مصنوعي (به طور مثال شخصيت‌هاي دشمن در بازي‌ها) برطبق اين تاكتيك و استراتژي عمل مي‌كند.

سيستم مسيريابي معمولاً برپايه نمايش‌هاي هندسي‌اي است كه دنياي بازي را شرح مي‌دهد. هر راس اين نمودار‌ها نمايانگر محلي منطقي از بازي (مانند اتاقي از يك ساختمان يا قطعه‌اي از ميدان جنگ) محسوب مي‌شود. وقتي به شخصيتي دستور داده مي‌شود كه به نقطه‌اي از نقشه بازي برود، عوامل هوش‌مصنوعي با استفاده از نمودار‌ها، نقاط ثانويه هدايتي ‌‌(Subsequent Navigation Points) را به‌ دست مي‌آورند و با هدايت پي‌درپي اين شخصيت به طرف اين نقاط، نهايتاً آن را به نقطه هدف مشخص مي‌رسانند. در حين عبور از اين نقاط هدايتي، هوش‌مصنوعي همچنان وظيفه دارد از مسير‌هاي منطقي براي رسيدن به نقطه بعدي استفاده كند و كاراكتر را از موانع متحرك يا ثابتي كه در مسير بين دو نقطه در سر راهش ظاهر مي شوند نيز عبور دهد. در شكل 1، نمايش مسيريابي را در بازي‌هاي RTS در تصويري ساده مي‌بينيد.

سپس سيستم گرافيكي وظيفه دارد اجراي مناسبي از سكانس‌هاي اجرا شده در سرعت معيني از انيميشن را با توجه به دستورات ارائه‌شده توسط هوش‌مصنوعي نمايش ‌دهد. اين سيستم همچنين بايد بتواند سكانس‌هاي متحركِ مختلفي را براي اجزاي مختلف بدن شخصيت‌ها اجرا كند. نمونه‌اي از اين سيستم را مي‌توانيد در صحنه‌اي از يك بازي جنگي فرض كنيد كه در آن سربازي همزمان مي‌دود و به طرف دشمن نشانه مي‌گيرد، تيراندازي مي‌كند و اسلحه خود را در حين دويدن پر مي‌كند.

بازي‌هايي از اين دست اغلب از سيستم كينماتيك معكوس ‌(Inverted Kinematics System) استفاده مي‌كنند. يك سيستم انيميشنيِ IK مي‌تواند به طور مناسب پارامتر‌هاي موقعيت‌يابي محوري يك انيميشن را محاسبه كند. درنتيجه با وجود اين سيستم، دست يك شخصيت مي‌تواند جسمي را كه در درون آن است نگه‌دارد يا ميز، قفسه، شيئي‌ را در بر مي‌گيرد كه روي آن‌ها قرار دارد. وظايف لايه‌هاي بالايي به كاررفته در هوش‌مصنوعي، استفاده مناسب از نوع رفتاري ا‌ست كه براي هر موقعيت توسط كامپيوتر استفاده مي‌شود. به‌طور مثال، در همان بازيِ جنگي اين لايه‌ها، انتخاب مي‌كنند كه سرباز‌ي از سرباز‌هاي دشمن در يك جا نگهباني كند، وارد نبرد شود، فرار كند يا به نقطه‌اي ديگر از نقشه برود تا دشمنش را پيدا كند.

هنگامي كه هوش‌مصنوعي تصميم گرفت كدام رفتار براي موقعيت ايجاد‌شده بهتر است، يك لايه‌ زيرين انتخاب مي‌شود كه بهترين تاكتيك را براي انجام اين تصميم انتخاب كند. به‌طور نمونه، در مثال قبلي اگر هوش‌مصنوعي تصميم بگيرد كه سرباز وارد نبرد شود، اين لايه زيرين بهترين شيوه مبارزه را براي او تعيين مي‌كند. مثلاً تصميم مي‌گيرد كه او آرام آرام به شخصيت بازي‌كننده نزديك شود و به او تيراندازي كند، يا در گوشه‌اي پنهان شود و منتظر شود كه شخصيت بازي‌كننده به حوزه ديدش برسد و سپس به‌طرفش تيراندازي كند يا اين‌كه به طرف او بدود و تيراندازي كند.

هوش‌مصنوعي در بازي‌هاي استراتژيِ بي‌درنگ
در بازي‌هاي استراتژيِ بي‌درنگ ‌(Real Time Strategy) امكان تشخيص مدل‌ها و لايه‌هاي متعددِ هوش‌مصنوعي وجود دارد. يكي از اساسي‌ترين اين مدل‌ها يك سيستم مؤثرِ راهيابي براي كاراكتر‌ است كه بعضي وقت‌ها، در كسري از زمان، اين سيستم ‌بايد جوابگوي مشكل حركت صدها كاراكتر روي نقشه اين‌گونه بازي‌ها باشد. بايد توجه داشت كه مسير‌يابي اين سيستم چيزي فراتر از مسيريابي ساده‌اي است كه تنها كاراكتري را از نقطه A به Bمي‌رساند؛ زيرا در ازدحامِ نقشه، مهم‌ترين نكته در حركت، تشخيص مواجهاتِ اين واحد‌هاي كوچك در حين عبور بين دو نقطه با هم و متعاقب آن اداره آن‌ها است به نحوي كه به هم برخورد نداشته باشند.

اين الگوريتم‌ها معمولاً بر پايه نقشه بازي استوار است كه اين مسئله خود توسط عناصري گرافيكيِ رشته‌مانند و چهارگوش معرفي مي‌شوند. اين رشته‌هاي مستطيل‌شكل توسط تور‌هايي شبكه‌اي، عوامل تصحيح شده از لحاظ اندازه را در محيط تعيين و معرفي مي‌كنند. در سطوح بالاتر سلسله ‌مراتب هوش‌مصنوعي اين بازي‌ها، ماژول‌هايي طراحي شده است كه وظيفه آن‌ها تعيين مسائل اقتصاديِ بازي، توسعه و از همه مهم‌تر، مدلي براي آناليز نقشه بازي، است. اين همان ماجولي است كه نوع زمين هر ناحيه از نقشه و عناصري كه روي آن ساخته مي‌شوند را آناليز مي‌كند. به‌طور مثال، در محلي از نقشه كه دريا قرار دارد، اين ماجول اجازه مي‌دهد ناوگان دريايي ساخته شود. اين ماجول زمان انجام ساختن يك شهر يا ديوار‌هاي حفاظتي و باروها را نيز تعيين مي‌كند.

هوش‌مصنوعي در بازي‌هاي ورزشي
اساساً، در اكثر بازي‌هاي ورزشي، ما با مقدار زيادي تقلب از جانب هوش‌مصنوعي روبه‌رو هستيم! به‌طور مثال بازي‌هاي ماشين‌سواري را در نظر بگيريد. هوش مصنوعي، از كل اشكال هندسي نقشه بازي، فقط چند‌ضلعي‌هايي را شناسايي مي‌كند كه متعلق به جاده‌اي است كه حريف كامپيوتري در آن مشغول راندن است، و كاري به ديگر جاهاي نقشه بازي (كه همان جاده ‌باشد) ندارد. در نظر بگيريد كه كامپيوتر توانايي انجام دو نوع رانندگي در پيچ‌هاي تعبيه شده در بازي را دارد: نوع اول كه در غياب حريف ديگر رخ مي‌دهد، نمايانگر بهترين رانندگي در اين پيچ‌ها است و نوع دوم زماني است كه او مي‌خواهد در اين پيچ، همزمان از حريفش سبقت بگيرد.

در اين مثال كل جاده به سكتور‌هاي متناسب كوچكي تقسيم‌بندي مي‌شود و پارامتر‌هاي سطح جاده به مقادير عدديِ قابل ترجمه تبديل مي‌شوند و مسير هر جزء كوچك جاده محاسبه مي‌شود. سپس با تركيب اين اجزاي، به‌صورت بصري، كل جاده بازسازي مي‌شود و مجاورت ماشين‌ها روي آن با هم نيز در اين تركيب نمايش‌داده مي‌شود.


شكل 2

عملاً كامپيوتر مي‌داند كه در پيچ بايد سرعتش را كم كند؛ زيرا در حال پيچيدن اگر سرعتش از حدي بيشتر باشد، كنترل ماشين را از دست خواهد داد. حال بسته به اين‌كه كامپيوتر از حريف انسانيش عقب‌تر است يا جلوتر، در نوع پيچيدن در اين گونه صحنه‌ها تصميم‌گيري مي‌كند.

اگر او عقب‌تر باشد، سعي مي‌كند با روش بهينه‌سازيِ پيچيدن كه شامل بريدن پيچ‌ها و حركت از داخلي‌ترين مسير است، كمي مسافت عقب‌افتاده را جبران كند.

در غير‌اين صورت، به روش عادي مي‌پيچد. نوع تقسيم‌بندي مسير جاده توسط هوش‌مصنوعي و دو نوع پيچيدن اتومبيل كامپيوتر در پيچ‌ها را در شكل شماره2 مي‌بينيد.


شكل 3

نوع ديگر تقلب كامپيوتر در اين بازي‌ها هم در استفاده از راه‌هاي ميانبر ديده مي‌شود.

هنگامي كه كامپيوتر از حريف انساني خود عقب مي‌افتد، بيشترين استفاده را از اين گونه راه‌ها كه مسير را برايش كوتاه‌تر مي‌كند، خواهد داشت. در شكل 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) ناميده مي‌شود، به اين صورت كار مي‌كند كه چندين دايره متوالي را در نقطه شروع مي‌سازد و در هر مرحله دايره‌هاي ديگري مي‌سازد كه قطر آن‌ها بزرگ‌تر از دايره‌هاي قبلي است. اين دواير متوالي و عناصر مربوط به هر يك، به‌تدريج بزرگ‌تر مي‌شوند و داراي شاخص‌هاي بزرگ‌تري نيز مي‌شوند.

حال، با حركت به سوي طرف مقابل و با پيروي از اين قانون كه در هر قدم ما به نقطه‌اي نزديك‌تر از نقشه حركت مي‌كنيم و شاخص اين نقطه كوچك‌تر است، ما به نقطه شروع مي‌رسيم. در نتيجه توسط عناصري كه توسط آن‌ها ما نقشه‌ را طي كرده‌ايم و بار ديگر از آن مسير بازگشته‌ايم، كوتاه‌ترين مسير بين نقطه شروع و نقطه هدف به وجود مي‌آيد.


شكل 4

با آزمايش روشي كه اين الگوريتم كار مي‌كند، متوجه خواهيم شد كه گرچه اين روش داراي برتري سادگي است، مشكل جدي‌اي هم دارد. مسيري كه اين الگوريتم در مثال ذكر‌شده پيدا كرده‌است تنها از پنج خانه نقشه بازي تشكيل شده‌ و اين سيستم براي اين كار 81 خانه را مورد آزمايش قرار داده ‌است.

حال فرض كنيد كه در نقشه‌اي كه متشكل از 256 خانه عرضي و طولي است، ‌بايد 65536 خانه مورد آزمايش قرار گيرد تا مسير مشخص گردد! در شكل 4 مي‌بينيد كه دايره شاخص شماره 4 توسط يك الگوريتم مسير‌يابي ساده به هدف مورد نظر رسيده‌است.

بايد توجه داشت در اين الگوريتم بهترين راه الزاماً نزديك‌ترين راه نيست. اين الگوريتم غير از مسير‌يابي، مي‌تواند فاكتور‌هاي ديگري همانند نوع زمين بازي را نيز مشخص كند. (به طور مثال، يك تانك در بازي‌هاي استراتژي در زمين معمولي تندتر از زمين گل‌آلود حركت مي‌كند).


از ديگر استفاده‌هاي اين الگوريتم، مي‌توان به تغيير محدوديت زاويه‌هاي دوربين و نمايش تعداد بيشتري از واحد‌ها در يك زمان، اشاره كرد. همچنين اين الگوريتم شرايطي را فراهم مي‌كند كه واحد‌ها نتوانند از نقاط غيرقابل عبور نقشه عبور كنند. البته نبايد فراموش كرد كه بهترين استفاده از اين الگوريتم همان راهيابي بين دو نقطه است. در زير شبه‌كد‌ها يا Psudocodeهاي الگوريتم *A را مشاهده مي‌كنيد:



به علت مشكل محاسباتي كه در بالا براي اين الگوريتم توضيح داده شد، روش‌هاي ويژه‌اي مدنظر قرار گرفته‌ شده است كه يكي از آن‌ها روش بهينه‌سازي است. در واقع تمام تلاش‌هاي يك سيستم هوش‌مصنوعي كه از اين الگوريتم استفاده مي‌كند، بدون روش بهينه‌سازي به علت عمليات‌هاي ناكارآمدي‌ كه براي تعيين مسير مي‌شود، از بين مي‌رود. به همين منظور از مدت‌ها پيش، متد‌هاي برنامه‌نويسي متعددي براي رفع اين نقيصه طراحي شد كه يكي از آن‌ها همين روش بهينه‌سازي بود. اين روش به دو صورت اين نقيصه را رفع مي‌كند:

●‌ بهينه سازي خودِ عمليات جست‌وجوي الگوريتم‌

●‌ بهينه سازي ساختار اطلاعاتي‌

در مورد اول، تمام نقشه بازي به نواحي كوچك‌تري تقسيم مي‌شود و الگوريتم نيز به دو بخش مجزا تقسيم مي‌شود. قسمت اول دنبال مسيري مي‌گردد كه بايد از آن ناحيه عبور كند. سپس قسمت دوم حركت را براي هر منطقه از نقطه ورود به نقطه هدايت مي‌كند. در نتيجه در هر ناحيه، با استفاده از الگوريتم *A مسير مطلوبي به ‌دست مي‌آيد. با اين روش به ‌طور عمده ميدان جست‌وجو را محدودتر و منابع محاسباتي را كمتر مي‌كنيم.

در واقع استفاده از اين روش درست مانند دنياي واقعي، هنگام رفتن فردي از يك جاي شهر به جاي ديگر است. در واقع كسي كه مي‌خواهد از نقطه‌اي از شهر به جاي ديگر آن برود، تمام مسير را با دقت مساوي طي نمي‌كند، بلكه به جاي آن به جاهاي شناسايي مشخصي مي‌رسد و از آنجا براي ادامه مسير خود و ميزان راه باقيمانده تا نقطه بعدي تصميم‌گيري مي‌كند.

فاكتور مطلوب‌سازيِ ديگر انتخاب مناسب عمليات و پارامتر‌هاي جست‌وجوگر است كه تعيين مي‌كند جست‌وجو تا چه محدوده‌اي از نقشه بازي صورت گيرد.


شكل 5

الگوريتم ماشين با حالات محدود
الگوريتم‌هاي ماشين با حالات محدود ‌(Finite State Machines) مدل‌هاي رفتاري‌اي هستند كه از موقعيت ‌‌(State)، انتقال اين موقعيت ‌‌(Transition) و ايجاد يك عمل ‌(Action) تشكيل مي‌شود. در يك موقعيت، اطلاعاتي قبلي ذخيره مي‌شود.

به طور مثال، اطلاعات ورودي از شروع سيستم تا زمان حال در اين بخش قرار مي‌گيرد. در مرحله انتقال، اين موقعيت تغيير مي‌كند و بسته به شرايط، انتقال مي‌يابد و در مرحله آخر اين موقعيتِ منتقل‌شده كه خود نماينده يك حالت بوده ‌است، يك عمل متناسب با آن موقعيت را ايجاد مي‌كند. در شكل 5، نمودار حالتي اين الگوريتم را در باز و بسته كردن يك در مشاهده مي‌كنيد.

دليل نامگذاري اين الگوريتم نيز مقايسه‌اي‌ است كه آن را از مغز انسان متمايز مي‌كند. همان طور كه مي‌دانيد مغز انسان در هر لحظه مي‌تواند عمليات ذكر شده در بالا را در تعداد نامتناهي انجام دهد. اما كامپيوتر و هوش‌مصنوعي، هرچند هم كه پيشرفته باشد، تنها قادر است تعداد معيني از اين عمليات را انجام دهد.

با اين‌كه الگوريتم‌هاي ساده‌اي هستند، در عين حال يكي از پركاربرد‌ترين و مؤثر‌ترين روش برنامه‌ريزي هوش‌مصنوعي مي‌باشند. براي هر موقعيت در يك بازي كامپيوتري مي‌توان مجموعه اعدادي از چگونگي آن لحظه قائل شد.

براي مثال، يك شواليه را در نظر بگيريد. او در بازي مي‌تواند زره بپوشد، به عنوان نگهباني عمل كند، حمله كند يا در حال استراحت باشد.
يا در يك بازي RTS يكي از مردم عادي شما مي‌تواند چوب جمع كند، خانه‌اي بسازد يا در برابر حمله دشمن از خود دفاع كند. بسته به موقعيت هر يك از اين دو شخصيت، اشيا و اجزاي بازي مي‌توانند عكس‌العمل‌هاي متفاوت، اما محدودي داشته باشند.

در واقع روش FSM به ما امكان مي‌دهد رفتار اين اجزا را در بازي به قسمت‌هاي كوچك‌تري مجزا كنيم و سپس با سهولت بيشتري اين قسمت‌ها را Debug و Extend كنيم. براي موقعيت هر شيء در لحظه آغازين و لحظه بعد از انجام عمل مورد نظر، كدي در نظر گرفته مي‌شود. براي انتقال موقعيت‌ها نيز كد‌هايي در نظر گرفته مي‌شود. اين كد‌ها در هر فريم از بازي مورد استفاده هوش‌مصنوعي قرار مي‌گيرد و با كد‌هاي آمده از محيط بازي نيز خود را تطبيق مي‌دهد.

شبكه عصبي مصنوعي و الگوريتم‌هاي پيشرفته در بازي‌هاي كامپيوتري
همان‌طور كه مي‌دانيد سيستم عصبي بدن انسان از دو قسمت مركزي ‌(CNS) و محيطي ‌(PNS) تشكيل شده ‌است. سيستم عصبي مركزي شامل مغز و نخاع و سيستم عصبي محيطي شامل رشته‌هاي عصبي و گيرنده‌هاي آن در اعضاي مختلف بدن است. وظيفه سيستم عصبي محيطي، جمع‌آوري اطلاعاتي است كه در نهايت بايد توسط مغز و نخاع پردازش شود. اخيراً با معرفي شبكه عصبي مصنوعي در مبحث هوش‌مصنوعي، درست ‌مانند سيستم عصبي بدن انسان، جزء محيطي نيز براي اين سيستم تعريف شده ‌است. در واقع اطلاعاتي كه قبلاً براي پردازش به هوش‌مصنوعي سپرده مي‌شد، با معرفي اين سيستم به نحو كامل‌تر و طبقه‌بندي‌تري در اختيار آن قرار مي‌گيرد.

بحث شبكه‌هاي عصبي مصنوعي و موارد استفاده آن‌ها در بازي‌هاي كامپيوتري، اخيراً به يكي از بحث‌هاي داغ در صنعت بازي‌سازي تبديل شده‌ است. در بسياري از مجلات و سايت‌هاي بازي به اين بحث و توانايي‌هاي الگوريتم‌هاي امروزي ساخت بازي‌ها اشاره شده‌ است. مشكلات مربوط به شبكه عصبي مصنوعي نيز بارها در اجلاس سازندگان بازي‌ها ‌(GDC) كه سالانه در شهر لندن برگزار مي‌شود مطرح شده ‌است.

بازي ماشين‌سواريِ Collin McRae Rally2 يكي از اولين بازي‌هايي است كه از اين سيستم در هوش‌مصنوعي خود استفاده كرده‌ است و اتفاقاً بسيار هم موفق بوده ‌است. در اين بازي در حين اين‌كه كامپيوتر سعي دارد ماشين‌هاي خود را به بهترين نحو در جاده كنترل كند، همزمان توسط كمك‌راننده ماشين‌ها، بنا به شيوه مسابقات رالي، توضيحاتي در مورد آينده جاده و نحوه پيچ‌ها مي‌دهد. در اين بازي‌ هم، درست مانند توضيحي كه در قسمت هوش‌مصنوعيِ بازي‌هاي ورزشي گفته ‌شد، هر جاده توسط خطوطي شكسته كه طرح خطي‌اي را براي هوش‌مصنوعي تشكيل مي‌دهند، شناخته مي‌شود.

اگر بخواهيم شبكه عصبي مصنوعي را براي اين بازي توضيح دهيم، بايد به اطلاعاتي اشاره كنيم كه اين سيستم آن‌ها را براي هوش‌مصنوعي جمعآوري مي‌كند. در واقع اطلاعات وروديِ شبكه عصبي مصنوعي اطلاعاتي است مانند: ميزان انحناي هر پيچ، فاصله اتومبيل تا ابتداي پيچ، نوع سطح جاده، سرعت و اجزاي سوارشده روي هر اتومبيل از قبيل توربو و فلاپ‌ها و كيت‌ها.

سپس اين شبكه وظيفه دارد اين اطلاعات ورودي را با عبور از لايه‌هاي مختلف به هسته اصلي هوش‌مصنوعيِ بازي (كه با موتور ساخت بازي نيز ارتباط تنگاتنگ دارد) برساند. سپس در آنجا پردازش‌هاي نهايي صورت مي‌گيرد و اطلاعات خروجي به‌ دست مي‌آيد. وظيفه پيرايش و نمايش اين اطلاعات خروجي باز هم به عهده شبكه عصبي مصنوعي است. بدين ترتيب در مثال بالا حركت و كنترل اتومبيل در جاده، بنا به موقعيت، به‌ درستي و به بهترين شكل ممكن صورت مي‌گيرد و قسمت معرفي جاده توسط كمك‌راننده نيز در كنار هدايت اتومبيل به طبيعي‌ترين حالت ممكن، انجام مي‌شود.

در كنترل اتومبيل به اين شيوه،‌ كامپيوتر مي‌داند كه مي‌تواند از روي موانع كوچك‌تر عبور كند؛ بدون آن‌كه مشكلي در هدايت داشته باشد يا مي‌داند كه در حالات برفي و باراني كه جاده لغزنده است، بايد زودتر از حالت طبيعي تصميم به پيچيدن داشته باشد. اين بازي از مدلي چند لايه به نام Perceptron Model استفاده مي‌كند. در علم پزشكي اين مدل عصبي-هدايتي كه نورون ‌McCulloch-Pitts هم ناميده مي‌شود، عبارت است شبكه‌اي از نورون‌ها كه ارتباطات سنگين و مهمي بين ورودي عده‌اي از نورون‌هاي با خروجي عده ديگر از نورون‌ها، برقرار مي‌كنند.

در واقع اين ارتباطات مانند سيناپس‌هاي پيشرفته‌اي هستند كه بر اساس تجربيات بسيار كوچك، تصميم‌هاي مؤثر و مهمي را اتخاذ مي‌كنند. تصميماتي مانند يادگيري‌هاي پيشرفته. با توضيحي كه در مورد شبكه عصبي مصنوعي در بازيِ فوق داده شد، مي‌بينيم كه شباهت‌هاي بسياري بين اين سيستم و سيستم به كاررفته در بازي‌ ديده مي‌شود. در شكل 6 يك نمونه ساده مدل Perceptron را مي‌بينيم.

شبكه عصبي مصنوعي، به صورت تئوري، مي‌تواند بسياري از وظايف كنوني هوش‌مصنوعي را انجام دهد و زمان و سرعت بيشتري را براي اعمال مهم‌تر در اختيار آن قرار دهد. ولي عملاً مسائلي، فعاليت اين شبكه عصبي را محدود مي‌كنند كه در ادامه به چند مورد از آن‌ها اشاره مي‌كنيم:

●‌ مشكلاتي در انتخاب اطلاعات ورودي مناسب براي اين شبكه‌

‌‌● عدم حساسيت اين شبكه به تغييرات منطقي كنش‌هاي بازي و دوباره سازيِ هر شبكه با تغيير هر حالت در بازي.

‌● ساختار مشكل و پيچيده آن و مشكلاتي كه در Debug كردن هر موقعيت به وجود مي‌آورد.

● زمان زيادي كه براي طراحيِ چنين شبكه‌اي احتياج است.

حال براي مقابله با مشكلات فوق، چه كاري بايد انجام داد تا بتوان در بازي‌هاي كامپيوتري امروزي، با اين سيستم حداكثر بهره را برد؟

در ابتدا بايد نوع اطلاعاتي را مشخص كنيم كه مي‌خواهيم توسط اين سيستم پردازش شود. به‌طور مثال بازي‌اي را در نظر بگيريد كه سيستم عصبي هوشمند در آن قرار است هدايت هواپيماي مقابل ما را داشته باشد. اطلاعاتي كه اين سيستم قرار است آن‌ها را پردازش كند، عبارتند از: مسير‌هاي مطلوب راندن هواپيما و سرعت، شتاب و ارتفاعي كه هواپيماي او را به هواپيماي ما خواهد رساند.

در مثال ديگر، مي‌توان به يك بازي RTS اشاره كرد. بسته به تحليل هر موقعيت، اين شبكه تصميم به گسترش شهر و فتوحات، توسعه ارتش يا تعميرات بعد از جنگ، خواهد گرفت. تمام پارامتر‌هايي كه بازي بايد آن‌ها را به‌صورت بصري و صوتي در اختيار بازي‌كننده بگذارد، بايد از فيلتر اين سيستم گذشته باشد و به صورت خروجي در اختيار ما قرار گيرد. با اين‌كه مرحله خروجي اين سيستم ساده به‌نظر مي‌آيد، مشكل اصلي انتخاب پارامتر‌هاي ورودي براي اين سيستم است.

پارامتر‌هاي پيچيده بايد طوري انتخاب شوند كه امكان ساده‌تر شدن توسط اين سيستم را در مدت زمان كمي داشته باشند. يك قانون كلي در اين بحث مي‌گويد: <اطلاعات ورودي بايد تا جايي كه امكان دارد بيشترين اطلاعات را در مورد دنياي بازي بدهد> اين قانون در مثال بازيِ هواپيمايي اينگونه است كه اطلاعات ورودي هر زمان براي يك حريف كامپيوتري بايد شامل ارتفاع و موقعيت هواپيماي ما، وضعيت جو و آب و هوا، ميزان خسارت هواپيماي ما و كامپيوتر، سرعت و شتاب هواپيماي خود و ما و موارد باشد؟!

قدم بعدي در تسهيل كار اين سيستم، اين است كه تا جايي كه مي‌شود براي هر موقعيت موارد مشابه از قبل تعريف شده باشد و هوش‌مصنوعي اين امكان را داشته باشد كه اطلاعات به دست آمده از تجربيات سپري شده‌اش را حفظ كند. به طور مثال نوع پرواز و حمله قبلي هواپيماي ما را بداند و آن را در خاطره خود ثبت كند و در موارد بعدي از آن استفاده نمايد.

به كارگيري شبكه عصبي مصنوعي در عمل كار ساده‌اي نيست. طراحي آن به زمان، تجربه و صبر زيادي احتياج دارد. منطق عملياتي اين شبكه برخلاف تجربيات صفر و يكي كامپيوتر و مانند مغز انسان،‌ گسترده‌تر است. اين منطق نشان مي‌دهد كه آيا موقعيت ظاهري در هر لحظه از بازي واقعي است يا خير و اگر واقعي است تا چه حدي مهم و قابل اعتنا است. گرچه طراحي چنين شبكه‌هايي كاري سخت و طاقت‌فرسا است، بازي‌ها و نتايجي كه از طراحي آن‌ها گرفته مي‌شود، اكثراً حيرت‌انگيز و تماشايي هستند. در آينده استفاده از اين شبكه‌هاي عصبي هوش‌مصنوعي را در اكثر بازي‌هايي كه دوستشان داريد، خواهيد ديد.


شكل 6

كتابخانه‌هاي هوش‌مصنوعي
طراحي يك سيستم قويِ هوش‌مصنوعي در يك بازيِ كامپيوتري كاري است كه نيازمند وقت و تجربه زيادي است. اگر يك شركت طراح بازي نتواند تيم طراحي قوي‌اي براي اين‌كار داشته باشد، مي‌تواند يك سيستمِ از قبل طراحي شده را كه در بازار نرم‌افزاري وجود دارد، از شركت ديگر خريداري كند.

در اين قسمت اشاره‌اي خواهيم داشت به دو نمونه از معروف‌ترين و بهترين نمونه‌هاي هوش‌هاي مصنوعي ساخته شده.


هوش مصنوعيِِ 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 قابل استفاده است.

سخن آخر
هوش مصنوعي يكي از پهناورترين، جذاب‌ترين و مهم‌ترين قسمت‌هاي علوم كامپيوتري است. در اين مقاله سعي شد مفاهيم اوليه اين علم در ساخت بازي‌هاي كامپيوتري توضيح داده شود. البته بايد بدانيد هوش‌مصنوعي در اين بازي‌ها مبحث مفصل و گسترده‌اي است كه در بسياري از دانشگاه‌هاي معتبر دنيا براي آن رشته‌هاي تا حد كارداني در نظر گرفته ‌شده است. در معدود بازي‌هاي توليدشده در كشورمان مي‌بينيم كه قسمت هوش‌مصنوعي بازي بسيار ايراد دارد. علت هم مشخص است.

ساخت هوش‌مصنوعي (و همچنين موتور‌هاي ساخت بازي) يا بايد توسط طراحان كشورمان صورت گيرد كه متأسفانه علم آن وجود ندارد يا از مدل‌هاي خارجي استفاده شود كه آن هم به ‌علت هزينه‌هاي زياد خريد آن‌ها عملاً غيرممكن است. اميدواريم در آينده با پيشرفت برنامه‌نويسان كشورمان در اين حوزه، بتوانيم بازي‌هاي كامپيوتري ساخت كشورمان را با لذت و بدون احساس تفاوت‌هاي آشكار با نمونه‌هاي خارجي‌شان، بازي كنيم .
mohammad_tz آفلاين است   پاسخ با نقل قول
از mohammad_tz تشكر كرده اند:
edrisfm (۰۳-۱۴-۱۳۹۱), عرفان (۰۳-۵-۱۳۸۹)