آموزش بازی سازی: چالشهای ساخت یک بازی مولتی پلتفرم
با دنبال کردن چند مقالهی اخیر آموزش بازی سازی ما شاید این سوال هم برای شما پیش آمده باشد که ساخت یک بازی ویدیویی تا چه حد میتواند چالشبرانگیز باشد. چالشبرانگیز از این جهت که صرفا در جزییاتی همانند افکتهای پسپردازشی ممکن است با رعایت نکردن چند مورد ساده، عملکرد فنی بازی شما روی بازهی وسیعی از سختافزارهای هدف دچار مشکل شود. با این شرایط اگر بخواهیم بازی خود را برای چند پلتفرم مختلف هم منتشر کنیم مسائل تازهای پیش روی ما قرار میگیرد که عدم توجه به آنان میتواند یک پروژهی تقریبا کامل را به کلی نابود کند.
همهی ما باید به این موضوع دقت کنیم که مشکلات و محدودیتهای سختافزاری و نرمافزاری در تمامی پلتفرمهای توسعه بازی وجود دارد و این موضوع جزیی از فرآیند تولید بازی است. بنابراین اگر ما صرفا با تعویض پلتفرم هدف نتوانیم بازی خود را توسعه دهیم باید بدانیم که ما همچنان بازیسازی را به صورت اصولی فرانگرفتهایم. دلیل این مسئله این است یکی از اولین مراتب توسعه اصولی هر بازی شناسایی دقیق ویژگیهای پلتفرم هدف از جمله محدودیتهای فنی آن است. این محدودیتها در کنار هم بستر ساخت و سازهای ما را تشکیل میدهند و بیتوجهی به آنان حتی در بخشی از پروژه بسیار هزینهبر خواهد بود. نمونهی بارز این مسئله بازیسازان تازهکاری هستند که بازی خود را به صورت پیشفرض بر مبنای پلتفرم رایانههای شخصی توسعه میدهند و این در حالی است که هدف نهایی آنها پلتفرم گوشیهای موبایل است. در اکثر این موارد یا بازی مورد نظر در پلتفرم هدف اجرا نمیشود یا اگر میشود پر از باگ و مشکلات ناخواسته است.
موتورهای مولتی پلتفرم آن چیزی که تصور میکنید نیستند!
تا صحبت از ساخت بازی برای چند پلتفرم به میان میآید به سرعت ذهن بازیسازان تازهکار به سمت موتورهای مولتیپلتفرمی همانند یونیتی و آنریل میرود و این گونه تصور میکنند که اگر آنها در این موتورها برای یک بار بازی خود را تولید کنند میتوانند پس از آن محصول خود را برای تعداد بسیاری از پلتفرمهای هدف خروجی بگیرند. این مسئله به خاطر تبلیغات نه چندان کاملی که پیرامون این دو موتور صورت گرفته به وجود آمده و متاسفانه قضیه بسیار با آن چیزی که تصور میشود متفاوت است.
هر پلتفرم بسته به معماری سختافزار و نرمافزار به کار رفته در آن قابلیت پشتیبانی از یکسری تکنیکها و روشهای فنی بازیسازی را دارد
در قدم اول بهتر است بدانید که هر پلتفرمی بسته به ویژگیهای سختافزاری و نرمافزاری خود، نیاز به این دارد ما بازی خودمان را در شکل و ترتیب مشخصی برای آن بستهبندی و آماده کنیم و این موضوع کاملا جدا از فرآیند توسعهی بازی است. مثلا در حالی که تمامی پروژههای نرمافزاری ما برای پلتفرم موبایل و سیستم عامل اندروید در یک فایل APK قرار میگیرد، برای پلتفرمی همانند رایانههای شخصی حتما یکی از فایلهای نهایی با پسوند EXE خواهد بود. حتی بهتر است بدانید که این بستهبندیهای نهایی برای هر پلتفرم دارای استاندارد از پیش تعیین شدهای است و صرفا تغییر پسوند یک فایل مثلا به APK آن را برای سیستم عامل اندروید خوانا نمیکند.
اما نکتهی مهمی که در این میان وجود دارد این است که همه چیز به خوانا کردن فایلهای یک بازی برای یک پلتفرم ختم نمیشود و هر پلتفرم بسته به معماری سختافزاری و نرمافزاری به کار رفته در آن قابلیت پشتیبانی از یکسری تکنیکها و روشهای فنی بازیسازی را دارد. برای همین گاهی ممکن است صرف عوض کردن یک پلتفرم شما را به این سمت ببرد که برای پیادهسازی یکسری از اجزای بازی باید به دنبال روش دیگری باشید چرا که روش قبلی صرفا در پلتفرم اولیه قابل اجرا بوده است.
تازه در این نقطه این را هم به مسئله اضافه کنید که میزان قدرت سختافزاری یک پلتفرم شاخصی کاملا جدا از معماری نرمافزاری و سختافزاری آن است و برای همین اگرچه روی کاغذ ممکن است یک معماری توانایی اجرای فلان تکنیک فنی را داشته باشد، ولی به خاطر قدرت پایین آن سختافزار حداکثر میتوان در شکلی محدود از آن تکنیک برای توسعه بازی روی این پلتفرم استفاده کرد. بهترین مثال برای این مسئله را میتوان در مقایسهی رایانههای شخصی و لپتاپها مشاهده کرد که اگر چه مثلا هر دو از پردازندهی تقریبا شبیه و با معماری یکسان بهره ميبرند ولی قدرت همین پردازنده به دلایل معلوم در نسخههای لپتاپ بسیار کمتر از نمونههای موجود در گروه دیگر است.
برای همین در یک جمعبندی مختصر در انتهای این بحث باید بیان کنیم که توانایی موتورهای مولتیپلتفرم صرفا در همان بستهبندی اشاره شده خلاصه میشود و این شما هستید که باید متناسب با نوع سختافزار و نرمافزار پلتفرم هدف و با رعایت میزان قدرت آن تعیین کنید که باید بازی خود را از چه عناصری بسازید. برای همین همچنان با پیشرفتهای صورت گرفته در زمینهی تکنولوژی اصطلاحا پورت کردن یک بازی برای چند پلتفرم مختلف نه تنها کار چندان راحتی نیست، بلکه گاهی بسیار هزینهبر هم میشود.
البته خوشبختانه تمامی این موتورها در بخش اسناد خود کم و بیش به شرایط توسعه برای هر پلتفرمی پرداخته و صرفا به توضیح روش خروجی گرفتن برای آنها اکتفا نکردهاند. شما میتوانید با کمی مطالعهی اسناد این موتورها نکات بسیاری را در زمینهی توسعهی یک بازی برای یک پلتفرم مشخص به دست آورید. با این حال این مسئله در مورد سیستمهای بستهای همانند کنسولهای بازی کمی متفاوت است و شما برای دستیابی به اسناد و ابزارهای مربوطه باید در ابتدا توسط سیستم مدیریتی هر کنسول به عنوان یک توسعهدهندهی معتبر تایید شوید. برای همین با کمی جست و جو در اینترنت مشاهده میکنید که برخلاف پلتفرمهایی همانند موبایل و رایانههای شخصی هیچ سند درست و حسابی در زمینه توسعهی بازی برای پلتفرمهای دیگر وجود ندارد.
سازگاری (Compatibility)
یکی از قدمهای اولیه برای توسعه بازی برای هر پلتفرمی به خصوص اگر پلتفرم هدف همانند دستگاههای موبایل دارای تنوع سختافزاری زیادی باشد، کسب اطلاعات در زمینهی سازگاریهای سختافزاری و نرمافزاری است. مثلا به عکس زیر دقت کنید. این عکس میزان سازگاری خانوادههای مختلف واحد پردازشی گرافیکی (GPU) دستگاههای موبایلی را با یکسری از ویژگیهای موتور آنریل نشان میدهد.
همان گونه که مشخص است صرفا یک خانوادهی مشخص از این پردازندههای گرافیکی از تمامی ویژگیهای مشخص شده با اطمینان پشتیبانی میکنند و برای همین اگر جامعهی هدف ما صرفا دستگاههایی با این پردازندههای گرافیکی نباشد، ما باید محدودهی استفاده خود از قابلیتهای گفته شده را به حدی کاهش دهیم که تمامی جامعهی هدف پوشش داده شود. البته میتوان برای هر خانواده از پردازندههای گرافیکی خروجی متناسب با آن را تهیه کرد ولی این روش در کنار هزینهبر بودن و همچنین ایجاد تفاوت در کیفیت ظاهری بازیها، به خاطر قابلیتهای محدود فروشگاههایی همانند کافه بازار در شناسایی سختافزارهای هدف نصب کنندهی بازی، آنچنان به کار توسعهدهندگان ایرانی نمیخورد. چرا که تا زمانی که نتوان مثلا از نصب نشدن نسخهی مخصوص پردازندههای Tegra4 روی گوشیهایی با پردازندههای Adreno جلوگیری کرد، انجام این کار نه تنها بیهوده خواهد بود بلکه میتواند مشکل آفرین هم باشد. چرا که برخلاف نسخههای عمومی، نسخهی مخصوص هر پردازنده صرفا روی همان پردازنده قابلیت اجرا دارد و روی دیگر گزینهها به هیچ وجه اجرا نمیشود.
تعیین جامعهی هدف در یک پلتفرم مشخص
همان گونه که در بخش قبلی مشاهده کردید، مثلا هر پردازندهی گرافیکی از یکسری موارد مشخص پشتیبانی میکند و این مسئله صرفا محدود به پردازندههای دنیای موبایل هم نیست. برای همین بهترین کار برای انتخاب سختافزارهای که می خواهید پشتیبانی کنید این است که در گام اول یک دید مناسب از نحوهی توزیع سختافزاری در بازار هدفتان به دست آورید. مثلا برای پلتفرم موبایل همان کافهبازار اشاره شده دارای گزارشهای فصلی متعددی است که در آنها بیشترین مدل گوشیهای استفاده شده توسط کاربران اعلام میشود و این بخش از اطلاعات منتشر شده از آن در گزارش فصل پاییز را میتوانید به طور خلاصه در زیر مشاهده کنید.
با جمعآوری چنین گزارشهایی میتوانید به گونهای جامعه هدف خود را انتخاب کنید که هم دست و پای شما برای ساخت یک بازی به مقدار کافی باز بماند و هم این که گستردهی مخاطبان شما از حد مشخصی کوچکتر نشوند و میزان درآمد احتمالی شما در حد مناسبی باقی بماند. همچنین یکی از استفادههای آتی چنین کاری این است که شما به راحتی میتوانید بفهمید که بهتر است محصول خود را روی چه گوشیهای امتحان کنید و مطمئن شوید حداقل بازی شما روی گوشیهای پرطرفدار بازار به خوبی کار میکند. در انتها اگر علاقمند به دریافت اطلاعات تفصیلی در مورد آخرین گزارش کافهبازار در این زمینه هستید میتوانید روی این لینک کلیک کنید.
نکات پایانی
به عنوان بخش پایانی بهتر است به این موضوع اشاره کنیم که نگرشها در طراحی و توسعهی یک بازی بسیار متفاوت است. گروهی صرفا بر اساس محدودیتهای موجود در یک پلتفرم طرح خود را شکل داده و این گونه سعی میکنند اصطلاحا در چارچوب تعیین شده حرکت کنند. به عنوان یک مثال فرضی اگر گفته شده باشد که از سیستم ذرات در گوشیهای موبایل پشتیبانی نمیشود آنها نیز نه تنها استفاده از چنین عنصری در بازی خود را منع میکنند بلکه حتی از آن در ایدههای خود هم استفاده نمیکنند. اما در نقطه مقابل این افراد نگرش دیگری وجود دارد که بدون توجه به محدودیتها به طراحی آن چیزی که میخواهد پرداخته و سپس بعد از آن سعی میکند متناسب با محدودیتهایی که با آنها مواجه است، راههایی را برای پیادهسازی ایدههای خود به دست آورد. تفاوت این افراد با گروه قبلی در این است که گروه اول در چارچوب محدودیتها فکر کرده و سپس ایدههایش را اجرایی میکند ولی گروه دوم در فضایی نامحدود فکر کرده و سپس سعی میکند با استفاده از آن چیزی که در اختیار دارد ایدههایش را عملی کند. برای همین اگر چه نگرش گروه دوم بسیار جذاب است ولی هر کسی از عهدهی آن بر نمیآید. به عنوان نمونه مگر در این سالها تفاوتی در محدودیتها سختافزاری و نرمافزاری کنسولی همانند پلیاستیشن صورت گرفته است؟ اما در مقابل مشاهده میکنیم که با این حال استودیوهایی همانند ناتیداگ و سانتامونیکا هر بار محصولی خلق میکنند که یک سر و گردن از محصولات رقیب به خصوص از لحاظ فنی بالاتر است.
نظرات