آموزش های ریز کانستراکت ( سبک تر کردن بازی )
#1
سلام ،

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



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

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

بعد به این memory usage برخوردم که دیدم مقدارش کمی بالا هست ( مقدار حدود 76 بود ) همچنین تعداد ایونت ها هم در نسخه اول حدود 3800 تا بود ، که میشد این مقدار رو بهینه کرد ،،، با اینکه توی نسخه دوم بازی نبرد مدرن بنده بخش های زیادی به بازی اضافه کردم ، مقداریش ظاهری بود و مقداریشم امنیتی بود و ظاهری نبود با این حال مقدار memory usage توی نسخه دوم به 25.4 رسید 1
که در نسخه دوم دیگه خبری از باگ بیرون اومدن از بازی نبود .

همچنین در نسخه دوم بازی تعداد ایونت ها به 2373 عدد رسید ، به عکس زیر توجه کنید :
ضمیمه ( این دو عکس نشون دهنده تغییرات روی بازی هست ، توجه کنید که هر دو عکس مال نسخه دوم بازی هست ، اما یکیش بهینه تر شده و بنده بیشتر روش کار کردم ، شاید اگر بیشترم کار میکردم بهینه ترم میشد )


[تصویر:  0000.png]

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

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


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


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



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


 سپاس شده توسط: shazde ، Mahdibabaei M.N ، Mehrdad ، shaygaaan ، arian ، mhc ، ghasem ، S.L.F ، amin COD ، oak ، amirnoviyan ، M.gh ، amin hosseini ، ᔕinaᗪehghani
#2
Bug 
سلام
من بازی که دارم میسازم memory use 273.6 هست !!! 
توی یک اسپرایتم 106 فریم دارم که مجبورم واسه اینکه کیفیتشون خوب باشه اندازشون رو 300و300 بذارم 
20 تا اسپرایت هستن که حجمشون کم هست.
وچند تا پس زمینه که سایزشون 854,480 هست .
ولی نمیدونم باید چیکار کنم که memory use بیاد پایین.
( بازی زیاد کند نیست)
|| فروشگاه نپتونـ! ||
|| nneptune.ir ||
|| کلیکـ کـنید ||
  پاسخ


 سپاس شده توسط:
#3
(1397/9/6، 04:08 عصر)S.L.F نوشته است: سلام
من بازی که دارم میسازم memory use 273.6 هست !!! 
توی یک اسپرایتم 106 فریم دارم که مجبورم واسه اینکه کیفیتشون خوب باشه اندازشون رو 300و300 بذارم 
20 تا اسپرایت هستن که حجمشون کم هست.
وچند تا پس زمینه که سایزشون 854,480 هست .
ولی نمیدونم باید چیکار کنم که memory use بیاد پایین.
( بازی زیاد کند نیست)

سلام

فکر میکنم بازی نبرد مدرن بازی فوق سنگینی بود ، با این حال مقدار مموری متوسطی مصرف میکرد .
بازیتون چه مقدار ایونت داره ؟


درضمن من باید به شما بگم که بازی شما همین الانشم در گوشی های نسبتا ضعیف نمیگیره ، این که میگید بازی کند نیست ، احتمالا هنوز توی یک گوشی موبایل یا گوشی موبایل ضعیف تستش نکردید که میگید کند نیست .

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

موضوع دوم اینکه ، اگر مقدار memory use تون اینقدر زیاد باشه و مقدار ایونت هاتون هم بخواد مثلا مثل بنده بالای 3000 تا باشه ، هنگام لود بازی به مشکل بدی برخورد میکنید که توصیه میکنم اینو موضوع رو روی چندین گوشی ضعیف و قوی تست کنید .
از قسمت دیباگ هم FPS بازیتون رو چک کنید و ببینید در صحنه بازیتون در حالت متوسط ( وسط بازی ) این عدد تا چه حدی میرسه.
  پاسخ


 سپاس شده توسط: shazde ، oak
#4
(1397/9/6، 08:49 صبح)hesam3 نوشته است: سلام ،

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



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

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

بعد به این memory usage برخوردم که دیدم مقدارش کمی بالا هست ( مقدار حدود 76 بود ) همچنین تعداد ایونت ها هم در نسخه اول حدود 3800 تا بود ، که میشد این مقدار رو بهینه کرد ،،، با اینکه توی نسخه دوم بازی نبرد مدرن بنده بخش های زیادی به بازی اضافه کردم ، مقداریش ظاهری بود و مقداریشم امنیتی بود و ظاهری نبود با این حال مقدار memory usage توی نسخه دوم به 25.4 رسید 1
که در نسخه دوم دیگه خبری از باگ بیرون اومدن از بازی نبود .

همچنین در نسخه دوم بازی تعداد ایونت ها به 2373 عدد رسید ، به عکس زیر توجه کنید :
ضمیمه ( این دو عکس نشون دهنده تغییرات روی بازی هست ، توجه کنید که هر دو عکس مال نسخه دوم بازی هست ، اما یکیش بهینه تر شده و بنده بیشتر روش کار کردم ، شاید اگر بیشترم کار میکردم بهینه ترم میشد )


