2.5Kпросмотров
19 ноября 2025 г.
📷 ФотоScore: 2.8K
[Как мы оптимизировали размер террейна в 10 раз] Сегодня хотим поделиться с вами как мы решили проблему с оптимизацией большого террейна для нашей онлайн игры, над которой мы уже долгое время работаем. Террейн в Unity тяжел для веба и мобилок, но удобен в разработке, поэтому логичный путь улучшения производительности это перевод террейна в 3д модель, но на этом этапе и появляются сложности: Первая проблема -- текстуры. Варианта два: запечь одну большую текстуру или написать шейдер под сплатмапы. В целом это не критично и решается достаточно быстро. Вторая проблема -- перевод самого террейна в 3д модель. Готовых решений много (например), они рабочие и часто умеют резать карту на тайлы, что удобно для подгрузки контента. Но у всех есть один минус в виде неоптимизированной топологии. По сути это сетка из квадратиков с фиксированным шагом. В итоге размер моделей получается огромным. Если на карте есть, например, дорога вдоль горы, большое значение шага ломает топологию и по итогу гора начинает проходить сквозь дорогу. Приходится снижать шаг и раздувать размер модели. На недавней конфе мы показывали материалы по нашему онлайн проекту с открытым миром. Там мы использовали готовый ассет для конвертации террейна. Карта 6х6 км превратилась в набор тайлов общим весом 438 мб. Это было самое оптимальное качество, но даже так горная дорога все равно частично перекрывалась склоном. В итоге мы сделали собственный инструмент. Он гибко настраивает конвертацию террейна и режет его на тайлы с продуманной топологией. Внутри используется несколько алгоритмов оптимизации, а главное есть возможность отмечать объекты, вокруг которых сетка должна быть детальнее. Так мы сохраняем точность около дорог, зданий, платформ и любых мест, где важно исключить пересечения с ландшафтом. Остальная территория получает более легкую сетку. Этот подход позволил собрать ту же карту без потери качества в всего 40 мб. Для наглядности прикрепили скриншоты и видео до и после оптимизации. Для нашего онлайн проекта это не первый внутренний инструмент, но явно один из самых полезных. Мы уже используем его и в других наших разработках. А как вы решаете проблему с оптимизацией террейна в ваших играх? 🤔