یه چیزی که این مدت توی مادسازی Rusted Warfare زیاد میبینیم، استفاده از Textureهای خیلی بزرگ برای یونیتهاست. مثلاً یه تانک رو با ابعاد ۲۰۰۰×۲۰۰۰ پیکسل طراحی میکنن و بعد داخل بازی با Scale کوچیکش میکنن تا به اندازهای که میخوان برسه.
خب، شاید در نگاه اول به نظر بیاد این کار باعث میشه یونیت کیفیت بیشتری داشته باشه؛ ولی یه سؤال ساده این وسط هست: وقتی بازیکن قراره در نهایت اون تانک رو با اندازهای خیلی کوچیکتر ببینه، چرا باید Texture اون ۲۰۰۰×۲۰۰۰ باشه؟
فرض کنین یونیت توی بازی نهایتاً حدود ۱۰۰×۱۰۰ پیکسل دیده میشه. خیلی از جزئیاتی که داخل یه Texture ۲۰۰۰×۲۰۰۰ گذاشتی، وقتی یونیت به اون اندازه کوچیک میشه دیگه اصلاً دیده نمیشن. در عوض، هنوز یه Texture خیلی بزرگ داری که باید داخل فایلهای ماد وجود داشته باشه و توسط بازی مدیریت بشه.
یه نکته مهم هم این وسط هست: Scale کردن، Texture اصلی رو کوچیک نمیکنه. یعنی اگه یه تصویر ۲۰۰۰×۲۰۰۰ داشته باشی و Scale رو بذاری روی ۰.۵، بازی یه دفعه با یه Texture ۱۰۰۰×۱۰۰۰ طرف نیست. تو فقط داری اندازهی نمایش اون تصویر رو تغییر میدی. پس وقتی تعداد زیادی Texture بزرگ توی ماد جمع بشه، میتونه حجم فایلها و مصرف حافظه رو بیدلیل بالا ببره و روی زمان لود و عملکرد هم فشار بذاره.
البته قرار نیست بگیم «هر Texture بزرگی بده» یا «همه باید با رزولوشن پایین کار کنن». اگه یه Asset قراره زیاد زوم بشه یا واقعاً به جزئیات بیشتری نیاز داره، خب رزولوشن بالاتر کاملاً منطقیه. بحث سر اینه که برای یه یونیت کوچیک، بدون دلیل یه Texture چندین برابر بزرگتر از نیازش نسازیم.
قبل از اینکه برای یه یونیت رزولوشن رو تا چند هزار پیکسل ببری بالا، یه لحظه به اندازهای که قراره توی بازی دیده بشه نگاه کن. اگه بازیکن هیچوقت قرار نیست اون جزئیات رو ببینه، داری برای چیزی وقت و منابع میذاری که عملاً استفادهای ازش نمیشه.
بهینهسازی هم قرار نیست یعنی «کیفیت رو نابود کنیم تا بازی سبک بشه». یعنی همون کیفیتی رو بسازیم که واقعاً بهش نیاز داریم، نه ده برابر بیشتر.
چون آخرش قرار نیست کسی به مشخصات Texture نگاه کنه و بگه:
«واو! این تانک ۲۰۰۰×۲۰۰۰ بوده!»
بازیکن فقط بازی رو میبینه...
#بهینه_سازی #مادسازی
#PixelArt
◈ @FARAZ_GAMES