نکاتی برای کاهش حجم پروژه

بسم الله الرّحمن الرّحیم

Tips to reduce the download size

سلام علیکم.

چند ترفند وجود داره که با کمک اون‌ها می‌تونید تا حدّ امکان حجم پروژه‌تون رو کاهش بدین. در این آموزش به چند مورد از اون‌ها اشاره می‌کنیم.

لینک دانلود نسخه‌ی PDF این آموزش:

نکاتی برای کاهش حجم پروژه (2006 downloads)

فرمت تصاویر

به طور پیش‌فرض، بعد از خروجی گرفتن، کانستراکت همه‌ی تصاویر شما رو بدون توجّه به فرمتی که در ابتدا داشتند به PNG-32 تبدیل می‌کنه. امّا هر تصویری که تعداد رنگ‌هاش زیر 256 تا باشه به PNG-8 تبدیل می‌شه.

برای کاهش حجم هر عکسی که با دوربین گرفته شده، یا نیازی به کانال آلفا نداره، فرمتش رو به JPEG تغییر بدین. JPEG یک فرمت Lossy هست (فشرده‌سازی تصویر با از دست رفتن بعضی از اطّلاعات تصویر همراه است)، امّا حجم به مراتب کمتری داره. شما می‌تونید از طریق پنجره‌ی محاوره‌ی Image format که از طریق نوار ابزار قابل دسترس هست (مثل تصویر زیر)، فرمت تصویر رو به JPEG تغییر بدین.

شما می‌تونید کیفیت تصویر رو هم برای فرمت JPEG به صورت یک عدد بین 0 تا 100 تعیین کنید. هرچه کیفیت پایین‌تر باشه حجم تصویر هم کمتر می‌شه.

برای تصاویری که کانال آلفا دارند، انتخاب PNG-8 هم باعث کاهش کیفیّت تصویر می‌شه، امّا حجم رو کم می‌کنه. کانستراکت 2 از الگوریتمی پیشرفته برای کاهش تعداد رنگ‌های تصویر استفاده می‌کنه که تا حدّ امکان به تصویر اصلی نزدیک باشه. فرمت PNG-8 فقط می‌تونه 256 رنگ مختلف رو برای یک تصویر نگه داره.

پنجره‌ی محاوره‌ی Image format این امکان رو هم به شما می‌ده تا تنظیمات فرمت‌تون رو به هر فریم به صورت جدا اعمال کنید (This frame)، یا به کلّ انیمیشن اعمال کنید (This animation)، یا به کلّ انیمیشن‌های اسپرایتتون اعمال کنید (All animations)، یا به کلّ تصاویر موجود در پروژه‌تون اعمال کنید (Entire project). مراقب باشید، وقتی به کلّ پروژه اعمال می‌کنید، همه‌ی تنظیمات دیگه‌ای که برای فرمت بقیّه‌ی اسپرایت‌هاتون انجام دادید از بین می‌رن.

تا حدّ امکان از تصاویر کوچک استفاده کنید

اگه در تنظیمات پروژه، گزینه‌ی Sampling روی Linear تنظیم شده باشه (که به طور پیش‌فرض همین طور هست)، وقتی عکس‌تون رو در لیوت بکشید و بزرگ‌تر از اندازه‌ی اصلیش بکنید، برای پرکردن فضای خالی، به نرمی پیکسل‌ها با هم ترکیب می‌شن و تصویرتون دارای ظاهری نرم و کمی مات می‌شه. شما می‌تونید از این مزیّت برای ساخت تصاویری با کنتراست پایین استفاده کنید (هر عکسی که از قبل دارای ظاهری نرم یا مات هست)، با تصویری با اندازه‌ی کوچک‌تر.

مثلاً اینجا یک تصویر 320 در 240 داریم که در اندازه‌ی واقعیش در لیوت دیده می‌شه:

اگه اندازه‌ی تصویر اصلی رو نصف کنیم (160 در 120)، بعد در لیوت بگیریم بکشیم بزرگش کنیم تا به اندازه‌ی قبلش برسه، فرق چندانی با حالت قبل نمی‌کنه:

این‌جا برای مقایسه، این دو عکس رو در کنار هم قرار دادیم. تفاوت اندکی وجود داره، ولی برای این نوع از تصاویر، تشخیص این تفاوت نسبتاً سخته، مگه اینکه یک نفر بخواد با دقّت به دنبال این تفاوت بگرده.

حتّی می‌شه تصویرمون رو از این هم کوچکتر کنیم، مثلاً 3 برابر، 4 برابر یا بیشتر کوچیکش کنیم. چون تصویر اصلی کوچیکتر می‌شه، حجمش هم یه عالمه کم می‌شه، امتیاز دیگه‌ای هم که این کار داره، استفاده‌ی کم‌تر از حافظه‌ی رم هست. در این مثالی که الآن زدیم، حجم تصویر 320 در 240 پیکسلی می‌شه 59/3 کیلوبایت، و حجم عکس 160 در 120 پیکسلی می‌شه 20/3 کیلوبایت. یعنی حدود 66٪ حجم رو کاهش دادیم.

کاهش حجم فایل‌های صوتی

