نکاتی برای کاهش حجم پروژه
|بسم الله الرّحمن الرّحیم

سلام علیکم.
چند ترفند وجود داره که با کمک اونها میتونید تا حدّ امکان حجم پروژهتون رو کاهش بدین. در این آموزش به چند مورد از اونها اشاره میکنیم.
لینک دانلود نسخهی PDF این آموزش:
نکاتی برای کاهش حجم پروژه (3174 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 رها کنید و منتظر بمونید تا عملیّات فشرده سازی تموم بشه. این کار حجم بازیتون رو حدوداً نصف میکنه!
سخن آخر
بیشتر حجم پروژه در خروجی تحت وب به خاطر تصاویر و صداهاست. با اطمینان از اینکه تصاویر و صداها رو به بهترین شکل ممکن فشرده کردید، میتونید حجم دانلود پروژهتون رو به طور قابل ملاحظهای کاهش بدین.
مفید بود ممنون از ترجمه
با عرض سلام و تبریک سال نو
از اینکه وقت گذاشتید و این آموزش را ترجمه کردید از شما تشکر می کنم.
سلام میشه اموزش استفاده از سورس بازیهارو بزارین مثلا استفاده از سورس بازی فلاپی برد گذاشتن اسپرایت در سورس خیلی ممنون
سلام خسته نباشیداگر بخوایم بازی اندرویدی رو که ساختیم توی گوگل پلی بزاریم چه چوری باید بزاریم مثلا اگر برای فروش باشه چجوری شماره حسای بین المللی باید باشه لطفا اموزش برای این بسازید پیشاپیش ممنون
علیک سلام، سلامت باشید.
متأسفانه برای گذاشتن بازی در گوگل پلی باید یک هزینهای رو به گوگل پرداخت کنید، و همین طور به دلیل تحریم بودن ایران یک عالمه دردسر دیگه هم دارید. به همین دلیل خیلیها امکانش رو ندارند، فکر نمیکنم آموزشش رو بذارم.
سلام
لطفا اموزش ساخت منوهای مختلف بازی(بازیهای اندرویدی)مثل منو مراحل در بازی انگری بردز رو بزارین
سلا م میشه بگید تقریبا چه قدر باید به گوگل پرداخت کنیم؟
علیک سلام
۲۵ دلار
سلام مجتبی جان
برنامه upx فقط بدرد خروجی ویندوز میخوره یا برای اندروید هم میشه ازش استفاده کرد؟
علیک سلام
فقط به درد خروجی ویندوز و لینوکس میخوره.
برای مکینتاش هم مطمئن نیستم به درد بخوره یا نه.
ولی مطمئناً به درد خروجی اندروید نمیخوره.
سلام
توی آموزش جدول امتیازات آنلاین.
اگه بخوایم ایمیل از کاربر بگیریم و امتیاز هر بازیکن رو اپدیت کنیم باید چه تغییراتی تو فایل پی اچ پی بدیم .لطفا کمک کنید
علیک سلام
بهتره خودتون برید کمی PHP و SQL یاد بگیرید.
چون این طوری هر کاری بخواین انجام بدین باید بپرسید فایل php رو چی کار کنم. ولی اگه php یاد بگیرید همه کار میتونید بکنید.
در سطحی هم که بخواین فقط برای استفاده در کانستراکت یاد بگیرید، بیشتر از دو روز نباید وقتتونو بگیره.
وقتی من از کنستراکت خروجی میگیرم پوشه ی بازی حدود 15مگابایت حجم داره
ولی وقتی بعدش با intel xdk خروجی apk میگیرم حجمش میشه 45 مگابایت!!!
لطفا درمورد این افزایش حجم و تنظیماتی که باید تو intel xdk برای کاهش حجم بازی انجام بشه یه آموزش بگذارید
سلام
در این مورد در انجمن بسیار بحث شده است.
با سلام لینک دانلود upx خراب است.
البته من خودم دانلود کردم….(از خود سایتش)
با تشکر.
سلام ممنون میشم اموزشی برای ساخت بازی انگری برد و اموزش ساخت بازی های پرتاب توپ مثه بکستبال با کانستراکت رو بزارید
سلام خسته نباشید
سایت خیلی خوبی دارید
ولی یه مشکل بزرگ داره
فونت نوشته ها اصلا خوب نیست و درست دیده نمیشه
خواهشا رسیدگی کنید
سلام. اتفاقا فونت یکان که خیلی معروف و خوانا هست.