ساغر هموله یکشنبه 13 اسفند 1396 04:41 ب.ظ نظرات ()

با این كه روند توسعه‌ی یك بازی موبایل تفاوت آنچنانی با دیگر پلتفرم‌ها ندارد، اما به دلیل مسائلی از قبیل پراكندگی بالای نرم‌افزاری و سخت‌افزاری، توسعه‌ بازی برای این پلتفرم دارای پیچیدگی‌های فنی بسیار زیادی است.

آموزش بازی سازی: نكات فنی توسعه بازی موبایل

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

اگر چه در سراسر دنیا پلتفرم موبایل در كنار دیگر پلتفرم‌های بازی تعریف شده است،  اما در ایران شرایط كمی فرق كرده و می‌توانیم ادعا كنیم كه صرفا بازی و بازی‌سازی در آن بر بستر پلتفرم موبایل وجود دارد. صحبت در مورد چرایی این مسئله‌ی موضوع بحث امروز ما نیست و هدف اصلی ما صحبت در مورد جوانب فنی انتخاب این پلتفرم برای توسعه‌ی یك بازی ویدیویی است. همچنین با توجه به این كه حدودا ۹۰ درصد گوشی‌های فعال در ایران را گوشی‌های اندرویدی تشكیل می‌دهند، برای همین ما از بررسی گوشی‌های مبتنی بر سیستم عامل iOS در این مقاله خودداری می‌كنیم.

 ایجاد تعادل بین نیاز‌های فنی و گستره‌ی بازار هدف

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

 اگر مقاله‌ی قبلی ما با عنوان چالش‌های ساخت یك بازی مولتی پلتفرم را مطالعه كرده باشید فهمیده‌اید كه برای ساخت بازی برای هر پلتفرمی باید تمامی اجزای سازنده‌ی بازی متناسب با پلتفرم هدف آماده شده باشد و صرفا نمی‌توان با تكیه بر توانایی خروجی گرفتن موتورهای بازی‌سازی به هدف نهایی دست پیدا كرد.  پس زمانی كه قرار است تمامی اجزای بازی را متناسب با پلتفرم هدف (گوشی‌های اندرویدی) آماده كنیم، باید بدانیم كه ما مجاز به استفاده از چه عناصری در بازی‌ خود هستیم. به عنوان مثال صرف همین كه ما بخواهیم از كانال آلفا (Alpha Channel) در بافت‌های خود استفاده كنیم، این گونه روی محاسبات ما تاثیر می‌گذارد كه ما برای فشرده‌سازی بافت‌های خود احتمالا از مدل فشرده‌سازی ETC2 كه رایج‌ترین مدل موجود است، استفاده كنیم كه چنین چیزی موقعی در دسترس ما است كه ما از OpenGL ES 3.0 در گوشی هدف بهرمند باشیم. پشتیبانی از همین API گفته شده هم باید به صورت نرم‌افزاری و هم سخت‌افزاری در گوشی‌های هدف قرار داده شده باشد. به عنوان مثال از لحاظ نرم‌افزاری حداقل نسخه‌های اندروید برای پشتیبانی از این ویژگی، نسخه‌ی ۴.۳ اندروید یا همان API level 18 است. تازه این را هم به موضوع اضافه كنید كه صرفا داشتن نسخه‌ی اندروید گفته شده هیچ تضمینی برای ما فراهم نمی‌كند كه ما به نسخه‌ی OpenGL ES گفته شده دسترسی داشته باشیم چرا كه همچنان بخشی از موضوع به سخت‌افزار هم بستگی دارد. برای همین با این كه این مسئله موضوع چندانی پیچیده‌ای جلوه نمی‌كند ولی رسیدن به یك تعادل مناسب بین دو شاخص گفته شده كار بسیار مشكلی است چرا كه در كنار آشنایی كامل با مفاهیم گفته شده باید دید درستی هم روی توزیع نرم‌افزاری و سخت‌افزاری بازار هدفمان هم داشته باشیم.

alpha channel

جنبه‌ی دیگر مسئله كه اشاره‌ای هم به آن داشتیم، آشنایی با تكنولوژی‌های مختلف موجود در بازار است. مثلا در زمان حاضر برای پیاده‌سازی دستورات گرافیكی هم می‌توان از رابط برنامه‌نویسی OpenGL ES و هم رابط برنامه‌نویسی Vulkan استفاده كرد. رابط برنامه‌نویسی Vulkan یك محصول جدید و پیشرفته‌تر در این عرصه به حساب می‌آید و علاوه بر عملكرد بهتر و بهینه‌تر، به كارگیری آن می‌تواند مسئله‌ی پورت كردن بازی برای پلتفرم‌های دیگر را هم راحت‌تر كند، چرا كه این رابط برنامه‌نویسی همانند OpenGL ES صرفا به یك پلتفرم خاص محدود نیست. اما این رابط برنامه‌نویسی برخلاف OpenGL ES ، صرفا در نسخه‌های ۷ به بعد سیستم عامل اندروید و آن هم در دستگاه‌هایی وجود دارد كه از نوع مشخصی از پردازنده‌های گرافیكی استفاده می‌كنند و برای همین بازار فعلی Vulkan بسیار كم‌تر از OpenGL ES است و برای همین اگر صرفا عملكرد فنی یا راحتی پورت كردن بازی اولویت بالاتری برای شما دارد، بهتر است به سمت این رابط برنامه‌نویسی بروید. به عنوان مثال عكس زیر پردازنده‌هایی را كه از این رابط‌گرافیكی بهره می‌برند به شما معرفی می‌كنند.

