کانال بازی سازی تلگرام
کاهش حجم و بهینه سازی بازی در یونیتی یا انجین های دیگر بازی :: آموزش ساخت بازی اندروید+پکیج های تخصصی

آموزش ساخت بازی اندروید+پکیج های تخصصی

در گیم اور، همیشه حق با مشتری است و در صورت نارضایی با هم به توافق می رسیم.
--
تمام اعمالی که انجام می دهیم، حتی اگر ذره ای و مثقالی باشد، به خودمان باز می گردد و بازتابش آنها را در زندگی خواهیم دید. زلزال ۷
او کسی است که (روح) شما را در شب (به هنگام خواب) میگیرد; و از آنچه در روز کرده ‏اید، با خبر است; سپس در روز شما را (از خواب) برمیانگیزد; و (این وضع همچنان ادامه مییابد) تا سرآمد معینی فرا رسد; سپس بازگشت شما به سوی اوست; و سپس شما را از آنچه عمل میکردید، با خبر میسازد. انعام ۶۰
دلها به یاد خدا آرام میگیرد. رعد آیه ۲۷
بدانید زندگی دنیا تنها بازی و سرگرمی، و تجمل پرستی و تفاخر در میان شما و افزون طلبی در اموال و فرزندان است . حدید آیه ۲۰
آن خدایی که آدمی را از خون بسته (که تحول نطفه است) بیافرید.
بخوان و (بدان که) پروردگار تو کریم‌ترین کریمان عالم است.
آن خدایی که بشر را علم نوشتن به قلم آموخت.
به آدمی آنچه را که نمی‌دانست تعلیم داد.
راستی که انسان سرکش و مغرور می‌شود.
چون که خود را در غنا و دارایی ببیند. علق ۲- ۷
این زندگانی چند روزه دنیا افسوس و بازیچه‌ای بیش نیست، عنکبوت ۶۴
در روی زمین به تکبر راه مرو که نمی توانی زمین را بشکافی و هرگز قامتت به بلندای کوهها نمی رسد. اسراء ۳۷
در آنچه خداوند بر تو بخشیده است، سرای آخرت را بجوی و سهم خود را از دنیا فراموش مکن و همانگونه که خدا به تو نیکی کرده است نیکی کن و هرگز فساد در زمین منما که خدا مفسدان را دوست ندارد. قصص ۷۷
و هرگاه نعمت و رحمتی به انسان بچشانیم و سپس آن را از او برگیریم او مأیوس و نومید میشود و به کفران و ناسپاسی بر میخیزد. هود ۹
بندگان مرا آگاه ساز که من بسیار آمرزنده و مهربانم. حجر ۴۹
از رحمت خدا نا امید مباشید که جز کافر هیچ کس از رحمت خدا نا امید نیست. یوسف ۸۷
پس به یاد من باشید تا به یاد شما باشم. بقره ۱۵۲
زندگانی دنیا چیزی جز متاع فریبنده نیست . آل عمران ۱۸۵
از آنچه به شما روزی داده ایم پیش از آنکه روزی فرا رسد که نه معامله ای وجود دارد و نه دوستی و شفاعت ، انفاق کنید. بقره ٢۴۵
بسا چیزی را ناخوش داشته باشید که آن به سود شماست و بسا چیزی را دوست داشته باشید که به زیان شماست، و خدا میداند و شما نمیدانید. بقره ۲۱۶
ما آیات (خود) را برای شما بیان کردیم شاید اندیشه کنید...حدید ۱۷

پیوندهای روزانه
پیوندها

منبع:gameover.blog.ir

تعداد راس ها و face های مدل رو کم کن(مل رو low polygon بساز. به زبون خودمونی همون لو پلی)
Material ها رو minimize کن.
حجم تکستچرها و UV ها رو کم کن.
فضای خالی تکستچرها رو با تکنیک های Overlapping تا می تونی حذف ن(overlapping یعنی همپوشانی)
از Per-Platform Texture Settings استفاده کن.(یه سری تنظیمات برای فشرده سازی تکستچر در خود یونیتی تعبیه شده.وقتی تکستچر رو توی کادر پروژه انتخاب می کنیم تنظیمات و خصوصیاتی توی inspector میاد حالا دقیق یادم نیست کدومش هست برای تنظیم فشرده سازی که برای تنظیم و فشرده سازی تگستچر برای اجرا روی هر پلتفرمی مثل اندروید یا مک و ویندوز و ... تعبیه شده)
--
نکته ی دیگه ای برای بهینه سازی و بالارفتن performance(کارایی پردازنده):
وقتی از کلاس transform استفاده می کنیم یک سری کارها به صورت فانکشنال(functionality) یا تابعی باید اجرا بشن که نیاز به پردازش بیشتر داره. بهتره که از کش یا ارجاع استفاه بشه. یعنی یه اشاره گر یا متغیر از اون بسازیم. مثل این کد :

