Был ли опыт работы с terrain?
Что проверяют
Вопрос про Unity: работали ли вы с системой Terrain руками и насколько глубоко. Интервьюер хочет понять, возьмётесь ли вы за задачи с ландшафтом сразу или вам нужно время на погружение. Следом обычно спрашивают, генерировали ли вы рельеф из кода и как боролись с просадкой FPS.
Как отвечать
Начните с честного «да» или «нет» и уровня: рисовали кистями в редакторе, писали генерацию или оптимизировали готовый мир. Дальше опирайтесь на свои проекты и замеры. Если опыт был, покажите, что знаете устройство:
- данные: ландшафт хранится в
TerrainData, высоты задаёт heightmap с разрешением вида 2^n + 1 (513, 1025, 2049).SetHeightsпринимаетfloat[,]со значениями от 0 до 1, индексированный как[y, x]; - текстуры и растительность: слои
TerrainLayerсмешиваются через splatmap (SetAlphamaps), трава идёт через detail layers, деревья черезTreeInstance; - производительность:
Pixel Errorуправляет детализацией по расстоянию,Draw Instancedснижает число draw calls, а плотность травы и дальность её отрисовки часто съедают больше, чем сам рельеф. Мерить Profiler и Frame Debugger; - большие миры: несколько тайлов, связанных через
SetNeighborsили Terrain Groups, чтобы не было швов; - генерация:
Mathf.PerlinNoiseс несколькими октавами, масштабом и смещением. Для правок в рантайме подходятSetHeightsDelayLODи затемSyncHeightmap.
Если опыта не было, так и скажите и покажите смежное: меши, LOD, коллайдеры, знание того, что TerrainCollider строится по той же heightmap, а ставить объекты на рельеф помогает Terrain.SampleHeight. Предложите, как подошли бы к задаче: это ценится больше, чем выдуманный проект.
Где спотыкаются
Говорят «да, работал» и теряются на первом уточнении про разрешение heightmap или splatmap. Короткое «рисовал в редакторе, генерацию не писал» звучит лучше.
Называют проценты вроде «сократили нагрузку на GPU на 30%», не сказав, чем мерили и на каком устройстве. Цифра без метода вызывает только новые вопросы.
Забывают про особенности шума: Mathf.PerlinNoise на целых координатах возвращает одно и то же значение, поэтому без масштаба получается плоская карта.