آموزش سبک تر کردن بازی ها در کانستراکت ۲

سلام ،

توی انجمن بحثی در رابطه با پرفرمنس و memory usage و غیره و غیره شنیده بودم که تصمیم گرفتم ی پست مجزا براش باز کنم و توضیحاتی از تجربیات شخصی خودم رو برای دوستان به نمایش بذارم ، امیدوارم مفید واقع بشه :

میزانی که در memory usage نوشته میشه ، تقریبا مهم هست ، به مثالی که برای خود بنده در بازی نبرد مدرن پیش اومد توجه کنید تا نهایتا نتیجه رو بهتون بگم :

نسخه اول نبرد مدرن من اومده بودم تمام اسپرایت ها و تمامی آبجکت و اکشن و ایونت هارو در یک لایوت بارگزاری کنم ، پس از اینکه نسخه اول رو انتشار دادم ، با توجه به گزارشاتی که به دستم رسید ، متوجه شدم تعدادی از کاربران بازی براشون اجرا نمیشد یا گزارشات جالب دیگه ای که بود این بود که میگفتن بار اول همیشه از بازی میپره بیرون 😐

بعد به این memory usage برخوردم که دیدم مقدارش کمی بالا هست ( مقدار حدود ۷۶ بود ) همچنین تعداد ایونت ها هم در نسخه اول حدود ۳۸۰۰ تا بود ، که میشد این مقدار رو بهینه کرد ،،، با اینکه توی نسخه دوم بازی نبرد مدرن بنده بخش های زیادی به بازی اضافه کردم ، مقداریش ظاهری بود و مقداریشم امنیتی بود و ظاهری نبود با این حال مقدار memory usage توی نسخه دوم به ۲۵٫۴ رسید 🙂
که در نسخه دوم دیگه خبری از باگ بیرون اومدن از بازی نبود .
همچنین در نسخه دوم بازی تعداد ایونت ها به ۲۳۷۳ عدد رسید ، به عکس زیر توجه کنید :
ضمیمه ( این دو عکس نشون دهنده تغییرات روی بازی هست ، توجه کنید که هر دو عکس مال نسخه دوم بازی هست ، اما یکیش بهینه تر شده و بنده بیشتر روش کار کردم ، شاید اگر بیشترم کار میکردم بهینه ترم میشد )

همونطور که میبینید مقدار ایونت ها تغییری در این دو نسخه نداشته ، و بنده هرچی تونستم بهینه بکنم در اصل به پاس استفاده از عکس های سبک تر بود ، نسخه دوم بازی با عکس های سبک تر ( عدم استفاده از افکت های بیهوده و الکی ) و کلا چیز هایی توی همین دسته ها … میشه گفت این رقم رو کمتر کردم ، البته بعد از این نسخه ، میخواستم نسخه ای جهت تست به مایکت هم ارسال کنم که جالب تر این بود که توی نسخه مایکت این مقدار به ۱۹٫۹ رسیده بود . دلیل اینکه توی اون نسخه کمتر شده بود این بود که اومدم به جای استفاده از بک گراند های متفاوت در هر صفحه ( که حدود ۲۰ صفحه بودن ) ، از یک بک گراند اما با صفحات مختلف استفاده کردم ، و البته افکت های نور و چرخش و اینجور چیز هارو توی بحش صفحه اول ( لوگوی بازی ) ، فلش متن لوگوی بازی ، صفحه لود بازی ( دارای افکت های مختلف متن و … ) و صفحه فروشگاه و خیلی چیز های دیگه رو هم بروز رسانی کردم ، به طوری که برای بهینه سازی مجبور شدم به طور کلی تمامی بخش های این بازی رو تغییر بدم ، از گیم پلی گرفته تا صفحه لودینگ بازی ؛ نکته جالب دیگه اینکه ، من فهمیدم اگر شما به جای ساخت صفحات الکی و بیهوده سعی کنید صفحه لودینگ یک بازی رو در همون صفحه لول بازی بسازید ، در اصل این کار هم پرفرمنس بازی رو افزایش میده اون هم بصورت محسوس ، بعد از این گزینه شما حتی میتونید به جای استفاده از چندین لیوت ، از یک لیوت و چندین ایونت شیت استفاده کنید ، توجه داشته باشید ساخت چند ایونت شیت فقط برای این هست که خودتون هنگام کد نویسی قاطی نکنید ، در غیر اینصورت میشه همه رو توی یک ایونت شیت نوشت .

البته ی چیز خوشحال کننده ای که باید بهتون بگم ، این هست که ایونت ، تعداد وریبل ها ، حتی تعداد وریبل ها و حتی تعداد خیلی زیاد ایونت ها هیچ تاثیری در مقدار memory usage نداره !!!
یعنی memory usage فقط بر اساس آبجکت هایی که درون بازی ایمپورت میکنید محاسبه میشه ، آبجکت هایی که داخل بازی ایمپورت میکنید میتونه همون اسپرایت ها ، بک گراند ها ، افکت ها باشند ، پلاگین هایی که استاندارد هستند عملا مقدار آنچنانی از memory usage رو به خودش اختصاص نمیدن و عملا پلاگین ها مقدار ناچیزی از مموری رو درگیر خودشون میکنن .

برخلاف تصور اشتباه برخی از برنامه نویسان ، پرفرمنس ربطی به صفحه نمایش نداره ، یعنی اگرم تا الان فکر میکردید هرچقدر صفحه نمایش کوچیک تر باشه بهتره یا به عبارتی بازی روون تر میشه باید بگم اشتباه میکردید ، نمیدونمم اینارو کی میگه ولی در کل تو کل زندگیش داره اشتباه میزنه  

نکته آخر : ی بازی تا زمانی که روی یک گوشی یا سیستم عامل مخصوص خودش راه اندازی نشه نمیشه درباره پرفرمنس و مقدار استفاده از اف پی اس و سی پی یو و رم ازش صحبت کرد ، حتی کنسول دیباگ در کانستراکت هم نمیتونه به شما برای ساخت یک بازی با پرفرمنس بهتر کمک کنه ، پنل دیباگ کانستراکت بیشتر بدرد همون عیب یابی میخوره ، به این صورت که اگر بخشی ازبازیتون عمل نکرد یا مشکلی داشت بتونید ازش استفاده کنید ، در غیر اینصورت برای پرفرمنس و بهینه سازی نمیشه زیاد ازش کمک گرفت .

موفق و پیروز باشید / حسن ثنایی .

پاسخی بگذارید

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

درباره من

حسن ثنایی

داستان من

سلام ؛ من حسن ثنایی هستم ، از سال 1390 که برای اولین بار با واژه بازی سازی و برنامه نویسی آشنا شدم در حال فعالیت هستم ، فعالیت حرفه ای من از سال 1393 شروع شد و تا کنون ادامه دارد .

fa_IRPersian
en_USEnglish fa_IRPersian