ماشین لرنینگ در بازی سازی و آموزش یک فرمانده هوش مصنوعی در موتور Unity

ماشین لرنینگ در بازی‌سازی؛ چگونه Unity می‌تواند بازی‌هایی بسازد که از تجربه یاد می‌گیرند؟

ماشین لرنینگ در بازی‌سازی؛ چگونه Unity می‌تواند بازی‌هایی بسازد که از تجربه یاد می‌گیرند؟

تصور کنید دشمن بازی شما فقط مجموعه‌ای از دستورهای از پیش نوشته‌شده نباشد؛ بلکه بتواند از شکست‌های قبلی خود درس بگیرد، رفتار بازیکن را بررسی کند و در نبرد بعدی تصمیم متفاوتی بگیرد. این دقیقاً جایی است که Machine Learning می‌تواند وارد دنیای بازی‌سازی شود.

آیا هوش مصنوعی بازی همان Machine Learning است؟

وقتی درباره هوش مصنوعی در بازی‌ها صحبت می‌کنیم، معمولاً تصور ما به سمت دشمنانی می‌رود که بازیکن را تعقیب می‌کنند، پشت سنگر پنهان می‌شوند یا هنگام نزدیک شدن بازیکن حمله می‌کنند. اما بخش بزرگی از این سیستم‌ها الزاماً از Machine Learning استفاده نمی‌کنند.

در بسیاری از بازی‌های کلاسیک، رفتار دشمن با روش‌هایی مانند Finite State Machine، درخت تصمیم، سیستم‌های Rule-Based و الگوریتم‌های مسیریابی طراحی می‌شود.

برای مثال، برنامه‌نویس می‌تواند مشخص کند:

  • اگر بازیکن نزدیک بود، حمله کن.
  • اگر سلامتی کمتر از ۳۰ درصد شد، عقب‌نشینی کن.
  • اگر دشمن در محدوده نبود، گشت‌زنی کن.
  • اگر بازیکن پشت مانع قرار گرفت، آخرین موقعیت او را بررسی کن.

این روش‌ها بسیار قدرتمند و قابل کنترل هستند، اما یک محدودیت مهم دارند: رفتار اصلی توسط انسان طراحی شده است.

Machine Learning رویکرد متفاوتی دارد. در اینجا می‌توان سیستمی ایجاد کرد که به جای دریافت تمام دستورهای رفتاری از برنامه‌نویس، از داده، تجربه یا نتیجه تصمیم‌های قبلی برای پیدا کردن الگو استفاده کند.

Machine Learning در بازی‌سازی دقیقاً چه کاری انجام می‌دهد؟

Machine Learning را می‌توان در بازی مانند یک سیستم یادگیرنده در نظر گرفت. این سیستم اطلاعاتی از محیط دریافت می‌کند، بر اساس آن تصمیم می‌گیرد، نتیجه تصمیم را مشاهده می‌کند و در بعضی روش‌ها می‌تواند مدل خود را برای تصمیم‌های آینده بهبود دهد.

این موضوع باعث می‌شود کاربرد Machine Learning در بازی‌سازی فقط به «باهوش‌تر کردن دشمن» محدود نباشد.

NPCهای هوشمند

NPC می‌تواند الگوهای رفتاری بازیکن را بررسی کرده و رفتار مناسب‌تری نسبت به شرایط مختلف انتخاب کند.

دشمنان تطبیقی

سیستم می‌تواند میزان سختی یا سبک مقابله دشمن را بر اساس عملکرد بازیکن تغییر دهد.

فرمانده‌های هوشمند

یک فرمانده AI می‌تواند بین چند استراتژی مختلف تصمیم‌گیری کند و نتیجه تصمیم‌های قبلی را در انتخاب‌های آینده لحاظ کند.

پیش‌بینی رفتار بازیکن

مدل می‌تواند از داده‌های بازی برای تشخیص الگوهای رفتاری بازیکنان استفاده کند.

