Обзор оптимизации сцены под плаформу android

Сегодня хочу продемонстрировать, казалось бы стандартный способ оптимизации сцены, но с учетом определенных внутренних условий.
Итак, что дано:
Сцена. Остров. Множество объектов, таких как деревья и трава разных видов и разных материалов.
Что нужно:
Сделать так, чтобы всё это не ложилось в 0,001 FPS даже на слабых андроид-девайсах.
Мои действия(применимо к движку юнити):
1. Проверить и сделать модели более простыми. Уменьшит кол-во полигонов, точек для более быстрого рендера, по возможности без потери качества.
2. Грамотно поработать с текстурами. Снизить их разрешение, скомпоновать в атласы, применить сжатие для более быстрого обращения к ним в игре.
3. В Unity3d есть вещь Occlusion Culling. Т.е. система отключает все объекты, которые не попадают в камеру. Но в мое случае не подходит, по некоторым причинам, связанным с системой игры и крафтом.
Поэтому решение было следующим. Это проверка этих объектов на расстояние до игрока и отключение рендера объекта при выходе из диапазона. При этом проверка должна быть не слишком частой, чтоб не грузить CPU. Например я брал 0,5-1 сек.
Что получилось, можно увидеть на видео.
  • +1

Комментарии (2)

0
клево! спасибо!
Не понял про Occlusion Culling — как он может мешать «системе игры и крафта»? Рисование — одно, логика — другое. Не? Ведь Frustum Culling при этом не отключал? Кстати, не знаю как с этим обстоят дела на мобильных и юнити, но, если проблема в траве и деревьях — использование инстансов сильно разгружает шину на pc.
Просто сейчас на видюшке четко видно, как объекты появляются из ниоткуда. Может, туман какой прикрутить, или по альфе объекты проявлять хотя бы?
А вообще — хорошо, что ты пишешь. Нравится! Продолжай!
0
Про Occlusion Culling. Дело в том, что он работает с рендерингом объектов т.е. отключает те, что вне обзора камеры, но у меня есть скрипты, которые работают с видимостью объектов, т.е. пересчитывают, например респаун выработонного ресурса. С куллингом эта система ломается+он не очень корректно работает на моей сцене. Вылеты unity часто.
На видео видно, что исчезают те объекты, который становятся дальше определенного расстояния от игрока. Из ниоткуда, так сказать они появляются не перед носом, а на расстоянии.

Да, я пробовал работать с альфой в шейдере и с туманом, к сожалению для мобилок это слишком тяжело. Туман почти сразу ложит игру в 1-2 fps, а скрипт работающий с альфой солидно нагружает.
Как завершу систему крафта и оттестирую ее, попробую еще один заход с альфой.

Спасибо за поддержку. Всегда приятно, когда есть интерес к твоей работе.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.