1- خلاصه از ساختار فصل اول – مقدمه‌ای بر معماری موتور بازی

30-تیر-1404 / خواندن 5 دقیقه

Naughty Dog May be Getting Ready to Announce its Next Game
ناتی داگ استودیویی که Jason Gregory در حال حاضر بعنوان Lead Programmer و Game Engine Engineer فعالیت دارد

هدف کلی فصل ۱:

  1. توسعه‌ی بازی در دنیای واقعی
  2. موتور بازی اصلا چی هست و از کلیات و بیس و پایه اون چی هست
  3. چرا موتورها باید ماژولار، قابل استفاده مجدد و منعطف طراحی و نوشته بشن
  4. بین ژانرهای مختلف بازی، ساختار موتورها چه تفاوتی وجود داره
  5. Asset Pipeline در ساخت بازی چطور کار می‌کنند

 

ساختار بخش‌های فصل اول:

 

1.1 ساختار تیم‌های توسعه بازی:

  • تیم بازی از ۵ بخش اصلی تشکیل شده:
     مهندسان (Engineers)،
     هنرمندان (Artists)،
     طراحان (Designers)،
     مدیر پروژه (Producers)،
     تیم پشتیبانی (IT، HR، بازاریابی و...)

نقش هر تیم:

  • مهندس‌ها زیرساخت (موتور) رو محیا می کنند
  • آرتیست‌ها محتوا تولید می‌کنند
  • دیزاینرها تعاملات و گیم‌پلی رو می‌سازند

 

1.2 بازی چیست؟

بیشتر بازی‌ها شبیه‌سازی‌های بلادرنگ تعاملی (soft real-time interactive simulations) هستن

بازی با گرفتن ورودی، آپدیت وضعیت، پخش صدا و رندر تصویر در هر فریم، یه دنیای مجازی پویا می‌سازه در اصل پایبندی به game loop رو رعایت می کنه

مفهوم fun از حس یادگیری و کنترل در سیستم‌های چالشی میاد

 

1.3 موتور بازی چیست؟

موتور = پلتفرمی نرم‌افزاری که زیرساخت ساخت چند بازی مختلف رو فراهم می‌کنه ( در کتاب تعاریف مخلتفی وجود داره اما خود Jason Gregory تعریف واحد و یکتایی داره که بیان شد)

خودش شامل اجزایی مثل:

Rendering, Physics, Animation, Audio, Input, AI, UI, Scripting, Tools

تفاوت موتور و بازی:

موتور عمومی، چندبار مصرف

بازی خاص، روی محتوای مشخص متمرکزه

در واقع اگه زیر ساختی وجود داشته باشه که فقط برای یک بازی(منظور سبک یا تایپ بازی نیست) قابل استفاده باشه در واقع دیگه اسم موتور بازی رو هندل نمی کنه

 

1.4 استفاده مجدد و انعطاف‌پذیری

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

اما افزایش انعطاف = افزایش پیچیدگی و احتمال کاهش performance (نمونه بارز رو میتونیم در پورت بازی ها ببینیم که هر چه انعطاف پورت بازی ها بیشتر باشه احتمال باگ و پیچیدگی بیشتر هست که بعدا در ادامه فصل در بخش تحلیل ها در مورد آن مفصل صحبت می کنم)

 

1.5 تفاوت موتورها بین ژانرهای مختلف (Engine Differences Across Genres)

 

ژانرنیاز حیاتی و خاص
FPSدقت در فیزیک و تیراندازی، رندر سریع
Racingفیزیک دقیق خودرو، motion blur، مسیر وسیع
RPGدیالوگ شاخه‌ای، ذخیره‌سازی، رفتار NPC
Fightingفریم دقیق، hitbox حساس، انیمیشن ترکیبی
  • پس موتور هر ژانر نیاز به ماژول‌های خاص و بهینه‌سازی‌های ویژه‌ای داره

 

1.6 مرور موتورهای معروف (Game Engine Survey)

موتورویژگیمناسب برای
Unreal Engineگرافیک قوی، ابزار زیاد، ++Cپروژه های AAA
Unityسبک، C#، راحت، چندپلتفرمموبایل، 2D، Indie
CryEngineگرافیک واقع‌گرایانه، سخت‌ترشبیه سازی، جهان باز
Sourceقدیمی اما با دقت و جواب پس دادهشوتر کلاسیک
In-houseسفارشی‌سازی بالا، فقط برای همان استودیوبازی های بسیار خاص

 

 1.7 معماری زمان اجرا (Runtime Engine Architecture)

  • هسته هر موتور توی هر فریم Game Loop انجام می‌ده:
Input → Logic → Physics → AI → Animation → Audio → Render
  • اجزای ماژولار موتور:
    Input, AI, Physics, Audio, Animation, UI, Renderer, Resource Manager
    باید سریع و قابل توسعه باشه ( multi-threaded و قابل گسترش)

 

1.8 Tools and Asset Pipeline

ابزاروظیفه
Level Editorساخت مرحله و محیط
Animation Editorتنظیم انیمیشن‌ها
Dialogue Toolنوشتن مکالمه‌ها
Particle Editorساخت افکت دود، آتش و...
Asset Importerوارد کردن فایل‌ها از Blender, Photoshop و...
  • نکته:
    Asset Pipeline:
    ساخت دارایی توسط آرتیست
    تبدیل خودکار فایل‌ها به فرمت داخلی موتور
    استفاده در بازی (run-time یا هنگام build)

 

<** روند این وبلاگ به صورت : ارائه خلاصه ای ساختار و بیس متن هر فصل و سپس وارد شدن در جزییات هر بخش از فصل هست **>

game موتور بازیسازی مهندسی نرم افزار معماری نرم افزار کتاب jason gregory game engine programmer موتور بازی بازی ویدیویی توسعه نرم افزار