یک مثال واقعی: فرمانده‌ای که از شکست‌هایش یاد می‌گیرد

برای درک بهتر موضوع، یک بازی استراتژیک را تصور کنیم. بازیکن در مقابل یک فرمانده هوش مصنوعی قرار دارد و هر دو طرف دارای ارتش، منابع، ساختمان‌ها و واحدهای نظامی هستند.

در نسخه سنتی بازی، ممکن است برنامه‌نویس چند استراتژی مشخص برای فرمانده طراحی کرده باشد.

A
حمله مستقیم

تمام نیروها از مسیر اصلی به سمت پایگاه بازیکن حرکت می‌کنند.

B
حمله از جناح

بخشی از نیروها از سمت راست نقشه حمله می‌کنند.

C
حمله چندمرحله‌ای

نیروها ابتدا دفاع بیرونی را هدف قرار داده و سپس وارد پایگاه می‌شوند.

D
استراتژی ترکیبی

سیستم بر اساس نتایج قبلی، نقاط ضعف روش‌های A، B و C را بررسی کرده و ترکیبی جدید از حرکت نیروها، زمان‌بندی و مسیر حمله ایجاد می‌کند.

حالا تفاوت مهم مشخص می‌شود.

در یک سیستم کاملاً Rule-Based، برنامه‌نویس باید از قبل روش D را نیز طراحی کند. اما در یک سیستم یادگیری مناسب، می‌توان شرایطی ایجاد کرد که عامل هوشمند در طول فرآیند آموزش، استراتژی‌های مختلف را امتحان کند و بر اساس نتیجه آن‌ها به سمت تصمیم‌های مؤثرتر حرکت کند.

اینجا Reinforcement Learning وارد بازی می‌شود

یکی از جذاب‌ترین شاخه‌های Machine Learning برای بازی‌سازی، Reinforcement Learning یا «یادگیری تقویتی» است.

در یادگیری تقویتی، یک عامل یا Agent در یک محیط قرار دارد. عامل وضعیت محیط را مشاهده می‌کند، یک Action انجام می‌دهد و سپس بر اساس نتیجه آن Action می‌تواند یک Reward یا جریمه دریافت کند.

State وضعیت فعلی بازی
Agent عامل هوشمند
Action تصمیم یا حرکت
Reward نتیجه تصمیم

برای مثال، اگر فرمانده AI حمله‌ای انجام دهد و بخش بزرگی از ارتش خود را از دست بدهد، می‌توان برای آن تصمیم پاداش منفی در نظر گرفت.

اگر فرمانده بتواند با خسارت کم، منابع بیشتری به دست آورد یا پایگاه دشمن را تصرف کند، سیستم می‌تواند پاداش مثبت دریافت کند.

هدف Agent این است که در طول آموزش، سیاستی پیدا کند که در مجموع بیشترین Reward را به دست آورد.

فرمانده AI چگونه متوجه می‌شود روش A شکست خورده است؟

این بخش یکی از مهم‌ترین سوءتفاهم‌ها درباره Machine Learning است. سیستم به شکل جادویی نمی‌گوید «من فهمیدم این حمله بد بود».

این مفهوم باید در طراحی محیط آموزش تعریف شود.

فرض کنیم وضعیت بازی شامل اطلاعاتی مانند موارد زیر باشد:

  • تعداد نیروهای خودی
  • تعداد نیروهای دشمن
  • مقدار منابع
  • موقعیت واحدها
  • موقعیت ساختمان‌های مهم
  • وضعیت دفاعی دشمن
  • فاصله تا هدف
  • زمان سپری‌شده از شروع نبرد
  • نتایج اقدامات قبلی

سپس برای اقدامات مختلف، Reward تعریف می‌شود.

تصرف پایگاه +100
از بین بردن واحد دشمن +10
از دست دادن یک واحد مهم -15
شکست کامل -100

