Страница 1 из 1

Вопрос по оптимизации игры

СообщениеДобавлено: 22 дек 2019, 14:48
nurbolg
Всем привет! Сделали 2D игру на Андроид платформу. В проекте есть чанки (префабы) которые генерируется, и в этих чанках стоит 3 тайлмапа в 2-х из них есть текстуры с материалом с картами нормалей, и освещение Point light, анимированный персонаж. 3D объектов нет. Игра идет плавно на устройствах (Nokia 8.1 Android 10, ram 6g, snap 710) и (Huawei P Smart, ram 3gb, Kirin 710) а на устройствах как ( LG K8 и Samsung J3 2017 и типа таких устройствах) игра жутко тормозит.
Вот вопрос получиться оптимизировать эту игру на немного слабых устройствах, с этим освещением и с тайлмапом с картами нормалей?!

Re: Вопрос по оптимизации игры

СообщениеДобавлено: 11 янв 2020, 17:26
kezin636
Ты пробовал поставить низкие настройки? Зачем тебе свет в 2д игре со спрайтами, если у тебя нет 3д объектов? Понижение фпс может зависеть от разрешения текстур, использования только одного потока процессора(более вероятно, исправить вряд ли получится, т.к. движок не поддерживает многопоток), от количества этих самых объектов, от частоты обращения к каким либо ресурсоемким операциям и т.д. Может у тебя много коллайдеров и вообще физики? Попробуй сократить их количество.

Re: Вопрос по оптимизации игры

СообщениеДобавлено: 11 янв 2020, 18:04
Jarico
kezin636 писал(а):движок не поддерживает многопоток

поддерживает (ECS, Job System + Burst)

nurbolg писал(а):Вот вопрос получиться оптимизировать эту игру на немного слабых устройствах


Samsung J3 2017

4 ядра Exynos 7570 с тактовой частотой до 1.4 ГГц

Huawei Kirin 710

4 ядра ARM Cortex-A73 с тактовой частотой до 2,2 ГГц.
4 ядра энергосберегающих ARM Cortex-A53 с максимальной частотой 1,7 ГГц

Ответ: Вряд ли...
Попробуй использовать 1 текстурный атлас на всех спрайтах...
Попробуй выключать спрайты которые за пределами экрана...
Оптимизируй код (чтобы GetComponent был 1 раз где-то за всё время, меньше циклов for и foreach)
Делай пуллинг объектов (вместо Destroy просто выключай объект и сбрасывай до исходного состояния чтобы потом снова использовать как при Instantiate)

Re: Вопрос по оптимизации игры

СообщениеДобавлено: 15 янв 2020, 21:25
nurbolg
kezin636 писал(а):Ты пробовал поставить низкие настройки? Зачем тебе свет в 2д игре со спрайтами, если у тебя нет 3д объектов? Понижение фпс может зависеть от разрешения текстур, использования только одного потока процессора(более вероятно, исправить вряд ли получится, т.к. движок не поддерживает многопоток), от количества этих самых объектов, от частоты обращения к каким либо ресурсоемким операциям и т.д. Может у тебя много коллайдеров и вообще физики? Попробуй сократить их количество.


Настройки снизил, снизил разрешение всех текстур до оптимального. Объеденил все спрайты в атлас.
Освещение нужен потому что сам проект типа про темнре пространство, на текстурах материал с картой нормалей, дает типа 3д эффект. Колайдеры немного, физика только у персонажа.

Само игровое пространство создан из тайловых карт разделенное на несколько префабов соединяющиеся по ходу прохождения по генерации игрового пространство, в этой тайловой карте бэгэкграунд был из текстуры кирпича размером 128х128 с материалом с картой нормалей, количество этих текстур в каждом префабе было не слишком много.

Я убрал эти бэкграунды из всех префабов и игра стало более плавнее на слабых устройствах, есть чуть подвисание в нееоторых моментах.
Получается причиной был бэкграунды.

Re: Вопрос по оптимизации игры

СообщениеДобавлено: 15 янв 2020, 21:27
nurbolg
Jarico писал(а):
kezin636 писал(а):движок не поддерживает многопоток

поддерживает (ECS, Job System + Burst)

nurbolg писал(а):Вот вопрос получиться оптимизировать эту игру на немного слабых устройствах


Samsung J3 2017

4 ядра Exynos 7570 с тактовой частотой до 1.4 ГГц

Huawei Kirin 710

4 ядра ARM Cortex-A73 с тактовой частотой до 2,2 ГГц.
4 ядра энергосберегающих ARM Cortex-A53 с максимальной частотой 1,7 ГГц

Ответ: Вряд ли...
Попробуй использовать 1 текстурный атлас на всех спрайтах...
Попробуй выключать спрайты которые за пределами экрана...
Оптимизируй код (чтобы GetComponent был 1 раз где-то за всё время, меньше циклов for и foreach)
Делай пуллинг объектов (вместо Destroy просто выключай объект и сбрасывай до исходного состояния чтобы потом снова использовать как при Instantiate)


Все это сделал спасибо! :-bd

Re: Вопрос по оптимизации игры

СообщениеДобавлено: 19 янв 2020, 14:47
Equinty
Можно еще в настройках уровень качества графики добавить. Типа тени включены/выключенны, разрешение теней. Антиализинг. Сжатие текстур. Может еще что-то не знаю это зависит от проекта. Тогда если устройство будет не тянуть, то у пользователя будет выбор снизить настройки но играть с более худшей картинкой.

Re: Вопрос по оптимизации игры

СообщениеДобавлено: 20 янв 2020, 08:54
nurbolg
Equinty писал(а):Можно еще в настройках уровень качества графики добавить. Типа тени включены/выключенны, разрешение теней. Антиализинг. Сжатие текстур. Может еще что-то не знаю это зависит от проекта. Тогда если устройство будет не тянуть, то у пользователя будет выбор снизить настройки но играть с более худшей картинкой.


Да там особо, сильной графики то нету) , я понял одно, что текстуры с картой нормалей+ тайлмап+point light, грузит сильно слабые устройства.