[تصویر:  0000.png]

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

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


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


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



موفق و پیروز باشید / حسن ثنایی .
سلام ممنون بابت اطلاعات مفیدتون
ایا واسه بازی سازی راهی وجود داره که بدون پایین اوردن کیفیت تصاویر حجم رو کاهش بدیم؟
  پاسخ


 سپاس شده توسط:
#5
(1397/9/6، 07:36 عصر)arian نوشته است:
(1397/9/6، 08:49 صبح)hesam3 نوشته است: سلام ،

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



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

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

بعد به این memory usage برخوردم که دیدم مقدارش کمی بالا هست ( مقدار حدود 76 بود ) همچنین تعداد ایونت ها هم در نسخه اول حدود 3800 تا بود ، که میشد این مقدار رو بهینه کرد ،،، با اینکه توی نسخه دوم بازی نبرد مدرن بنده بخش های زیادی به بازی اضافه کردم ، مقداریش ظاهری بود و مقداریشم امنیتی بود و ظاهری نبود با این حال مقدار memory usage توی نسخه دوم به 25.4 رسید 1
که در نسخه دوم دیگه خبری از باگ بیرون اومدن از بازی نبود .

همچنین در نسخه دوم بازی تعداد ایونت ها به 2373 عدد رسید ، به عکس زیر توجه کنید :
ضمیمه ( این دو عکس نشون دهنده تغییرات روی بازی هست ، توجه کنید که هر دو عکس مال نسخه دوم بازی هست ، اما یکیش بهینه تر شده و بنده بیشتر روش کار کردم ، شاید اگر بیشترم کار میکردم بهینه ترم میشد )


[تصویر:  0000.png]

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

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


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


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



موفق و پیروز باشید / حسن ثنایی .
سلام ممنون بابت اطلاعات مفیدتون
ایا واسه بازی سازی راهی وجود داره که بدون پایین اوردن کیفیت تصاویر حجم رو کاهش بدیم؟

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

اگرم منظورتون از مقدار مموری هست که اون رو توی پست قبلی دربارش توضیحات کامل داده بودم .
  پاسخ


 سپاس شده توسط: shazde
#6
(1397/9/6، 07:03 عصر)hesam3 نوشته است:
(1397/9/6، 04:08 عصر)S.L.F نوشته است: سلام
من بازی که دارم میسازم memory use 273.6 هست !!! 
توی یک اسپرایتم 106 فریم دارم که مجبورم واسه اینکه کیفیتشون خوب باشه اندازشون رو 300و300 بذارم 
20 تا اسپرایت هستن که حجمشون کم هست.
وچند تا پس زمینه که سایزشون 854,480 هست .
ولی نمیدونم باید چیکار کنم که memory use بیاد پایین.
( بازی زیاد کند نیست)

سلام

فکر میکنم بازی نبرد مدرن بازی فوق سنگینی بود ، با این حال مقدار مموری متوسطی مصرف میکرد .
بازیتون چه مقدار ایونت داره ؟


درضمن من باید به شما بگم که بازی شما همین الانشم در گوشی های نسبتا ضعیف نمیگیره ، این که میگید بازی کند نیست ، احتمالا هنوز توی یک گوشی موبایل یا گوشی موبایل ضعیف تستش نکردید که میگید کند نیست .

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

موضوع دوم اینکه ، اگر مقدار memory use تون اینقدر زیاد باشه و مقدار ایونت هاتون هم بخواد مثلا مثل بنده بالای 3000 تا باشه ، هنگام لود بازی به مشکل بدی برخورد میکنید که توصیه میکنم اینو موضوع رو روی چندین گوشی ضعیف و قوی تست کنید .
از قسمت دیباگ هم FPS بازیتون رو چک کنید و ببینید در صحنه بازیتون در حالت متوسط ( وسط بازی ) این عدد تا چه حدی میرسه.

ُسلام 
66 تا ایونت داره
اون اسپرایت 210 mb میگیره ولی من مجبورم که نگهش دارم نمیتونم حذفش کنم.
بک گراند ها کیفیت زیادی ندارن.
FPS تا 60 میرسه.
|| فروشگاه نپتونـ! ||
|| nneptune.ir ||
|| کلیکـ کـنید ||
  پاسخ


 سپاس شده توسط:
#7
Big Grin 
سلام 
تونستم باکوچیک کردن اون فریم ها و بکگراند ها memory use رو به 53mb برسونم 
تشکر53
|| فروشگاه نپتونـ! ||
|| nneptune.ir ||
|| کلیکـ کـنید ||
  پاسخ


 سپاس شده توسط: shazde
#8
(1397/9/6، 10:42 عصر)S.L.F نوشته است: سلام 
تونستم باکوچیک کردن اون فریم ها memory use رو به 80mb برسونم 
تشکر53