اعداد بالا صرفاً یک مثال هستند. طراحی Reward یکی از حساس‌ترین قسمت‌های Reinforcement Learning است، زیرا اگر Reward اشتباه طراحی شود، Agent ممکن است رفتاری پیدا کند که از نظر ریاضی پاداش خوبی دارد اما از نظر طراح بازی مطلوب نیست.

چرا Agent بعد از چند شکست ممکن است رفتار متفاوتی انتخاب کند؟

فرض کنید Agent در چندین مرحله آموزش، روش‌های مختلف حمله را امتحان کند.

  1. مرحله اول: حمله مستقیم را امتحان می‌کند و شکست می‌خورد.
  2. مرحله دوم: حمله از جناح را امتحان می‌کند و دوباره با خسارت سنگین شکست می‌خورد.
  3. مرحله سوم: حمله چندمرحله‌ای را امتحان می‌کند اما دفاع دشمن آن را متوقف می‌کند.
  4. مرحله چهارم: ترکیب متفاوتی از مسیر، زمان‌بندی و نوع نیروها را امتحان می‌کند.
  5. مرحله پنجم: متوجه می‌شود که استفاده از واحدهای سریع برای منحرف کردن دفاع دشمن و سپس ارسال نیروهای سنگین، Reward بهتری ایجاد می‌کند.

نکته مهم این است که این «متوجه شدن» الزاماً به معنای استدلال انسانی نیست. مدل الگوهای آماری و سیاست‌های تصمیم‌گیری را بر اساس تجربه آموزشی یاد می‌گیرد.

بنابراین اگر محیط و Reward به‌درستی طراحی شده باشند، می‌توان به سیستمی رسید که رفتار آن دقیقاً مثل مجموعه‌ای از دستورهای ثابت نباشد.

Unity چه نقشی در این فرآیند دارد؟

Unity فقط یک موتور رندرینگ برای نمایش مدل‌های سه‌بعدی نیست. این موتور می‌تواند محیطی باشد که Agent در آن مشاهده، تصمیم‌گیری و تعامل می‌کند.

در چنین معماری، محیط بازی می‌تواند وضعیت فعلی را در اختیار Agent قرار دهد و تصمیم Agent را دوباره به محیط بازی اعمال کند.

01 Game Environment

نقشه، واحدها، منابع، دشمنان و قوانین بازی

02 Observation

اطلاعاتی که Agent از محیط دریافت می‌کند

03 AI Agent

مدلی که بر اساس وضعیت، Action انتخاب می‌کند

04 Action

حرکت، حمله، دفاع، تولید نیرو یا تغییر تاکتیک

05 Reward

ارزیابی نتیجه تصمیم Agent

در اکوسیستم Unity ابزارهایی مانند ML-Agents برای ساخت محیط‌های آموزشی و آموزش Agentهای هوشمند استفاده می‌شوند. این ابزارها امکان ایجاد محیطی را فراهم می‌کنند که Agent بتواند در آن بارها و بارها تعامل داشته باشد.

چرا آموزش AI در بازی ممکن است هزاران بار تکرار شود؟

یکی از مزیت‌های بزرگ بازی‌های کامپیوتری برای Reinforcement Learning این است که می‌توان یک سناریوی بازی را بارها اجرا کرد.

یک بازیکن انسانی شاید در یک ساعت چند ده بار یک تصمیم خاص را تجربه کند، اما کامپیوتر می‌تواند همان محیط را در مقیاس بسیار بزرگ‌تری شبیه‌سازی کند.

برای مثال، به جای اینکه فرمانده AI فقط ۱۰ بار حمله کند، می‌توان محیط آموزشی را طوری طراحی کرد که Agent هزاران یا حتی میلیون‌ها تعامل شبیه‌سازی‌شده داشته باشد.

این فرآیند باعث می‌شود Agent فرصت بسیار بیشتری برای آزمون و خطا داشته باشد.

آموزش با اجرای بازی متفاوت است.

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

کاربرد Machine Learning در انواع بازی‌ها

بازی‌های استراتژیک

