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