حجم بازی ها
فهرست مطالب
آخرین به روزرسانی در 23/09/2023
در این مقاله قصد داریم با یکی از بزرگ ترین چالش های برنامه نویسان و سازندگان بازی یعنی حجم بازی ها و مباحث مربوط به بهینه سازی آن روبه رو شویم .
قطعا همانطور که گفته شد از مهم ترین چالش ها و نکات کلیدی در بازی سازی حجم بازی و میزان بهینه سازی آن می باشد ، زیراکه طبق توضیحاتی که در ادامه گفته خواهد شد ، عدم رعایت این موضوع می تواند باعث بروز مشکلات جدی ای در پروسه ی اجرا و حتی دانلود کاربران شود .
مشکلاتی که حجم بالای بازی به وجود می آورد
قبل از پرداختن به این سری مشکلات باید یادآور شویم که چالش بهینه سازی حجم بازی بیشتر و بیشتر برای دیوایز های موبایل و سیستم عامل های اندروید و ios مطرح است زیراکه معمولا تلفن های همراه بیشترین میزان محدودیت در حافظه ی داخلی و سخت افزارهای پردازشی دارند ؛ اما این تنها یک اولویت می باشد و ما در تمامی پلتفرم های باید نکات مربوط به بهینه سازی در پروسه ی ساخت بازی را رعایت کنیم .
1- عدم بازخورد کاربران
قطعا اولین مشکلی که در بالا رفتن حجم بازی به چشم می خورد عدم بازخورد کاربران از بازی می باشد ، زیراکه با افزایش حجم یک بازی کاربران محدودیت هایی را در حجم مصرفی برای دانلود بازی و حجم مصرفی برای نصب بازی را در دیوایز مورد نظر خود دارند و قطعا بالا رفتن حجم یک بازی بیشتر از حد استاندارد می تواند بازخوردهای منفی کاربران را به همراه داشته باشد .
نکته : بالا رفتن حجم بازی تنها زمانی مورد قبول است که این افزایش حجم نتیجه ی افزایش کیفیت ، گرافیک ، مراحل ، داستان و جزئیات دیدنی بازی را به همراه داشته باشد و تنها در صورتی برای کاربران آزار دهنده است که یک بازی پر حجم اما بی کیفیت را تجربه کنند و حجم بازی بابت عدم بهینه سازی مواردی باشد که ما در ادامه به توضیحات مربوط به آن خواهیم پرداخت .
2- لگ وکاهش سرعت بازی
دومین مورد پر اهمیتی که از مضرات عدم بهینه سازی بازی می باشد لگ زدن و کاهش سرعت بازی در دیوایز های مختلف می باشد که این امر ، روان اجرا نشدن بازی را به همراه دارد و باعث می شود کاربران برای اجرای بازی شما حتما نیاز به تهیه ی سخت افزار بسیار قدرتمند باشند .
3- عدم اجرای بازی در تمامی دیوایزها
نتیجه کلی و آخر ، عدم بهینه سازی بازی در اجرا نشدن بازی در تمامی پلتفرم ها می باشد ؛ به عنوان مثال فرض کنید شما یک بازی برای سیستم عامل اندروید منتشر می کنید و این بازی به قدری از منابع سخت افزاری تلفن های همراه نیرو می کشد که تمامی دستگاها ، پردازنده ها ، گرافیک و در نهایت رم ها توانایی اجرای آن را نداشته باشند.
به همین خاطر قطعا بازی در بسیاری از تلفن های همراه یا اجرا نشده و یا در صورت اجرا با لگ و کاهش سرعت همراه است و این مورد نیز ، نتیجه کاهش شدید کاربران شما را به همراه خواهد داشت .
راه های بهینه سازی بازی
فشرده سازی فایل ها
قطعا ابتدایی ترین و یکی از مهم ترین نکات در بهینه سازی حجم بازی فشرده سازی فایل ها می باشد که شامل: فایل های صوتی – تکسچرها – تصاویر – ویدیوها – متریال ها و … هر فایل مدیایی می باشد که در بازی شما قابل نمایش است .
فشرده سازی فایل های تصویری و ویدیویی معمولا در ابعاد آن ها انجام می شود و برای فایل های صوتی نیز باید حالت فشرده فعال باشد که به روان ترین شکل ممکن خوانده شوند .
بهینه سازی سایه ها
یکی از مواردی که بسیار در بازی هایی که به خصوص دارای آبجکت های زیادی هستند ، مشکل ساز است و توان پردازشی سیستم را به زحمت میندازد ، سایه ها می باشند ؛ که شما باید بسیار دقت داشته باشید که در استفاده از سایه ها ، بهینه عمل کنید.
این بهینه عمل کردن به این معناست که تمامی اجسام و مدل های یک بازی نیازمند سایه پردازی نیستند ؛ پس مدل هایی که سایه در آن ها هیچ توجه و تاثیری را ندارد ، بهینه سازی کنید .
Sprite Packer
Sprite Packer یک قابلیت هوشمند از یونیتی می باشد که در واقع یک بهینه سازی هوشمند و خود ساخته را در تمامی بخش های بازی شما به صورت اتوماتیک وار انجام می دهد .
با استفاده از این قابلیت که در آپدیت های جدید یونیتی به صورت رایگان در دسترس کاربران قرار گرفته است ، امکان این را دارید که محدودیت های اسپرایت ها را رفع کرده و تگ دسته بندی را برای آن ها فعال سازید .
Shaders
استفاده از شیدرها دومین نکته ی مهم و حیاتی در بهینه سازی بازی می باشد.
ما به طور کلی دو نوع شیدر داریم که به دسته بندی : شیدرهای پیکسلی و شیدرهای ورتکسی تقسیم می شوند.
شیدرهای پیکسلی نسبت به شیدرهای ورتکسی دارای حجم بیشتری بوده و پروسه ی رندرینگ طولانی تری را دارا هستند اما نکته ای که قابل توجه می باشد در کیفیت بالاتر شیدرهای پیکسلی نسبت به شیدرهای ورتکسی است و در برخی از موارد که کیفیت گرافیکی حرف اول را می زند ، شما به ناچار باید از شیدرهای پیکسلی استفاده کنید.
حذف فایل های اضافه
پروژه ی بازی خود را قبل از انتشار باید از تمامی فایل های اضافی و هرز پاکسازی کنید ؛ زیراکه وجود فایل های اضافی ای مانند : گیم آبجکت ها و assets ها باعث افزایش بار و حجم خروجی می شوند .
به عنوان مثال اگر تنها یک گیم آبجکت اضافی ، حتی بدون استفاده در پروژه ی شما باشد ، یونیتی از آن گیم آبجکت و تاثیراتی که آن بر تمامی قسمت های بازی می گذارد خروجی گرفته و قائدتا این مورد در حجم پروژه تاثیر گذار به شمار می آید .
Light Map
اهمیت نورپردازی ها و ویژگی لایت مپ مانند سایه های در بهینه سازی می توانند نقش بسیار پررنگ و حیاتی را ایفا کند و قطعا نورپردازی ها باید به صورت کاملا بهینه و در عین حال با کیفیت برای آبجکت های مختلف بازی ایجاد شوند. (برای آشنایی با اصول نورپردازی بازی کلیک کنید.)
لازم به ذکر است اگر از تنظیمات لایت مپ به درستی استفاده نشود به عنوان مثال ، فرض کنید ویژگی لایت مپ برای تمامی آبجکت ها ایجاد شود و تنظیمات درست آن انجام نشود ، می تواند تاثیر عکس بر سرعت بازی گذاشته و تازه سرعت بازی را از حالت اولیه بدتر کند.
لود درست جزئیات و آبجکت های بازی از منابع درست
باید به شدت دقت داشته باشید که بخش های مختلف بازی شما از چه منابعی لود می شوند ، به عنوان مثال برخی از قسمت های بازی باید از منابع سخت افزاری مانند RAM لود شوند برخی دیگر باید از سرور لود شوند و … .
یکی از راهکارهای جلوگیری از مشکل لودینگ اشتباه از بخش های نامربوط این است که تمام پریفب ها و asset ها را درون پوشه resource ببرید و هر زمان که نیاز داشتید، همان آیتم را به شکل پویا و داینامیک لود کنید.
بهینه سازی در کدنویسی
صد در صد در کدینگ بازی از برنامه نویسی بهینه و شی گرا استفاده کنید به عنوان مثال به جای استفاده از لیستی از آرایه ها استفاده کنید و یا به جای استفاده از حلقه های Foreach از حلقه ی for برای افزایش بار بهینه سازی استفاده کیند .
پولیگان ها
در استفاده از پولیگان ها و اجزای سازنده ی آبجکت های بازی بسیار هوشمندانه و بهینه عمل کنید زیراکه این مورد تاثیر مستقیمی بر روی حجم بازی می گذارد .
ما بسیاری از مدل ها را داریم که از جزئیات زیادی برخوردار نیستند و نیازمند جزئیات سازندگی زیادی برای ساخت آن ها نیست و در صورت کاهش اجزای سازنده و پولیگان های سازنده تغییری در ساختار و کیفیت مدل ایجاد نمی شود پس در این موارد اصلی بهینگی را بسیار مورد توجه قرار دهید .
لاگ ها
در یونیتی تا حد امکان از تغییر دادن رشته ها بپرهیزید.
به همین دلیل حتما در انتهای توسعه بازی ، تمامی Debug.Log هایی که برای لاگ گرفتن و دیباگ کردن بازی نوشته اید را حذف کنید، مخصوصا آنهایی که در update یا حلقه ها هستند.
این امر می تواند تاثیر بسیاری را در کاهش حجم بازی شما بگذارد .
ترفندهای ارائه و کنترل حجم بازی
1- بسته های الحاقی و دیتاها
معمولا برای بازی های سنگینی که برای کنسول های نسل نهم ارائه می شود بسته های الحاقی نیز ارائه می شوند.
این بسته های الحاقی به معنای قابلیت و به روزرسانی هایی از بازی است که تغییری در ساختار بازی ایجاد نمی کند ، اما به عنوان مثال می تواند تم ها ، کارکتر ها ، مپ ها و سایر جزئیات مربوط به گیم دیزاین و یا قابلیت های فیزیکی را به بازی اضافه کند.
و خب قائدتا از آنجایی که سازندگان بازی علاقه دارند نسخه ی اورجینال بازی را بهینه نگه دارند برخی از این آپدیت ها در قالب بسته های الحاقی ارائه می شود.
مبحث دیتا اکثرا برای دیوایز تلفن های همراه به کار رفته می شود و بازی های سنگین دارای یک بسته ی دیتا نیز می باشند که شما در ابتدا فایل اصلی بازی را دانلود کرده و پس از آن ، با دانلود کردن فایل دیتای بازی و قرار دادن آن در مسیر My files -> Android -> Obb می توانید بازی را اجرا کرده و از تمامی قابلیت های آن بهره ببرید .
2- کدینگ بهینه برای فرخوانی
همانطور که در دو بخش از راه های بهینه سازی گفته شد ، کدینگ بهینه و در درجه ی دوم فراخوانی فایل های بازی بسیار اهمیت بالایی دارد .
اکثر بازی های آنلاینی که با سرور سر و کار دارند بسیار سعی دارند که با کدنویسی سمت سرور خود اکثر اطلاعات را به صورت cloud computing از سمت سرور خوانده شود و این امر قطعا باعث کاهش حجم بازی می شود زیراکه اطلاعات به صورت آنلاین و از روی سرور در حال فراخوانی است .
اما فراموش نکنید افزایش بار خوانایی اطلاعات از سمت سرور نیز می تواند باعث کاهش سرعت بازی نیز بشود پس این مورد باید به صورت کاملا تخصصی و بهینه انجام شود .
نکته نهایی ماناتاز
در تمامی فرآیندهایی که در بالا برای بهینه سازی بازی گفته شد باید تماما معادل سازی انجام شود و این معادل سازی به این معناست که پروسه ی بهینه سازی نباید باعث شود که از کیفیت و گرافیک بازی شما کاسته شود .
پس می توان نتیجه گرفت پروسه ی بهینه سازی همیشه و در همه جا پاسخگو نبوده و در برخی از موارد شما مجبور به استفاده از آبجکت ها و تکسچرهای سنگین هستید زیراکه در غیر اینصورت با کاهش و افت قابل توجه کیفیتی – گرافیکی همراه خواهید بود .