بازی‌های Strategy یکی از جذاب‌ترین حوزه‌ها برای استفاده از یادگیری تقویتی هستند. Agent می‌تواند برای انتخاب مسیر حمله، مدیریت منابع، انتخاب واحدها، دفاع از پایگاه و زمان‌بندی حملات آموزش داده شود.

برای مثال، فرمانده AI می‌تواند تشخیص دهد که حمله مستقیم در برابر بازیکنی که دفاع قدرتمندی دارد معمولاً نتیجه خوبی ندارد و به تدریج به سمت تاکتیک‌های دیگری حرکت کند.

بازی‌های اکشن

در بازی‌های Action می‌توان از ML برای بررسی سبک بازی بازیکن، پیش‌بینی حرکت، تنظیم رفتار دشمن و حتی ایجاد سیستم‌های دشواری تطبیقی استفاده کرد.

برای مثال، اگر بازیکن همیشه از فاصله دور حمله کند، سیستم می‌تواند رفتار دشمنان را به گونه‌ای تنظیم کند که مقابله با این سبک بازی چالش‌برانگیزتر شود.

بازی‌های Racing

در بازی‌های مسابقه‌ای، Agent می‌تواند برای یادگیری مسیر مناسب، ترمزگیری، شتاب‌گیری، سبقت گرفتن و واکنش به شرایط مختلف مسیر آموزش ببیند.

بازی‌های شبیه‌ساز

بازی‌های Simulation نیز فضای بسیار مناسبی برای مدل‌های یادگیری هستند. از مدیریت شهر و اقتصاد گرفته تا کنترل ترافیک، رفتار جمعیت و مدیریت منابع، همگی می‌توانند به شکل مسئله تصمیم‌گیری مدل شوند.

بازی‌های نقش‌آفرینی

در RPGها می‌توان از ML برای ایجاد رفتارهای پیچیده‌تر NPCها، تشخیص سبک بازی بازیکن و ایجاد سیستم‌های تطبیقی استفاده کرد.

آیا می‌توان دشمنی ساخت که سبک بازی بازیکن را یاد بگیرد؟

بله، اما باید بین دو مفهوم تفاوت قائل شویم.

روش اول این است که رفتار بازیکن را با Machine Learning تحلیل کنیم. برای مثال مدل بررسی کند که بازیکن معمولاً چه زمانی حمله می‌کند، از چه سلاحی بیشتر استفاده می‌کند یا در چه شرایطی عقب‌نشینی می‌کند.

روش دوم استفاده از Reinforcement Learning برای آموزش مستقیم یک Agent است تا در محیط بازی تصمیم‌گیری کند.

این دو رویکرد حتی می‌توانند با یکدیگر ترکیب شوند.

هدف، لزوماً ساخت دشمنی غیرقابل شکست نیست.

یک AI خوب در بازی باید تجربه جذاب ایجاد کند. اگر سیستم بیش از حد سریع یاد بگیرد و همیشه بازیکن را شکست دهد، نتیجه ممکن است به جای سرگرم‌کننده بودن، خسته‌کننده و ناعادلانه شود.

یکی از مهم‌ترین چالش‌ها: Reward را چگونه طراحی کنیم؟

فرض کنید به Agent گفته‌ایم هدفش پیروزی در نبرد است. اگر فقط برای «پیروزی نهایی» پاداش بدهیم، ممکن است فرآیند آموزش بسیار کند شود.

از طرف دیگر اگر برای هر اقدام کوچک پاداش بدهیم، ممکن است Agent راهی پیدا کند که از نظر سیستم پاداش عالی است اما از دید طراح بازی رفتار مناسبی نیست.

این مسئله در Machine Learning به شکل جدی با مفهوم Reward Design و گاهی Reward Hacking ارتباط دارد.

بنابراین طراح بازی باید مشخص کند چه چیزی واقعاً موفقیت محسوب می‌شود. آیا فقط پیروزی مهم است؟ آیا حفظ نیروها اهمیت دارد؟ آیا سرعت پیروزی مهم است؟ آیا کنترل منابع باید در امتیاز نهایی تأثیر داشته باشد؟