سلام دوباره 

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


موفق باشید /
  پاسخ


 سپاس شده توسط: shazde ، S.L.F
#9
(1397/9/6، 07:39 عصر)hesam3 نوشته است:
(1397/9/6، 07:36 عصر)arian نوشته است:
(1397/9/6، 08:49 صبح)hesam3 نوشته است: سلام ،

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



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

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

بعد به این memory usage برخوردم که دیدم مقدارش کمی بالا هست ( مقدار حدود 76 بود ) همچنین تعداد ایونت ها هم در نسخه اول حدود 3800 تا بود ، که میشد این مقدار رو بهینه کرد ،،، با اینکه توی نسخه دوم بازی نبرد مدرن بنده بخش های زیادی به بازی اضافه کردم ، مقداریش ظاهری بود و مقداریشم امنیتی بود و ظاهری نبود با این حال مقدار memory usage توی نسخه دوم به 25.4 رسید 1
که در نسخه دوم دیگه خبری از باگ بیرون اومدن از بازی نبود .

همچنین در نسخه دوم بازی تعداد ایونت ها به 2373 عدد رسید ، به عکس زیر توجه کنید :
ضمیمه ( این دو عکس نشون دهنده تغییرات روی بازی هست ، توجه کنید که هر دو عکس مال نسخه دوم بازی هست ، اما یکیش بهینه تر شده و بنده بیشتر روش کار کردم ، شاید اگر بیشترم کار میکردم بهینه ترم میشد )


[تصویر:  0000.png]

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

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


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


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



موفق و پیروز باشید / حسن ثنایی .
سلام ممنون بابت اطلاعات مفیدتون
ایا واسه بازی سازی راهی وجود داره که بدون پایین اوردن کیفیت تصاویر حجم رو کاهش بدیم؟

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

اگرم منظورتون از مقدار مموری هست که اون رو توی پست قبلی دربارش توضیحات کامل داده بودم .

منظورم حجم تصاویر. ابجکتا و مدل های بازیه مثلا بعضی بازی های موبایل رو  می بینم که گرافیک خیلی بالایی دارن ولی تونستن حجم پروژه رو (منظورم مقدار بایت هست) یک مقدار متعادلی در بیارن مثل بازی های gameloft . فکر میکنم اینا از یک راهی تونستن بدون این که کیفیت تصاویر رو پایین بیارن حجمشون رو کم کنن
  پاسخ


 سپاس شده توسط:
#10
(1397/9/7، 07:09 عصر)arian نوشته است:
(1397/9/6، 07:39 عصر)hesam3 نوشته است:
(1397/9/6، 07:36 عصر)arian نوشته است: سلام ممنون بابت اطلاعات مفیدتون
ایا واسه بازی سازی راهی وجود داره که بدون پایین اوردن کیفیت تصاویر حجم رو کاهش بدیم؟

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

اگرم منظورتون از مقدار مموری هست که اون رو توی پست قبلی دربارش توضیحات کامل داده بودم .

منظورم حجم تصاویر. ابجکتا و مدل های بازیه مثلا بعضی بازی های موبایل رو  می بینم که گرافیک خیلی بالایی دارن ولی تونستن حجم پروژه رو (منظورم مقدار بایت هست) یک مقدار متعادلی در بیارن مثل بازی های gameloft . فکر میکنم اینا از یک راهی تونستن بدون این که کیفیت تصاویر رو پایین بیارن حجمشون رو کم کنن

موضوع پایین آوردن حجم ، با موضوع این تاپیک زمین تا آسمون تفاوت داره ، بهتره برای اینکه موضوعتون دیده بشه و جوابی بگیرید یک تاپیک جدید باز کنید و سوالتونو بپرسید ، اما در جواب سوالتون نرم افزار هایی هستن که نهایتا 30 تا 40 درصد حجم گرافیک هارو کاهش میدن با این حال باید در تاپیکی جدا از کل انجمن سوال کنید شاید که جواب های بهتری داشتند .
  پاسخ


 سپاس شده توسط: shazde ، arian


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش پروژه محور ساخت بازی مار و پله mohsen_nasri 6 3,824 1403/10/24، 09:38 عصر
آخرین ارسال: Tggi
Star مهم آموزش خروجی اندروید روی سیستم شخصی rezamms 128 86,626 1403/10/23، 04:58 عصر
آخرین ارسال: Tggi
  مهم آموزش تصویری خروجی مستقیم - یکبار برای همیشه! rezamms 33 20,978 1401/2/13، 09:39 عصر
آخرین ارسال: kamran_cn
  خروجی اندرید davinmstr1 2 2,613 1400/8/4، 10:23 عصر
آخرین ارسال: ᔕinaᗪehghani
  AAB (بسته برنامه اندروید) چيست؟ + نحوه خروجي گرفتن در كرودوا ᔕinaᗪehghani 15 8,628 1400/6/21، 01:55 صبح
آخرین ارسال: mehdi1100

پرش به انجمن: