با اين كه روند توسعهي يك بازي موبايل تفاوت آنچناني با ديگر پلتفرمها ندارد، اما به دليل مسائلي از قبيل پراكندگي بالاي نرمافزاري و سختافزاري، توسعه بازي براي اين پلتفرم داراي پيچيدگيهاي فني بسيار زيادي است.
اگرچه وقتي صحبت از بازي و بازيسازي باشد، در وهلهي اول نگاه ما به سمت رايانههاي شخصي و كنسولهاي بازي ميرود، اما چند سالي است كه بازار جديد رو به رشدي در كنار اين پلتفرمهاي قديمي بازار بهوجود آمده است. شايد صرف همين كه بدانيد در تمامي نقاط دنيا حدودا ۳.۱ ميليارد گوشي موبايل وجود دارد به راحتي بتوانيد اين مسئله را درك كنيد كه چرا امروزه تا اين حد به اين پلتفرم توجه ميشود.
اگر چه در سراسر دنيا پلتفرم موبايل در كنار ديگر پلتفرمهاي بازي تعريف شده است، اما در ايران شرايط كمي فرق كرده و ميتوانيم ادعا كنيم كه صرفا بازي و بازيسازي در آن بر بستر پلتفرم موبايل وجود دارد. صحبت در مورد چرايي اين مسئلهي موضوع بحث امروز ما نيست و هدف اصلي ما صحبت در مورد جوانب فني انتخاب اين پلتفرم براي توسعهي يك بازي ويديويي است. همچنين با توجه به اين كه حدودا ۹۰ درصد گوشيهاي فعال در ايران را گوشيهاي اندرويدي تشكيل ميدهند، براي همين ما از بررسي گوشيهاي مبتني بر سيستم عامل iOS در اين مقاله خودداري ميكنيم.
ايجاد تعادل بين نيازهاي فني و گسترهي بازار هدف
براي توسعه در پلتفرم موبايل و به خصوص دستگاههاي اندرويد، مهمترين مسئله در همان ابتدا اين است كه ما بر اساس دو شاخص نيازهاي فني پروژه و همچنين گسترهي مخاطبان هدف، دامنهي نرمافزاري و سختافزاري خود را مشخص كنيم. دليل اين مسئله اين است كه برخلاف پلتفرم iOS و نمونههاي محدود آن، پراكندگي عجيبي در پلتفرم اندرويد چه به لحاظ نرمافزاري و چه به لحاظ سختافزاري وجود دارد و هر دستگاهي صرفا از يكسري از تكنيكهاي فني براي ساخت بازي پشتيباني ميكند.
اگر مقالهي قبلي ما با عنوان چالشهاي ساخت يك بازي مولتي پلتفرم را مطالعه كرده باشيد فهميدهايد كه براي ساخت بازي براي هر پلتفرمي بايد تمامي اجزاي سازندهي بازي متناسب با پلتفرم هدف آماده شده باشد و صرفا نميتوان با تكيه بر توانايي خروجي گرفتن موتورهاي بازيسازي به هدف نهايي دست پيدا كرد. پس زماني كه قرار است تمامي اجزاي بازي را متناسب با پلتفرم هدف (گوشيهاي اندرويدي) آماده كنيم، بايد بدانيم كه ما مجاز به استفاده از چه عناصري در بازي خود هستيم. به عنوان مثال صرف همين كه ما بخواهيم از كانال آلفا (Alpha Channel) در بافتهاي خود استفاده كنيم، اين گونه روي محاسبات ما تاثير ميگذارد كه ما براي فشردهسازي بافتهاي خود احتمالا از مدل فشردهسازي ETC2 كه رايجترين مدل موجود است، استفاده كنيم كه چنين چيزي موقعي در دسترس ما است كه ما از OpenGL ES 3.0 در گوشي هدف بهرمند باشيم. پشتيباني از همين API گفته شده هم بايد به صورت نرمافزاري و هم سختافزاري در گوشيهاي هدف قرار داده شده باشد. به عنوان مثال از لحاظ نرمافزاري حداقل نسخههاي اندرويد براي پشتيباني از اين ويژگي، نسخهي ۴.۳ اندرويد يا همان API level 18 است. تازه اين را هم به موضوع اضافه كنيد كه صرفا داشتن نسخهي اندرويد گفته شده هيچ تضميني براي ما فراهم نميكند كه ما به نسخهي OpenGL ES گفته شده دسترسي داشته باشيم چرا كه همچنان بخشي از موضوع به سختافزار هم بستگي دارد. براي همين با اين كه اين مسئله موضوع چنداني پيچيدهاي جلوه نميكند ولي رسيدن به يك تعادل مناسب بين دو شاخص گفته شده كار بسيار مشكلي است چرا كه در كنار آشنايي كامل با مفاهيم گفته شده بايد ديد درستي هم روي توزيع نرمافزاري و سختافزاري بازار هدفمان هم داشته باشيم.
جنبهي ديگر مسئله كه اشارهاي هم به آن داشتيم، آشنايي با تكنولوژيهاي مختلف موجود در بازار است. مثلا در زمان حاضر براي پيادهسازي دستورات گرافيكي هم ميتوان از رابط برنامهنويسي OpenGL ES و هم رابط برنامهنويسي Vulkan استفاده كرد. رابط برنامهنويسي Vulkan يك محصول جديد و پيشرفتهتر در اين عرصه به حساب ميآيد و علاوه بر عملكرد بهتر و بهينهتر، به كارگيري آن ميتواند مسئلهي پورت كردن بازي براي پلتفرمهاي ديگر را هم راحتتر كند، چرا كه اين رابط برنامهنويسي همانند OpenGL ES صرفا به يك پلتفرم خاص محدود نيست. اما اين رابط برنامهنويسي برخلاف OpenGL ES ، صرفا در نسخههاي ۷ به بعد سيستم عامل اندرويد و آن هم در دستگاههايي وجود دارد كه از نوع مشخصي از پردازندههاي گرافيكي استفاده ميكنند و براي همين بازار فعلي Vulkan بسيار كمتر از OpenGL ES است و براي همين اگر صرفا عملكرد فني يا راحتي پورت كردن بازي اولويت بالاتري براي شما دارد، بهتر است به سمت اين رابط برنامهنويسي برويد. به عنوان مثال عكس زير پردازندههايي را كه از اين رابطگرافيكي بهره ميبرند به شما معرفي ميكنند.
در انتهاي اين بخش بهتر است به اين موضوع توجه كنيد كه مثلا همان رابط برنامهنويسي 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
با اين حال در تهيه متريالها چندين ملاحظه وجود دارد كه بايد رعايت شوند و براي همين اگر به دانستن اين مواردعلاقمند هستيد ميتوانيد آنها را از لينك مطالعه كنيد. براي كوتاهتر شدن مقاله از توضيح موارد ديگر از قبيل نكات مربوط به نورپردازي و افكتهاي پسپردازشي چشمپوشي ميكنيم اما شما ميتوانيد به ترتيب در مورد هر كدام از اين موارد در اين لينك و اين لينك اطلاعات مناسب را به دست آوريد.
نكتهاي كه در انتهاي اين بخش بايد به آن اشاره كنيم اين است كه به هيچ وجه نبايد از مسئلهي قدرت سختافزاري پايين دستگاههاي موبايل غافل شويم. به خصوص زماني كه ما گسترهاي از قدرتهاي سختافزاري مواجه هستيم همواره دستگاههايي قرار دارند كه در پايينترين نقطهاي اين بازه قرار ميگيرند و براي همين بهتر است ما مبناي اوليهي خود را روي آنها در نظر بگيريم.
تجربه و آزمايش بهترين وسيله است
هنگامي كه تعداد فراواني از موارد اشاره شده در كنار هم قرار ميگيرند، مديريت آنها به خصوص براي افراد تازهكار موضوع بسيار مشكلي ميشود. با اين حال تازه ما هيچ صحبتي از ميزان مصرف منابع سختافزاري و مديريت آن در فضاي محدود دستگاههاي موبايل نكردهايم. دليل آن اين است كه بازي به بازي اين مسئله بسيار متفاوت ميشود و براي همين بهتر است كه شما خودتان با آزمايش و خطا به چنين مهارتي دست پيدا كنيد. شما ميتوانيد با شروع از محيطها ساده و كوچك، تاثير به كارگيري هر عنصر را در مصرف منابع سختافزاري رصد كرده و براي اين كار هم تنها به يك گوشي، يك كابل و يك موتور بازيسازي آماده احتياج داريد. حتي ميتوانيد صحنههاي آماده را از گوشه و كنار اينترنت دريافت كرده و سعي كنيد آنها را براي يك گوشي موبايل طوري بهينه كنيد كه ميزان مصرف منابع سختافزاري آن به نسبت قبل كمتر شده باشد. اينها تمرينهايي هستند كه به مرور به شما مسئلهي ارزشمند مديريت منابع را ياد ميدهند و بعدها ميتوانيد از دانستههاي خود در ساخت بازي مورد علاقهتان بهره ببريد.
- یکشنبه ۱۳ اسفند ۹۶ ۱۴:۳۹
- ۲۳۸ بازديد
- ۰ نظر