vulkan

در انتهای این بخش بهتر است به این موضوع توجه كنید كه مثلا همان رابط برنامه‌نویسی OpenGL ES دارای چهار نسخه‌ی مختلف است كه هر كدام قابلیت‌های مخصوص به خودشان را دارند و این شما هستید كه باید به طور كامل در رابطه با هر كدام از این‌ها به تحقیق و بررسی بپردازید.


آماده‌سازی محتوا برای موبایل

در گام قبلی ما صرفا گستره‌ی توانایی‌های فنی خودمان را مشخص كردیم و این در حالی است كه آماده كردن عناصر درون بازی برای پلتفرم موبایل هم دارای قاعده و قانون‌های خودش است. به عنوان مثال طبق اسناد موتور آنریل (این بخش كاملا بر مبنای آنریل توضیح داده شده است)، ما در زمینه‌ی Meshها صرفا می‌توانیم از گزینه‌های زیر در بازی خود استفاده كنیم:

  • Skeletal Mesh
  • Static Mesh
  • Landscape
  • CPU Particle Sprites، Particle Mesh

همچنین در این بخش اشاره شده كه بر اساس محدودیت‌های سخت‌افزاری واضحی كه در پلتفرم موبایل وجود دارد، انواع مش‌های ما حدكثر می‌توانند از 65K راس تشكیل شده و مش‌های اسكلتی ما هم حداكثر می‌تواند از ۷۵ استخوان تشكیل شده باشند. دقت كنید این موارد حداكثر مقادیر ممكن را برای شما بیان كردند وگرنه در حالت عادی مش‌های شما باید بسیار ساده‌تر از موارد گفته شده باشد. البته این نكته را هم در این جا اضافه كنیم كه مقیاس مدل‌ها و عناصر درون بازی تاثیری بر راندمان بازی شما نخواهند داشت. مثلا این كه فكر كنید بهتر است یك صحنه از بازی خود را به منظور بهبود عملكرد فنی آن در مقیاس كوچك‌تری تولید كنید تصور اشتباهی است و تنها خودتان را اذیت می‌كنید. برای درك بهتر این مسئله می‌توانید یك صحنه‌ی از قبل آماده شده را در مقیاس ۴ برابر بزرگ كنید و سعی كنید وضعیت مصرف منابع سخت‌افزاری را در دو حالت بایكدیگر مقایسه كنید. مشاهده خواهید كرد كه هیچ تغییری در شاخص‌های گفته شده رخ نمی‌دهد.

همچنین در زمینه‌ی آماده‌سازی بافت‌ها هم نكته‌ای كه وجود دارد این است باید سعی شود برای مدیریت بهتر منابع رم، تمامی بافت‌های بازی در شكل مربعی آماده و به كار گرفته شود و اندازه‌ی ابعاد آن‌ها هم بر توان‌های عدد ۲ استوار باشد (همانند ۲، ۴، ۸، ۱۶، ۳۲ و ...). البته این را هم اضافه كنیم كه بافت‌ها نقش بسزایی را در شكل‌گیری حجم فایل بازی شما ایفا می‌كنند و اگر مشكلی بابت كیفیت بصری بازی خود ندارید بهتر است همواره از اندازه‌های كوچك‌تر این موارد در تولید بازی استفاده كنیم.

در زمینه‌ی متریال‌ها هم تقریبا مشكلی خاصی وجود ندارد و ما به بیشتر خصوصیات یك متریال در پلتفرم رایانه‌های شخصی دسترسی داریم. برای همین صرفا به چند ویژگی كه از آن‌ها در این پلتفرم پشتیبانی نمی‌شوند اشاره می‌كنیم:

  • Scene Color Expression
  • Refraction Input
  • Tessellation Input
  • Subsurface Scattering Shading Mode

با این حال در تهیه متریال‌ها چندین ملاحظه وجود دارد كه باید رعایت شوند و برای همین اگر به دانستن این مواردعلاقمند هستید می‌توانید آن‌ها را از لینك مطالعه كنید. برای كوتاه‌تر شدن مقاله از توضیح موارد دیگر از قبیل نكات مربوط به نورپردازی و افكت‌های پس‌پردازشی چشم‌پوشی می‌كنیم اما شما می‌توانید به ترتیب در مورد هر كدام از این موارد در این لینك و این لینك اطلاعات مناسب را به دست آورید.

نكته‌ای كه در انتهای این بخش باید به آن اشاره كنیم این است كه به هیچ وجه نباید از مسئله‌ی قدرت سخت‌افزاری پایین دستگاه‌های موبایل غافل شویم. به خصوص زمانی كه ما گستره‌ای از قدرت‌های سخت‌افزاری مواجه هستیم همواره دستگاه‌هایی قرار دارند كه در پایین‌ترین نقطه‌ای این بازه قرار می‌گیرند و برای همین بهتر است ما مبنای اولیه‌ی خود را روی آن‌ها در نظر بگیریم.

 تجربه و آزمایش بهترین وسیله است

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