همون طور که می‌دونید کانستراکت 2 همه‌ی صداهای شما رو به دو فرمت (Ogg Vorbis (.ogg و (AAC (.m4a تبدیل می‌کنه تا در تمام پلت‌فرم‌ها و مرورگرها قابل استفاده باشه. در بعضی پلت‌فرم‌ها، شما فقط به یکی از این فرمت‌ها نیاز دارید. به طور پیش‌فرض هنگام خروجی گرفتن، کانستراکت 2 فقط اون فرمتی رو که مطمئن هست پلت‌فرم مورد نظر ما ازش پشتیبانی می‌کنه رو در فایل خروجی نگه می‌داره. مثلاً وقتی از طریق NW.js خروجی می‌گیرید، کانستراکت 2 فقط فایل‌های ogg رو نگه می‌داره و از فایل‌های m4a چشم‌پوشی می‌کنه، چون مطمئن هست که NW.js از Ogg Vorbis پشتیبانی می‌کنه.

اگه به دلایلی خروجی گرفتید و دیدین که هر دو نوع فایل‌های صوتی‌تون خروجی گرفته‌شدند، ولی مطمئن هستید که فقط به یکی از اون‌ها احتیاج دارید، اون دسته‌ای که فرمت مورد نظرتون رو نداره حذف کنید و بقیه رو نگه دارید. لازم نیست این کار رو برای خروجی HTML5 انجام بدین، چون مرورگرها فقط فایل‌هایی رو دانلود می‌کنند که پشتیبانی می‌کنند، ولی برای بعضی پلت‌فرم‌ها لازمه که یک زیپ از همه‌ی فایل‌های پروژه‌تون آماده کنید؛ در این مواقعه که باید این کارو انجام بدین.

فایل‌های (AAC (.m4a فقط برای Safari (یا خروجی‌های iOS) و Internet Explorer (یا خروجی‌های Windows Store) لازم هستند. هر دو نوع فایل‌های صوتی برای وب لازم هستند، چون شاید کسی با Safari یا IE بخواد بازی ما رو انجام بده. امّا اگه می‌خواین برای یک پلت‌فرم خاص خروجی بگیرید ارزش داره که یه بار دیگه بررسی کنید تا فقط فرمت مورد نیاز رو نگه دارید.

فشرده‌سازی دوباره‌ی صدا هم می‌تونه به کاهش حجمش کمک کنه. شما می‌تونید صداهای stereo خودتون رو به mono تبدیل کنید، چون خود کانستراکت 2 امکانات کمی برای انکود کردن و تبدیل فرمت صداها داره، حتماً از یک نرم افزار جداگانه برای فشرده‌سازی صداها استفاده کنید، تا بتونید بهترین تعادل رو بین کیفیت و حجم داشته‌باشید.

هرچیزی که لازم ندارین رو بندازین دور

اگه یک افکت صوتی، ترک موسیقی، یا تصویر می‌تونه برداشته بشه، این کارو انجام بدین تا بی‌خودی حجم بازی رو بالا نبره. درضمن افکت‌های صوتی یا ترک‌های موسیقی طولانی که می‌تونن کوتاه بشن رو بهتره با یک نرم‌افزار ویرایش صوت، کوتاه‌تر کنید.

کانستراکت 2 تصاویر همه‌ی اشیاء و فایل‌های صوتی شما رو در خروجی نگه می‌داره، حتّی اگه هیچ‌وقت ازشون استفاده نکرده باشید، پس هرچیزی رو که در پروژه‌تون ازش استفاده نکردید رو حذف کنید.

Minify و فشرده‌سازی مجدّد هنگام خروجی گرفتن

هنگام خروجی گرفتن، حتماً تیک Minify script رو بزنید، تا کدهای جاوااسکریپت شما تا حدّ امکان کم‌حجم بشن. درضمن PNG recompression رو حدّاقل باید روی Standard قرار بدین تا مطمئن بشین همه‌ی بهینه‌سازی‌های خروجی گرفتن که شامل فشرده‌سازی مجدّد تصاویر هم می‌شه انجام می‌شن. حالت Brute هم می‌تونه کمی بیشتر حجم پروژه‌تون رو کاهش بده، ولی زمان خروجی‌گرفتن رو بسیار افزایش می‌ده، برای همین ممکنه ناخوشایند باشه.

تخمین حجم کانستراکت ۲

در نوار وضعیّت، کانستراکت 2 تلاش می‌کنه که حجم بازی رو تخمین بزنه. این مقدار فقط یک مقدار حدسی هست. همه‌ی بهینه‌سازی‌ها مثل اسپرایت‌شیت کردن یا فشرده کردن دوباره‌ی تصاویر به طور قابل ملاحظه‌ای حجم پروژه رو تغییر می‌دن. بنابراین شما نباید زیاد به این مقداری که در نوار وضعیّت دیده می‌شه اعتماد کنید. شما باید از پروژه‌تون خروجی بگیرید و بعد ببینید حجم پوشه‌ی بازی‌تون چه قدر می‌شه.

ضمیمه: کاهش حجم خروجی NW.js

ابتدا برنامه‌ی UPX رو از این‌جا دانلود کنید. بعد از خارج کردن از حالت فشرده، در پوشه‌ی خروجی بازی‌تون تک تک فایل‌های exe و dll خروجی ویندوز و فایل‌های so و بدون فرمت لینوکس رو بکشید و روی فایل upx.exe رها کنید و منتظر بمونید تا عملیّات فشرده سازی تموم بشه. این کار حجم بازی‌تون رو حدوداً نصف می‌کنه!

سخن آخر

بیشتر حجم پروژه در خروجی تحت وب به خاطر تصاویر و صداهاست. با اطمینان از اینکه تصاویر و صداها رو به بهترین شکل ممکن فشرده کردید، می‌تونید حجم دانلود پروژه‌تون رو به طور قابل ملاحظه‌ای کاهش بدین.

سؤالات فنی خود را فقط در انجمن بپرسید. در غیر این صورت پاسخ داده نخواهد شد.
۱۶ نظر

افزودن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

تمامی حقوق برای مرجع تخصصی کانستراکت محفوظ است.