پاسخ این پرسش‌ها مستقیماً روی رفتار Agent تأثیر می‌گذارد.

Machine Learning چه تفاوتی با سیستم‌های سنتی AI دارد؟

ویژگی AI سنتی Machine Learning
منطق تصمیم‌گیری عمدتاً توسط برنامه‌نویس تعریف می‌شود بخشی از رفتار از داده یا تجربه یاد گرفته می‌شود
تغییر رفتار اغلب نیازمند تغییر قوانین می‌تواند از طریق آموزش مدل تغییر کند
آموزش معمولاً وجود ندارد مدل قبل یا حین استفاده آموزش داده می‌شود
کنترل طراح بسیار بالا نیازمند طراحی دقیق داده، محیط و هدف
رفتارهای پیش‌بینی‌نشده معمولاً کمتر ممکن است بیشتر باشد

آیا استفاده از Machine Learning همیشه انتخاب مناسبی است؟

خیر.

این یکی از مهم‌ترین نکاتی است که یک Game Developer باید در نظر داشته باشد. اگر هدف فقط ساخت دشمنی است که وقتی بازیکن نزدیک شد حمله کند، استفاده از Reinforcement Learning احتمالاً بیش از حد پیچیده است.

در چنین شرایطی یک سیستم ساده State Machine یا Behavior Tree می‌تواند سریع‌تر، قابل پیش‌بینی‌تر و بسیار کم‌هزینه‌تر باشد.

Machine Learning زمانی جذاب‌تر می‌شود که مسئله دارای پیچیدگی بالا، داده زیاد، الگوهای رفتاری دشوار یا فضای تصمیم‌گیری بزرگی باشد که نوشتن تمام قوانین آن به صورت دستی دشوار است.

ترکیب AI سنتی و Machine Learning؛ رویکردی عملی برای بازی‌های واقعی

در پروژه‌های حرفه‌ای لازم نیست همه سیستم AI بازی را با Machine Learning بسازیم.

حتی در بسیاری از موارد، بهترین راهکار ترکیب چند تکنیک است.

برای مثال، یک NPC می‌تواند با یک Behavior Tree کنترل شود، اما یک مدل Machine Learning تصمیم بگیرد که در شرایط خاص کدام تاکتیک مناسب‌تر است.

یا سیستم مسیریابی می‌تواند از الگوریتم‌های کلاسیک استفاده کند و Machine Learning فقط انتخاب هدف یا استراتژی کلی را بر عهده داشته باشد.

Game AI = Rules + Algorithms + Machine Learning

این معماری معمولاً کنترل بیشتری در اختیار توسعه‌دهنده قرار می‌دهد و از طرفی امکان استفاده از قابلیت‌های یادگیری را نیز فراهم می‌کند.

مسئله مهم Performance در بازی‌های واقعی

یک مدل Machine Learning ممکن است در مرحله آموزش به منابع محاسباتی قابل توجهی نیاز داشته باشد. اما این موضوع را باید از اجرای مدل در زمان بازی جدا کرد.

در بسیاری از پروژه‌ها، آموزش مدل خارج از اجرای معمول بازی انجام می‌شود و مدل نهایی سپس برای Inference مورد استفاده قرار می‌گیرد.

بنابراین معماری پروژه باید از ابتدا مشخص کند که:

  • مدل کجا آموزش داده می‌شود؟
  • چه مقدار داده برای آموزش لازم است؟
  • Inference روی CPU انجام می‌شود یا GPU؟
  • چند Agent هم‌زمان فعال هستند؟
  • مدل چه مقدار حافظه مصرف می‌کند؟
  • آیا رفتار مدل باید در زمان اجرای بازی تغییر کند یا ثابت باشد؟

آینده بازی‌سازی؛ بازی‌هایی که فقط اجرا نمی‌شوند، بلکه یاد می‌گیرند

