در بسیاری از ژانرهای بازیآهای کامپیوتری، نزدیکآتر بودن به واقعیت، هم برای سازندگان و هم برای دوستداران بازی جایگاه ویژهآای دارد. گرافیک بازیآها در طبیعیآتر جلوه دادن محیط و چهرهآها، و استفاده از صدا و افکتآهای صوتی پیشرفته در واقعیت بخشیدن به اتفاقاتی که در بازیآها با آن روبهآرو میآشویم، موثرند. انیمیشن نیز هر چه با دقت و جزئیات بیشتری طراحی شود، باورپذیرتر به نظر میآآید. ولی آنچه دوستداران بازی را در ژانرهای ویژهآای از بازیآها به وجد میآآورد، هوشمندی شخصیتآهای بازی است. حوصله همه از اینآکه همآتیمیآهای مجازیشان در بازیآهای کامپیوتری نسنجیده عملآکنند، سر میآرود. گاه آنآها نمیآتوانند از خودشان هم محافظت کنند؛ چه برسد به آنآکه بخواهند در طول بازی به شما کمک کنند. مبارزه با دشمنانی که دست کمی از افرادتان ندارند نیز جذابیتی ندارد. همانآگونه که گرافیک خوب به مدلآها، صدای خوب به رویدادها و انیمیشن خوب به حرکتآهای موجود در بازی واقعیت میآبخشد، استفاده از روشآهای مختلف هوش مصنوعی نیز رفتار شخصیتآهای بازی را طبیعیآتر میآکند. در بازیآهای کامپیوتری، هوش مصنوعی بیشتر برای شخصیتآهای مجازی مقابل شما به کار میآرود و اگر در بازی، همآتیمیآهایی نیز داشته باشید که خودِ بازی، آنآها را کنترل میآکند، برای آنآها نیز به کار میآرود. برای ملموسآتر بودن توضیحاتی که در ادامه پیشآرو خواهد بود، از رفتار شخصیتآهای مجازی بازی Counter - 1.7 Strike در حالتی که دستآکم کنترل یک طرف بازی با کامپیوتر است و بازیآهای Quake استفاده خواهد شد. هوش مصنوعی در بازی Counter - Strike به خوبی پیادهآسازی شده است و بسیاری از دوستداران بازی نیز با آن آشنا هستند. وقتی در هر مرحله، شخصیتآ مجازی شما کشته میآشود و چند دقیقهآای از بازی بیرون هستید، زمان خوبی است که رفتار هم تیمیآها و دشمنانتان را بررسی کنید و به عملکرد هوش مصنوعی آنآها پی ببرید. پنهانآشدن، آهسته حرکت کردن و همکاری آنآها با هم، بسیار دیدنی است و در کمتر بازیآای چنین رفتارهایی دیده میآشود.
کاربرد هوش مصنوعی
هدف هوش مصنوعی نزدیک نمودن رفتار و پاسخ یک سیستم کامپیوتری به الگوهایی است که انسان براساس آنآها رفتار میآکند و پاسخ میآدهد. گاه سیستمآهایی طراحی میآشوند که قدرت تجزیه و تحلیل آنآها از انسان بیشتر است. ولی باز از الگوهای ما استفاده میآکنند. هوش مصنوعی با سیستم فازی یا سیستمی که انسان برطبق آن تصمیم میآگیرد، رابطه تنگاتنگی در این سیستم برخلاآف سیستم صفر و یک دیجیتال، میآتوان به یک متغیر مقداری کمتر از یک و بیشتر از صفر نیز داد.
برای نمونه میآخواهید یک بازی کامپیوتری را از میان چندین بازی مورد علاآقه خود بخرید و از آنجا که مقدار پول شما مشخص است، میآخواهید فقط یک بازی را برگزینید. پس شما به بازیآهای مورد علاآقهآ خود، امتیازی بین صفر و یک میآدهید. ارزش صفر برای بازیآهایی است که کمتر آنآها را دوست دارید و هر چه مقدار عددیِ بیشتری به آن بازی بدهید، بیشتر آن را دوست دارید و از میان آنآها بازیآای که بیشترین ارزش را برای شما دارد، انتخاب میآکنید.
از دید فروشنده، شما با سیستم صفر و یک پاسخ دادهآاید و بازیآهای دیگر را انتخاب نکردهآاید. هرچند در واقع شما فازی فکر کردهآاید، ولی با منطق صفر و یک پاسخ دادهآاید. اگر کامپیوترها فازیآتر تحلیل کنند، هوشمندتر میآشوند. ولی پاسخ آنآها باید براساس همین صفر و یک باشد؛ چرا که هیچ کس نمیآخواهد یک پاسخ غیرقطعی از کامپیوتر دریافت کند. هر چه رفتارهای شخصیتآهای بازی بیشتر براساس سیستم فازی باشد، پیشآبینیآناپذیرتر و هوشمندانهآتر خواهند بود. یعنی میآتوانند در مقابل رفتارهای مختلف شما و موقعیت محیط، رفتارهایی متفاوت نشان دهند.
انواع هوش مصنوعی
در بازیآهای کامپیوتری سه نوع هوش بیشتر از همه استفاده میآشوند که به صورت خلاآصه عبارتند از:
آآهوش مصنوعی رویدادگرا: این هوش معمولآترین نوع هوش مصنوعی است. رویداد میآتواند شامل هر چیزی اعم از اتفاقات بازی تا دستوراتی باشد که کاربر به شخصیت مجازی خود میآدهد. براساس هر رویدادی که در بازی انجام میآشود، یک واکنش هوشمندانه نیز روی میآدهد. در بازی کانتراسترایک دشمن شما نسبت به صدا حساس است و صدای دویدن شما را هم میآشنود. از اینآرو بسته به موقعیت خود، یا به آهستگی پنهان میآشود، یا برمیآگردد و از راه دیگری به سوی شما میآآید یا به سوی شما میآآید و شلیک میآکند.
هوش مصنوعی هدفآگرا: این نوع هوش مصنوعی از هوش مصنوعی رویدادگرا مستقل است. ولی هوش مصنوعی رویدادگرا میآتواند در طراحی یک بازی، هدفآهای موتور هوش مصنوعی هدفآگرا را تامین کند. این نوع هوش مصنوعی، هدفِ با ارزش بیشتر را برمیآگزیند و آن را با تقسیم به زیرهدفآهای کوچکآتر، پردازش میآکند.
شاید در بازی کانتراسترایک زمانی که کامپیوتر هم کنترل هم تیمیآها و هم کنترل دشمنان شما را به عهده دارد، دیده باشید که وقتی با هم تیمیآهایتان به سوی دشمنان خود تیراندازی میآکنید، آنآها هم بیشتر به سوی شما شلیک میآکنند تا دیگر همآتیمیآهایتان؛ چرا که شما باید هدفآهای خواستهآشده در بازی (مانند آزاد کردن گروگانآها یا خنثی کردن بمب) را انجام دهید. برای همین ارزش شما برای آنآها بیشتر است.
محفظهآهای سوراخ: این روش ترکیبی از دو روش گفته شده است. روش کار ساده است. دو محفظه دارید و چند نوع کار: فرار (flee)، مبارزه (fight) و پرکردن تفنگ (restock) را در نظر میآگیریم. محفظهآها مقداری از محتوای خود را با گذشت زمان از دست میآدهند.
شما اسکریپتی را در ارتباط با محفظهآای که بیشتر پر است، به اجرا در میآورید. رویدادهایی که اتفاق میآافتند، این محفظهآها را با ارزشآهای مختلفی پر میآکنند و این محفظهآها پر و خالی میآشوند. برای نمونه دشمن مجازی را در موقعیتآهای زیر در نظر بگیرید که میآتوان بسته به طراحی بازی عددهای زیر را کم و زیاد کرد:آ
- شما دشمن را ببینید، پنج درصد به ارزش فرار و ده آدرصد به ارزش مبارزه او افزوده میآشود. چون در بازی اولین هدف مبارزه است نه فرار. فرار کاری است که هنگام رویاآرویی با دشمن زمانی که دشمن شما موقعیت مناسبی ندارد، انجام میآدهد. پس ارزش مبارزه در اینجا از فرار بیشتر است.
- گلوله او کم باشد، بیست درصد به ارزش ریستوک یا پر کردن تفنگ افزوده میآشود. چون شاید به زودی به آن نیاز داشته باشد.
- اگر آسیبآدیدگی او کم باشد، بیستآدرصد به ارزش فرار و دهآدرصد به ارزش ریستوک افزوده میآشود. چون اگر شخصیت مجازی آسیب کمی دیده باشد، با ماندن در یکآجا و پرکردن تفنگ خود چنانچه در تیررس شما باشد، آسیب بیشتری میآبیند.
پس در حالی که جای خود را عوض میآکند، باید تفنگ خود را نیز پرکند. چون اگر باز در تیررس قرار بگیرد و گلولهآهای او رو به پایان باشد، هنگام پرکردن، آسیب بیشتری میآبیند. دشمنان شما در کانتراسترایک نیز این کار را میآکنند. اگر شما پشت سر هم به آنآها شلیک کنید، در پشت دیوار پنهان میآشوند یا به جایی فرار میآکنند و تفنگ خود را در صورت رو به پایان بودن گلولهآها پرمیآکنند. پس اولویت در فرار و قرار گرفتن در یک جای خوب و سپس پر کردن تفنگ است.
- شلیک به سوی او و آسیبآدیدگی زیاد باشد، پنجاه درصد به ارزش مبارزه افزوده میآشود و بیستآدرصد از ارزش فرار و ریستوک کم میآشود. چون وقتی به سوی او شلیک میآکنید، هنگام فرار اگر در جای مناسبی نباشد، آسیبآپذیرتر میآشود و زمانی که تفنگ خود را پر میآکند، شما آسانآتر میآتوانید به سوی او شلیک کنید.
- اگر در یکآبار شلیک پنجاهآدرصد آسیب ببیند، پنجاهآدرصد به ارزش فرار و بیستآدرصد به ارزش ریستوک افزوده میآشود و پنجاهآدرصد از ارزش مبارزه کم میآشود. گاهی با یک سلاآح قوی میآتوانید آسیب بیشتری به دشمنتان برسانید. اگر در بازی کانتراسترایک، یک نارنجک به سمت دشمن پرتاب کنید، بیش از نیمی از نیروی او کم میآشود. اگر او در جای مناسبی نباشد، چون بیش از نیمی از نیروی خود را از دست دادهآاست، باید فرار کند و تنها زمانی که موقعیت او از موقعیت شما بهتر است، شلیک میآکند. در اینجا فرار ارزش بیشتری دارد.
هوش مصنوعی در ژانرهای بازی
بازیآهای کامپیوتری اکشن، ماجرایی - اکشن و تیراندازی، بیش از بازیآهای ژانرهای دیگر از هوش مصنوعی استفاده میآبرند. بازیآهای مسابقهآای و استراتژیک نیز میآتوانند از هوش مصنوعی برای قویآتر کردن رقیبانشان استفاده کنند. نمونه خوب بازیآهای مسابقهآای، Need For Speed UnderGround2 است. در این بازی، هنگامی که در شهر مشغول رانندگی هستید، میآتوانید با اتومبیلآهای مسابقهآای دیگر که مانند شما در شهر حرکت میآکنند مسابقه دهید. برای اینآکار باید به آن اتومبیل نزدیک شوید و هنگامی که منوی پرسش برای پذیرش مسابقه را دیدید، کلید Enter را فشار دهید.
هنگامی که جلو هستید باید فاصله شما از آن اتومبیل بیش از یک مقدار خاص باشد تا برنده شوید و زمانی که پشت سر او هستید، نباید فاصلهآ شما از این مقدار بیشتر باشد. اگر همزمان با مسابقه به نقشه کوچک گوشه مانیتور نگاه کنید، میآبینید زمانی که راننده رقیب از شما عقبآتر است، کوتاهآترین مسیر را برای رسیدن به شما از میان خیابانآهای مختلف که به هم راه دارند انتخاب میآکند و زمانی که از شما جلوتر است، هنگام رسیدن به تقاطعآها ناگهان تغییر مسیر میآدهد تا شما را سردرگم کند.
در بازی Need For Most Wanted، به نظر میآآید پلیسآها در تعقیب و گریز شما و یافتن مسیر، ضعیفآتر عمل میآکنند. البته شاید شرکت EA، خود اینآگونه خواسته است. به غیر از این، بازیآهای ماجرایی معمولاآً نیازی به هوش مصنوعی ندارند؛ چرا که کنترل شخصیت بازی به عهده شماست و آنچه باید از پیش روبردارید، پازلآهای طراحی شده است نه دشمنان یا هیولاآهایی که به هوشمندآسازی نیاز داشته باشند؛ مانند بازی سایبریا.
هوش مصنوعی، بیشتر در بازیآهای تیراندازی اول شخص (FPS) گسترش یافت. یک بازی تیراندازی اول شخص بیشتر از یک موتور براساس هوش مصنوعی رویدادگر استفاده میآکند که رویدادها و واکنشآها میآتوانند مانند الگوی زیر باشند:
- هنگام دیده شدن: یورش با مناسبآترین سلاآح
- هنگام آسیبآدیدگی زیاد: فرار و بازگرداندن نیرو. مانند استفاده از کیتآهای سلاآمتی در برخی بازیآها.
- نبود گلوله: پیدا کردن گلوله
شایان ذکر است که استفاده از روش محفظهآهای سوراخ میآتواند هوش مصنوعی در این بازیآها را انعطافآپذیرتر کند.
پیدایش و پیشرفت هوش مصنوعی
در اواسط دهه 1990، یک بازی تیراندازی اول شخص منتشر شد که به کاربر امکان میآداد بازی را برای خود سفارشی (Customize) کند. این بازی، Quake بود که در فناوری ساخت بازیآهای کامپیوتری یک نوآوری محسوب میآشد. Quake اولین بازی سهآبعدی واقعی است. به این معنی که بهآصورت بلاآدرنگ در سه بعد رندر میآشود. (پیش از آن spiritها یا گرافیکآهای دوبعدی به صورت سهآبعدی شبیهآسازی میآشدند). چیزهای دیگری نیز در این بازی وجود داشت که موردتوجه قرار گرفت؛ مانند نشانه گرفتن سلاآح به بالا یا پایین. زیرا حرکتآدادن سلاآح به بالاآ یا پایین نیازمند پردازش در بعد سوم، یعنی عمق یا ارتفاع در یک محیط سهآبعدی است.
بازی Quake از موجودات مجازی هوشمند (bot) هر چند با هوش مصنوعی کم، بهره برده بود. هوش مصنوعی یکbot در بازیآهای تیراندازی اول شخص، میآتواند در دو بخش بررسی شود: یکی ناوبری و حرکت، و دیگری مبارزه. اگر بخواهیم رفتار bot نزدیک به رفتار یک انسان باشد، پیادهآسازی آن بسیار پیچیدهآتر از هوشآمصنوعی در مبارزه است. هر چند پیادهآسازی هوش مصنوعی در مبارزه نیز با هر استاندارد و روشی آسان نیست.
برای اینآکه باتآها بتوانند حرکت کنند، باید بتوانند درباره اشیا و موجودات پیرامون خود یاد بگیرند. این ایده بسیار اساسی، میآتواند به بخشآهای بیشآتری مانند قابلیت آنالیز هنگام حرکت در یک جهت خاص و سپس قابلیت پیدا کردن اشیا و شخصیتآهای مجازیِ مقابل در یک مرحله بازی گسترش یابد. این ایدهآها شاید ساده به نظر برسند، ولی واقعاً اینآگونه نیست؛ چرا که یک bot باید بتواند در برابر دو چیز واکنش درستی داشته باشد: دیوارها و فضاهای خالی.
دیوارها شامل همه چیزهایی است که نمیآتوان از آن عبور کرد؛ مانند خود یک دیوار، نرده، شخصیتآهای مجازی، جعبهآها، پلهآهای رو به بالاآ و ... فضاهای خالی نیز هر جایی است که زمین همواره نیست یا دچار شکستگی است؛ مانند یک چاله، پلهآهای رو به پایین و ... . برای رویارویی با این دو مانع، یک روش خوب، افزایش کارایی تابع جستجو است. این تابع که در بازی Quake معرفی شد، به بات امکان میآدهد یک خط را از یکی از بُعدهای X-Y-Z تا بُعد بعدی جستجو کند و اطلاآعاتی مانند اینآکه <این خط به کجا میآرود، چه چیزی آن را قطع میآکند و ...> را دریافت کند.
دو روش برای گذشتن یکبات از یک مرحله، بیشتر مورد استفاده قرار میآگیرد: روش نخست از گرهآهای گراف وضعیت و روش دوم از مسیرهای (path) آن استفاده میآکند. در یک محیط براساس روش گره، گرهآها در قسمت قوانین بهینهآسازی مرحله (level) که به وسیله سازنده یک bot تعریف شده است قرار دارند. هر گره میآتواند اطلاآعات بات درباره قسمت خاصی از محیط را بدهد. وضعیت مبارزه، کاربردهای زیادی برای تعدادی از الگوریتمآهای جستجو یا پروسه تصمیمآگیری دارد. در یک مبارزه، باید برای تشخیص اینآکه کدام کار برای بات بهتر است حرکتآهای رقیب پیشآبینی شود.
روش Minimax، در مواقعی که یک تابع هیورستیک خوب (یک هیورستیک برخلاآف الگوریتم، ممکن است به یک پاسخ قطعی نرسد) در دست باشد، میآتواند یک حرکت خوب را انجام دهد. از آنجا که minimax روش کندی است، میآتوان از Partial Minimax استفاده کرد که در الگوریتمآهای تصمیمآگیری به کار میآرود؛ هر چند این روش هنوز چندان پذیرفته نشده است.
پژوهشگران هوش مصنوعی پیشنهاد میآکنند، تنها زمانی از Partial Minimax استفاده کنید که یک گزینه بدیهی در دست داشته باشید (زمانی که متغیر minimax با ارزش بیشتر کاملاآ بهتر از متغیر دیگر باشد). در غیر اینآصورت اگر ارزش همه متغیرها نزدیک به هم است، از استراتژی دیگری استفاده کنید. حال آنآکه در یک بازی بلاآدرنگ برای یکbot معمولاآً گزینه بدیهی وجود ندارد تا آن را برگزینید. هر گزینه به یک استراتژی متفاوت وابسته است که bot میآتواند آن را انتخاب کند.
شاید بسیاری از طرفداران روش minimax به ارزش سرعت، هنگام بررسی کارایی یک بات در بازی بلاآدرنگ واقف نیستند؛ مانند کمترین زمانی که یک بات نیاز دارد تا درباره یک تصمیم بیندیشد، گزینهآهای بیشتری که برای تصمیمآگیری ایجاد میآکند، کیفیت واکنش بهتر و سطح خبرگی. به یاد داشته باشید که یک بات در برابر مغز یک انسان که میآتواند دنیای سهآبعدی را با کمک حس و تخیل خود تفسیر کند، قرار میآگیرد. برای نمونه در یک مبارزه، یک بات نیاز به نشانهآگیری به سوی دشمن خود، پیشآبینی حرکت آنآ و... دارد که همه، بدون داشتن درک واقعی از محیطی که در آن قراردارد انجام میآشود.
برای دستیابی به بیشترین سرعت، بیشتر از الگوریتم *A استفاده میآشود. هر چند این الگوریتم پیشرفته نیست، ولی سرعت بالاآیی دارد. پیچیدگی زمانی این الگوریتم ((O(log h(n است که (h(n پیچیدگی تابع هیورستیک است. *A یک الگوریتم جستجوی "اول عمق" است که هیورستیک آن را کنترل میآکند و میآتواند مناسبآترین شاخه بعدی گراف را حدس بزند و در هر عمق، تنها شاخهآای که ارزش هیورستیک بهتری دارد، گسترش میآیابد.
با تشکر از ریحانه عزیز
و ادامه دارد ...............................
کاربرد هوش مصنوعی
هدف هوش مصنوعی نزدیک نمودن رفتار و پاسخ یک سیستم کامپیوتری به الگوهایی است که انسان براساس آنآها رفتار میآکند و پاسخ میآدهد. گاه سیستمآهایی طراحی میآشوند که قدرت تجزیه و تحلیل آنآها از انسان بیشتر است. ولی باز از الگوهای ما استفاده میآکنند. هوش مصنوعی با سیستم فازی یا سیستمی که انسان برطبق آن تصمیم میآگیرد، رابطه تنگاتنگی در این سیستم برخلاآف سیستم صفر و یک دیجیتال، میآتوان به یک متغیر مقداری کمتر از یک و بیشتر از صفر نیز داد.
برای نمونه میآخواهید یک بازی کامپیوتری را از میان چندین بازی مورد علاآقه خود بخرید و از آنجا که مقدار پول شما مشخص است، میآخواهید فقط یک بازی را برگزینید. پس شما به بازیآهای مورد علاآقهآ خود، امتیازی بین صفر و یک میآدهید. ارزش صفر برای بازیآهایی است که کمتر آنآها را دوست دارید و هر چه مقدار عددیِ بیشتری به آن بازی بدهید، بیشتر آن را دوست دارید و از میان آنآها بازیآای که بیشترین ارزش را برای شما دارد، انتخاب میآکنید.
از دید فروشنده، شما با سیستم صفر و یک پاسخ دادهآاید و بازیآهای دیگر را انتخاب نکردهآاید. هرچند در واقع شما فازی فکر کردهآاید، ولی با منطق صفر و یک پاسخ دادهآاید. اگر کامپیوترها فازیآتر تحلیل کنند، هوشمندتر میآشوند. ولی پاسخ آنآها باید براساس همین صفر و یک باشد؛ چرا که هیچ کس نمیآخواهد یک پاسخ غیرقطعی از کامپیوتر دریافت کند. هر چه رفتارهای شخصیتآهای بازی بیشتر براساس سیستم فازی باشد، پیشآبینیآناپذیرتر و هوشمندانهآتر خواهند بود. یعنی میآتوانند در مقابل رفتارهای مختلف شما و موقعیت محیط، رفتارهایی متفاوت نشان دهند.
انواع هوش مصنوعی
در بازیآهای کامپیوتری سه نوع هوش بیشتر از همه استفاده میآشوند که به صورت خلاآصه عبارتند از:
آآهوش مصنوعی رویدادگرا: این هوش معمولآترین نوع هوش مصنوعی است. رویداد میآتواند شامل هر چیزی اعم از اتفاقات بازی تا دستوراتی باشد که کاربر به شخصیت مجازی خود میآدهد. براساس هر رویدادی که در بازی انجام میآشود، یک واکنش هوشمندانه نیز روی میآدهد. در بازی کانتراسترایک دشمن شما نسبت به صدا حساس است و صدای دویدن شما را هم میآشنود. از اینآرو بسته به موقعیت خود، یا به آهستگی پنهان میآشود، یا برمیآگردد و از راه دیگری به سوی شما میآآید یا به سوی شما میآآید و شلیک میآکند.
هوش مصنوعی هدفآگرا: این نوع هوش مصنوعی از هوش مصنوعی رویدادگرا مستقل است. ولی هوش مصنوعی رویدادگرا میآتواند در طراحی یک بازی، هدفآهای موتور هوش مصنوعی هدفآگرا را تامین کند. این نوع هوش مصنوعی، هدفِ با ارزش بیشتر را برمیآگزیند و آن را با تقسیم به زیرهدفآهای کوچکآتر، پردازش میآکند.
شاید در بازی کانتراسترایک زمانی که کامپیوتر هم کنترل هم تیمیآها و هم کنترل دشمنان شما را به عهده دارد، دیده باشید که وقتی با هم تیمیآهایتان به سوی دشمنان خود تیراندازی میآکنید، آنآها هم بیشتر به سوی شما شلیک میآکنند تا دیگر همآتیمیآهایتان؛ چرا که شما باید هدفآهای خواستهآشده در بازی (مانند آزاد کردن گروگانآها یا خنثی کردن بمب) را انجام دهید. برای همین ارزش شما برای آنآها بیشتر است.
محفظهآهای سوراخ: این روش ترکیبی از دو روش گفته شده است. روش کار ساده است. دو محفظه دارید و چند نوع کار: فرار (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 یک الگوریتم جستجوی "اول عمق" است که هیورستیک آن را کنترل میآکند و میآتواند مناسبآترین شاخه بعدی گراف را حدس بزند و در هر عمق، تنها شاخهآای که ارزش هیورستیک بهتری دارد، گسترش میآیابد.
با تشکر از ریحانه عزیز
و ادامه دارد ...............................