راه های سبک کردن فایل خروجی بازی در موتور بازی ساز یونیتی
راه های سبک کردن فایل خروجی بازی د موتور بازی ساز یونیتی
مطمئنا هنگام گرفتن فایل خروجی بازی از موتور بازی ساز Unity، خیلی مواقع با مشکل حجم زیاد بازی روبرو شدید. همانطور که میدانید سرعت بازی برای یک گیمر بسیار اهمیت دارد. پس به این نکته بسیار توجه کنید زیرا حجم زیاد بازی باعث کاهش سرعت آن خواهد شد. اگر فردی سرعت کند بازی را ببیند مطمئن باشید که بلافاصله آن را حذف کرده و به دنبال بازی بهتری خواهد گشت و این موضوع به ضرر شما خواهد بود. پس در ادامه مقاله همراه باشید که با راه حل هایی برای رفع این مشکل آشنا شوید و بتوانید از آن ها استفاده کنید.
-
فشرده کردن کردن تکسچرها (Texture) و فایل های صوتی
بعد از اینکه از بازی خود فایل خروجی گرفتید، سپس وارد Editor.log شوید و به دنبال فایل هایی باشید که حجم زیادی از بازی شما را به خود اختصاص داده اند. قسمت هایی که معمولا حجم زیادی را اشغال میکند، تکسچرها و فایل های صوتی میباشند. برای اینکه بتوانید حجم تکسچرها را کاهش دهید و به صورت فشرده و با حجم کمی در بازی استفاده شوند، باید رزولشن آن ها را توان 2 قرار دهید، 1024×2014 میتواند مناسب باشد. توجه داشته باشید که این ابعاد بیشتر از 2048 نباشند. و اما فایل های صوتی، آن ها باید همیشه در حالت فشرده (compression) قرار بگیرند و باید این حالت همیشه برایشان فعال باشد. البته اگر فایل صوتی آنقدر کوتاه باشد که از کیفیت آن کم میکند نیاز نیست؛ البته این مورد بسیار کم پیش می آید.
-
بسته بندی کردن اسپرایت ها (pack)
توجه داشته باشید همیشه اسپرایت های مربوط UI و بازی را بسته بندی کنید. خوشبختانه از نسخه های 5 به بعد موتور بازی ساز Unity، میتوانید به صورت رایگان از قابلیت Sprite packer درون موتور یونیتی استفاده کنید. علاوه بر این، ابزارهای معروف دیگری نیز وجود دارند که میتوانند در این زمینه به شما کمک کنند ازجمله NGUI. با استفاده از Sprite packer میتوانید محدودیت اسپرایت ها با رزولشن توان 2 و همچنین ساخت atlas که معمولا به وسیله آرتیست به وجود می آید را ازبین ببرید. برای این کار کافی است که تگ مربوط به بسته بندی (packing tag) را مشخص کنید. آن موقع است که میبینید Unity مشکل شما را حل کرده و حجم خروجی به میزان قابل توجهی پایین آورده شده است.
-
حذف کردن کتابخانه و dll های بدون استفاده
در این قسمت باید قابلیت حذف (stripping) کتابخانه و dll های بدون استفاده را فعال کنید البته باید توجه داشته باشید که برای پروژه و پلاگین های مورد استفاده از آن مشکلی پیش نمی آید. اگر بازی دو بعدی طراحی کردید، این نوع بازی از امکاناتی که یونیتی در اختیار میگذارد مانند فیزیک استفاده نمیکند. از آن جایی که این بخش ها علاوه بر اینکه استفاده نمیشوند، فضای زیادی از بازی شما را نیز به خود اختصاص میدهند، با روشی که گفته شد میتوانید آن ها را از فضای بازی خود حذف کنید.
-
اضافه نکردن assetهای غیر ضروری در پروژه
اگر بازی شما دارای یک گیم آبجکت غیر فعال باشد، زمانیکه یونیتی از بازی شما فایل خروجی مگیرد تمام رفرنس هایی که آن گیم آبجکت غیر فعال مورد استفاده قرار داده است را وارد فایل خروجی میکند حتی اگر درون بازی فعال نشده و مورد استفاده قرار نگرفته باشد. توجه داشته باشید که پنجره hierarchy را از تمام آبجکت های غیر فعال و رفرنس های مربوط به آن ها و همچنین assetهای غیر ضروری، کاملا پاک کنید. پوشه Resources را همیشه مدنظر داشته باشید، زیرا هر فایلی که داخل آن باشد به فایل خروجی شما نیز اضافه خواهد شد. همیشه دقت کافی را داشته باشید!
و اما موضوع RAM گوشی های هوشمند بسیار باید مورد توجه قرار بگیرد زیرا با به روز شدن سیستم عامل ها، گوشی ها با کمبود حجم RAM مواجه شده اند. پس باید تا هر چقدر که امکان دارد در استفاده از حافظه بهینه سازی کنید زیرا برای بازی شما حجمی باقی نخواهد ماند. پس سعی کنید تا حدی که امکان دارد تعداد assetهایی که در بازیتان لود میشود را حذف کرده و کاهش دهید.
-
“هوشمندانه” بسته بندی کردن اسپرایت ها
زمانی که بازی اجرا میشود تمام فایل هایی که بسته بندی کرده بودید، دوباره از حالت فشرده خارج شده و در نتیجه فضای زیادی را خواهند گرفت. اما یک موضوع وجود دارد آن هم این است که اگر کار خود را در بسته بندی (pack) اسپرایت ها درست انجام داده باشید، فضای کمتری از RAM شما اشغال خواهد شد. موضوعی که باید رعایت کنید این است که کل تصاویری که باید باهم نشان داده شوند را باهم بسته بندی کنید و تلاشتان بر این باشد که فضای خالی زیادی را در Atlas باقی نگذارید. نکته بسیار مهمی که نباید آن را فراموش کنید این است که از اسپرایت های 9 قسمتی در رابط کاربری استفاده کرده و به هیچ وجه از تصاویر پشت زمینه بسیار بزرگ استفاده نکنید و به جای آن از اسپرایت های ساده تر استفاده کنید.
-
کم کردن کیفیت تصاویر و فایل های صوتی
معمولا نیازی نیست که از کاراکتر یا تصویری با طول و عرض 1024 استفاده کنید و میتوانید میزان آن را کمتر کنید زیرا رزولوشن رایجی در گوشی ها موجود است 1024×768 میباشد مگر اینکه بخواهید تصویر یا کاراکتر مورد نظرتان اندازه نمایشگر گوشی باشد. اگر موزیک بازی شما یک لوپ 3 دقیقه ای میباشد، میتوانید 30 ثانیه آن را کاهش دهید. معمولا کیفیت هر بازی ساخته شده از حداکثر گوشی ها بیشتر میباشد و با کاهش دادن کیفیت تصویر و فایل های صوتی بازی، افراد این تفاوت را در گوشی خود احسلس نمیکنند.
موضوع مورد بررسی بعدی CPU ها هستند. زمانی که یک پلیر یک بازی را انتخاب میکند که بازی کند معمولا با سطح معمولی ظاهر بازی مثل رابط کاربری و گرافیک ضعیف کنار می آیند اما یادتان نرود وجود پرفورمنس (performance) ضعیف در بازی، پلیر را از بازی کردن منصرف میکند. برای رسیدن به راه حل در ادامه همراه باشید:
-
حذف کردن لاگ های کنسول
به این نکته حتما توجه کنید که در انتها، تمام Debug.logهایی که برای لاگ گرفتن نوشته اید را حذف کنید زیرا متغیرهایی از نوع string که در یونیتی هستند باعث کند شدن سرعت بازی خواهند شد. بسیار جالب است که تغییری به این کوچکی، آنقدر میتواند موثر باشد.
-
شروع کردن بهینه سازی از پایین به بالا
زمانی که در حال بهینه سازی بازیتان هستید و پروفایلر را چک میکنید، بررسی کنید که کدام کلاس ها باعث کند شدن بازی شما میشوند. زمانی که آن ها را شناسایی کردید، شروع به بهینه سازی کلاسی کنید که در پایین ترین نقطه قرار گرفته است زیرا این ها جزء کلاس هایی هستند که بقیه کلاس ها نیز از آن ها استفاده میکنند. احتمال این وجود دارد که در صورت بهینه سازی کلاس های پایین دیگر نیازی به بهینه سازی کلاس های بالاتر نباشد.
همانطور که دیدید برای گرفتن فایل خروجی باید بسیار دقت کنید و تمام موارد گفته شده را بسنجید و رعایت کنید که در نهایت بتوانید خروجی موفقیت آمیزی از بازی خود داشته باشید بدون آنکه نگران آن باشید.