Немного про оптимизацию мобильной игры
Т.к. игра собирается под мобильные устройства, соответственно, она должна быть максимально оптимизирована. Проект еще на очень ранней стадии, но чтобы в дальнейшем возникало как можно меньше переделок, должен быть выстроен хороший каркас и принципы для оптимизации.
🐟Рыбки и элементы аквариума у меня - 2D спрайты, а не 3D-модели. Поэтому делаю акцент на их материалы и текстуры в этом посту.
Расскажу, какие способы для начальной оптимизации я применяю👇🏻
1. О текстурах!
Сами текстуры собраны в один атлас для каждой из категорий. Так движок держит в памяти одну текстуру и уменьшает количество draw calls. Через тайл-материал настраиваю нужный фрагмент.
Сетка у такого атласа 8x8. Для важных объектов (рыбы, окружение) делаю разрешение 2048x2048. Для маленьких пропсов достаточно разрешение 1024x1024.
Разрешения текстур равняю степени двойки, это важно для мобильных устройств. Квадратные текстуры работают еще лучше, в частности на старых телефонах. Если не учесть, мип-маппинг может работать некорректно, и движок будет «добивать» пустые места, увеличится расход памяти, могут появляться шумы и мерцания.
После меняю формат текстуры на ASTC, так размер текстуры в МБ уменьшится в 2-3 раза.
2. О настройке материалов!
Материалы настроены как:
⁃ Unlit (тк графика стилизованная). Значит, движок не будет делать сложные вычисления освещения.
(Позже добавлю настройку «фейкового» света в материале, и распишу про это в отдельном посте📌).
- Masked (для объектов с отсечкой). Не Translucent, иначе количество overdraw (лишняя отрисовка слоев) перегреет телефон.
Если все же нужен полупрозрачный материал, то вручную создаю низкополигональный меш по контуру альфа-маски, что даст хороший прирост FPS на мобилках.
Для анимации на спрайтах можно использовать смещение UV-координат. НО 👀 тут стараюсь быть аккуратнее.Т.к. даже если на объектах наложен один и тот же материал/инстанс, при динамичном изменении значений параметров внутри вычислений, движок может воспринять их разными и добавит лишние draw calls. Поэтому ищу баланс между красотой и количеством вычислений, которые увеличивают вероятность «уникальности» материала.