void Awake()
{
//Cache Transform (MyTransform is a class variable)
MyTransform = transform;
}
void Update(){
//Update position using cached transform
MyTransform.localPosition = MyPosition;
}

نکته ی بعدی برای افزایش کارایی اینه که تا می تونیم از تابع Update کمتر استفاده کنیم و همینطور توابع مثل LateUpdate و FixedUpdate . این توابع برای رویدادها و رفتارهایی بکار می رن که باید طی زمان تغییر کنن. پس بهتره اونا رو کمتر استفاده کنیم.
مثلا نازی نیست سلامتی دشمن(Enemy) رو توی هر فریم چک کنیم. بلکه کافیه فقط زمانی متغیر health رو چک کنیم که حمله ای صورت بگیره(رویدادهای برخورد OnCollisionEnter و OnCollisionEnter2D و یا ....) به طور خلاصه با بهینه سازی کد می تونیم زمان CPU و GPU رو بهبود بدیم.

نکته ی بعدی: Collider ها رو در حد امکان کاهش بدید.

نکته ی بعد برای افزاریش کارایی: از کلاس GUI و OnGUI کمتر استفاده کنید چون چند بار در هر فریم اجرا میشه و بهتره فقط برای منوهای ساده استفاده بشه نه complex و پیچیده.

نکته ی بعدی: از تکستچرهای اطلس استفاده کنید(تکستچرهای اطلس به تکستچرهایی می گن که ابعادشون توانی از 2 باشه.مثل 8 یا 16 یا 32 یا 64 یا 128 یا 256 یا 512 و ....)(چون اگه نباشه یونیتی مجبوره خودش تبدیلات رو انجام بده.)

مبحث بعدی استفاده از Object Pooling و Static Batching هست.
object pooling یه مبحث برنامه نویسی پیشرفته تری هست . مثلا وقتی اسلحه شلیک می کنه داریم به صورت runtime و داینامیک پریفب گلوله(bullet) رو instantiate می کنیم. به جاش می تونیم قبلا چند گلوله رو ایجاد و در بافر پشت صحنه ی جاری مخفی کنیم(offscreen buffer) و وقتی لازم شد این گلوله های از پیش تولید شده رو از حالت hide در بیاریم و نمایش بدیم.این عملیات باعث افزایش کارایی و پردازش کمتر برای اختصاص حافظه در حین اجرا میشه(dynamic memory allocation) و مخصوصا روی سیستم های موبایل کاربرد ویژه ای داره که بحث برنامه نویسیش کمی پیچیده هست.

Static batching هم یک گزینه هست. برای اون دسته از ابجکت هایی که در حین بازی به هیچ وجه حرکت نمیکنن تیک گزینه ی Static check box رو می زنیم.که در بالا و راست خصوصیات ابجکت در inspector میتونیم تنظیمش کنیم که باعث optimizations(بهینه سازی) میشه.

نکته ی بعدی Skyboxes هست که باید یه سری تنظیمات رو برای آسمان های پانورما و ... در بازی انجام بدیم که به جای اینکه realtime همه چیز تولید بشه یه سری شبیه سازی های از قبل برای ایجاد ستاره ها و غیره از قبل بسازیم و استفاده از تکنیک های parallax effects و .... .

نکته ی بعدی : از نورهای پویا و سایه ها( Dynamic Lights and Shadows) کمتر استفاده کنید.(میشه از Light mapping و تکنیک نورپردازی از قبل رندر شده ی Beast استفاده کرد که در خود یونیتی تعبیه شده و می تونیم نورهای نامحدود بذاریم و bake کنیم)

بقیه هم خودتون برید دنبالش....
موافقین ۰ مخالفین ۰ ۹۴/۰۹/۰۲
مدیرکل

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی