Shamim Sanisales
Shamim Sanisales
خواندن ۸ دقیقه·۵ سال پیش

Procedural Content Generation یا PCG


روند ساخت اجزای بازی بسیار پرهزینه و زمان‌بر است؛ و در این راه ما دچار چالش‌های فنی و مالی و زمانی زیادی خواهیم شد که در بعضی موارد بسیار آزاردهنده است و گاهی نیز همین مشکلات باعث شکست پروژه می‌شود.

در این گزارش ما یک الگوریتم به نام PCG را معرفی خواهیم کرد که پایه آن بر اساس هوش مصنوعی و یادگیری ماشین است و به بازی‌سازان در طراحی مراحل بازی کمک بسیار زیادی می‌کند و علاوه بر حل چالش‌ها باعث بهترشدن کیفیت کار و یادگیری بیشتر نیز می‌شود.

یک گروه بازی‌سازی به‌طورکلی از 4 قسمت تشکیل‌شده است:

  • تیم دیزاین که وظیفه‌ی ارائه داستان اصلی بازی، چیدمان معماها، هدف نهایی بازی و ... را بر عهده دارد.
  • تیم فنی و برنامه‌نویسی که وظیفه تولید کد اصلی بازی و ساخت پایه و اساس بازی را برعهده دارند.
  • تیم هنری که وظیفه طراحی گرافیک بازی و اماده‌سازی محیط و شخصیت‌ها و ... را عهده دارد.
  • تیم فروش و بازاریابی که وظیفه این تیم پس از اتمام پروژه آغاز می‌شود و بر روی تبلیغات و فروش برنامه تمرکز دارند.

گروه‌های بازی‌سازی را می‌توان به دودسته کلی تقسیم کرد:

  • بازی‌سازان مستقل
  • گروه‌های بزرگ

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

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

کاربردهای PCG در صنعت بازی‌سازی :

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

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

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

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

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

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

لغت PCG در لغت از سه کلمه procedural به معنای استفاده از الگوریتم، generation به معنای تولید و content به معنای همه‌ی المان‌های مرتبط با بازی است.

برای توضیح بهتر این واژه می‌توان procedural و  generation را به معنای استفاده از الگوریتم برای تولید معنا کرد ولی content تعریف گسترده‌تری دارد؛ می‌توان صحنه بازی، زمین‌بازی، نقشه بازی، داستان، هدف نهایی، ماموریت های داخل بازی، جایزه‌ها، مرحله‌ها، شخصیت‌ها، سلاح‌ها، جایزه‌ها، موسیقی، تکسچر، گرافیک و ... را زیرمجموعه content در نظر گرفت.

این Content را می‌توان به چند دسته تقسیم کرد:

  • واحدهای ابتدایی و بی‌تأثیر در بازی که شامل مواردی است که در هدف و داستان بازی هیچ‌گونه تأثیری ندارند و فقط جهت زیبایی محیط درصحنه قرارگرفته‌اند. در ساخت این موارد محل قرارگیری اهمیت زیادی ندارد زیرا کاربر تعاملی با آن‌ها ندارد ولی باید به این نکته توجه کرد که بر اساس منطق درصحنه گذاشته‌شده باشند برای مثال سنگ روی زمین و ابر در آسمان باشد و نه بالعکس.
  • فضای بازی یا همان صحنه اصلی بازی
  • سیستم بازی: این مورد نسبت به موارد قبلی از اهمیت بیشتری برخوردار است، زیرا کاربر در تعامل با سیستم بازی است. به‌عنوان‌مثال برای سیستم بازی می‌توان اکوسیستم محیطی یا همان تغییر آب‌وهوا در بازی به‌صورت رندوم، به این صورت که در هر بار بازی جدید کاربر با یک آب‌وهوای جدید مانند برفی، آفتابی، بارانی، ابری و ... روبه‌رو شود؛ یا شبکه‌های جاده که مناسب بازی‌هایی است که بین چند محل در حال انتقال هستند و هر بار با کمک الگوریتم جاده‌ی بین دو محل متفاوت از دیگری است را نام برد.
  • داستان بازی که شامل اتفاقات بازی، مأموریت‌ها، جورچین‌ها و ... در هر مرحله است و باید دقت کافی در ساخت و تولید آن‌ها رعایت شود زیرا به بازی مسیر و هدف می‌دهند و اگر ضعیف ساخته شوند باعث از دست رفتن کاربر می‌شود.
  • قواعد و اهداف بازی که یکی از مهم‌ترین قسمت‌ها برای تولید توسط PCG است. اگر هدف بازی و مجموعه قوانین آن خوب و سرگرم‌کننده نباشد، پروژه شکست‌خورده به‌حساب می‌آید و کاربری به آن جذب نمی‌شود. پس طراحی هدف بازی مناسب مهم‌ترین بحث در این روش است.

نمونه کاربردهای PCG :

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

دسته‌بندی PCG:

یک نوع دسته‌بندی برای این روش ارائه‌شده است که تمرکز آن بر روی این است که

  • چه نوع محتوایی تولید می‌شود
  • چگونه تولید می‌شود
  • چگونه می‌توان کیفیت محتوای تولیدشده را ارزیابی کرد

بر طبق موارد بالا دسته‌بندی توسط خانم نوری شاکر در کنفرانش بازی های رایانه ای ارائه‌شده است که به شرح زیر است:

1. آنلاین یا آفلاین بودن تولید محتوا:

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

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

2. موردنیاز بودن یا اختیاری بودن محتوای تولیدشده:

ما در بازی دو نوع محتوا داریم، نوع اول محتوای موردنیاز بازیکن است که برای پیروزی و گذراندن یک مرحله به آن نیاز دارد و باید دستیابی به آن حتماً ممکن باشد.

محتوای دیگر محتوای اختیاری در بازی است مانند سلاح‌های کمکی و ویژگی‌های اضافه که برای گذراندن مرحله اجباری نیست و فقط راه پیروزی را ساده‌تر می‌کند؛ دسترسی به این محتوا ممکن است در مواردی بسیار سخت باشد.

3. کنترل کردن مقادیر و درجه‌ها:

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

4. تعیین‌کننده یا تصادفی بودن محتوای تولیدشده:

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

5. تولید ساختاریافته یا تولید با آزمون‌وخطا:

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

در مقابل درروش تولید محتوا بر اساس آزمون‌وخطا از قبل برای متغیرها محاسباتی انجام نمی‌گیرد و پس از تولید محتوا با کمک الگوریتم آن‌ها را آزمایش می‌کند که مناسب هستند یا خیر؛ در این روش از یادگیری ماشین استفاده می‌شود.

مراجع :

  • Expensive-driven PCG:Dr.Yannakakis
  • PCGin games : noorshaker , Julian togelus,mark j.nelson
  • Pcgbook, chapter1
تکنولوژیبازی سازیفناوری
اسم من شمیمه ، یه دختر ۲۲ ساله برنامه نویس که تصمیم گرفته نوشتن را توی این روزای خاکستری بهاری شروع کنه و تجربه کسب کنه :)
شاید از این پست‌ها خوشتان بیاید