شاید مهم‌ترین تغییر Machine Learning در بازی‌سازی این نباشد که دشمنان فقط «باهوش‌تر» شوند. تغییر بزرگ‌تر زمانی اتفاق می‌افتد که رفتار بازی بتواند تا حدی خود را با شرایط جدید وفق دهد.

تصور کنید دو بازیکن وارد یک بازی استراتژیک می‌شوند.

بازیکن اول همیشه از حملات سریع و تهاجمی استفاده می‌کند، در حالی که بازیکن دوم به آرامی منابع جمع می‌کند و یک ارتش سنگین می‌سازد.

یک سیستم تطبیقی می‌تواند برای این دو بازیکن تجربه کاملاً متفاوتی ایجاد کند.

در یک سناریوی دیگر، NPCهای یک بازی نقش‌آفرینی می‌توانند از داده‌های تعاملات قبلی خود برای انتخاب واکنش‌های مناسب‌تر استفاده کنند.

در بازی‌های استراتژیک نیز فرمانده AI می‌تواند از تجربه نبردهای قبلی برای بهبود سیاست تصمیم‌گیری خود استفاده کند.

این همان نقطه‌ای است که بازی از یک مجموعه قوانین ثابت، به سمت یک سیستم پیچیده‌تر و تطبیقی حرکت می‌کند.

جمع‌بندی

Machine Learning می‌تواند یکی از ابزارهای قدرتمند نسل جدید بازی‌سازی باشد، اما استفاده صحیح از آن نیازمند شناخت دقیق مسئله است.

اگر بخواهیم یک دشمن ساده طراحی کنیم، شاید AI سنتی بهترین انتخاب باشد. اما وقتی با مسئله‌ای روبه‌رو هستیم که شامل تصمیم‌های متعدد، داده‌های زیاد، رفتارهای پیچیده و امکان یادگیری از تجربه است، Machine Learning می‌تواند ارزش بسیار بیشتری ایجاد کند.

به‌خصوص در بازی‌های استراتژیک، Reinforcement Learning این امکان را فراهم می‌کند که Agent در یک محیط شبیه‌سازی‌شده بارها تصمیم بگیرد، نتیجه تصمیم خود را ببیند و سیاست تصمیم‌گیری خود را بهبود دهد.

البته این به معنی ساخت یک «هوش مصنوعی جادویی» نیست. کیفیت محیط آموزشی، تعریف State و Action، طراحی Reward، انتخاب الگوریتم، حجم داده، فرآیند آموزش و در نهایت نحوه استفاده از مدل در Unity، همگی روی نتیجه نهایی تأثیر مستقیم دارند.

آینده AI در بازی‌سازی احتمالاً متعلق به یک تکنولوژی واحد نیست؛ بلکه به ترکیب هوشمندانه سیستم‌های سنتی Game AI با Machine Learning، داده و الگوریتم‌های تصمیم‌گیری تعلق دارد.

نکته کلیدی برای Game Developer

قبل از اینکه به سراغ Machine Learning بروید، ابتدا مسئله بازی را دقیق تعریف کنید. اگر می‌توان آن را با چند قانون ساده حل کرد، نیازی به مدل یادگیری نیست. اما اگر می‌خواهید Agent از تجربه، داده و پیامد تصمیم‌های خود برای پیدا کردن رفتارهای بهتر استفاده کند، آن زمان Machine Learning می‌تواند به یکی از جذاب‌ترین ابزارهای پروژه شما تبدیل شود.

مهدی یدی

مهدی یدی

یک برنامه نویس ☕ ASP.Net Core - MAUI - WPF - Unity - ML.Net فعالیت می کنم.از تولید محتوا لذت میبرم. و دوست دارم محتوای پارسی را بروز نگهدارم 😎

ارسال دیدگاه

نظرات کاربران (0)

هنوز هیچ دیدگاهی برای این مقاله ثبت نشده است.

Captcha Active