Коротко: огромная доля игроков на скромном железе (ноутбуки, портативки вроде Steam Deck, старые GPU), и окружение, что работает лишь на топовой сборке, оставляет их за бортом. Хорошая новость: большая часть производительности окружения теряется в нескольких предсказуемых местах (овердро, дроколлы, густая листва, раздутые текстуры) и возвращается парой дисциплинированных привычек. Это практический плейбук, чтобы уложиться в низкий бюджет кадра без потрошения твоего арта, плюс метод фиксированной камеры для отлова регрессий до их выхода.
Это самый дорогой тип сцены для работы: слои прозрачных листьев, тысячи инстансов, тяжёлый овердро. Это также там, где живут самые крупные, самые лёгкие победы, как только ты знаешь, куда уходит время кадра.
Задай сначала бюджет, в миллисекундах
Выбери целевое время кадра на твоём самом слабом поддерживаемом железе (16,6 мс для 60 fps, 33,3 мс для 30) и относись к нему как к жёсткому пределу. «Оптимизировать позже» значит «переделывать позже»; бюджетировать заранее куда дешевле.
Оптимизация без числа — это просто вайб. Реши кадр, на который целишься на твоём напольном железе (Steam Deck, среднем ноутбуке, каков бы ни был твой минимальный спек), и переведи в миллисекунды, потому что миллисекунды складываются, а проценты лгут. Затем держи каждую сцену при нём, пока строишь, не в конце. Команды, что выпускают гладко на слабом, не оптимизируют жёстче; они просто никогда не дают сцене пробить бюджет в первую очередь, что стоит долю того, чтобы выцарапывать производительность назад после того, как арт готов и всё от него зависит.
Знай, куда уходит время
Время кадра окружения обычно съедается овердро (прозрачная листва), слишком многими дроколлами (небатченные объекты), раздутыми текстурами (пропускная способность памяти), и дорогим освещением/тенями. Профилируй, чтобы найти ТВОЁ узкое место, прежде чем оптимизировать вслепую.
Гадать об оптимизациях тратит дни. Открой профайлер, найди, CPU-bound ли ты (обычно дроколлы) или GPU-bound (обычно овердро, шейдинг или пропускная способность), и атакуй настоящее узкое место. Тем не менее, окружения проваливаются предсказуемыми способами, и это почти всегда одно из: овердро от слоистой прозрачной листвы; дроколлы от тысяч неинстансированных объектов; память/пропускная способность текстур от раздутых или слишком многих текстур; и стоимость освещения/теней от слишком многих динамических источников или высокоразрешающих карт теней. Остаток этого плейбука проходит их в порядке обычного влияния.
Листва и овердро: обычный злодей
Прозрачные карты листвы перекрываются и перешейдят одни и те же пиксели много раз. Это овердро, и это убийца номер один слабого железа. Уменьши перекрытие карт листьев, используй агрессивные LOD'ы, и отсекай дальнюю листву жёстко.
Густая растительность — там, где умирает большинство бюджетов кадра слабого железа, потому что каждая полупрозрачная карта листа заставляет GPU шейдить пиксели, которые она затем перерисует снова, иногда десять-плюс раз на пиксель в густом пологе. Исправления: используй более плотные карты листьев с меньшей потраченной прозрачной площадью, падай быстро на более дешёвые LOD'ы по мере отступления листвы, и задай жёсткие дистанции отсечения, чтобы дальние трава и кусты просто перестали рисоваться. На портативке разница между «трава до горизонта» и «трава отсечена на разумной дистанции» может быть всей разницей между 25 и 40 fps. Запеки листву в нативные инстансы, чтобы GPU могла её батчить, и дай инстансингу движка делать тяжёлую работу.
Дроколлы и инстансинг
Каждый уникальный объект, отправленный отдельно, — это дроколл, и тысячи их застопоривают CPU. Инстансируй повторяемые меши, чтобы сотни копий стоили один колл; мержи статический хлам, где это имеет смысл.
Если ты CPU-bound, дроколлы обычно почему. Каждая отдельная вещь, что ты просишь движок отрендерить, несёт оверхед, а сцена, размещённая вручную с тысячей отдельных камней и кустов, топит CPU в стоимости отправки. Инстансинг — лекарство: повторяемые меши, нарисованные как инстансы, схлопывают сотни копий в единый колл, что ровно почему инструменты скаттеринга, что запекают в нативные инстансы движка, важны для производительности: скаттер, что выглядит как тысяча растений, стоит как горстка. Где инстансинг не применим, мерж мелкого статического хлама в комбинированные меши тоже режет число коллов. Это одно место, где рабочий процесс вроде Numivo (рисуй плотность, затем запекай в простые инстансированные меши) окупается прямо на слабом железе, потому что вывод — та дешёвая вещь, которую хочет GPU.
Не каждая сцена должна быть максимально густой. Тихие, открытые пространства стоят почти ничего и дают как железу, так и игроку отдых. Тактовать твою плотность — само по себе оптимизация.
LOD'ы, дистанции отсечения и размеры текстур
Дай каждому значимому мешу LOD'ы, чтобы дальние копии были дёшевы, задай дистанции отсечения, чтобы крошечные-на-экране объекты перестали рисоваться, и ограничь разрешение текстур тем, что камера разрешает на дистанции. Эти три возвращают много за малое усилие.
Три негламурные привычки несут большую часть оставшегося бюджета. LOD'ы: дальние меши должны переключаться на низкополигональные версии, потому что полная деталь на 20-пиксельном дереве потрачена. Дистанции отсечения: всё слишком мелкое на экране, чтобы заметить, должно перестать рендериться целиком: мелкие пропсы, галька, тонкая трава, настроенное по типу объекта. Размеры текстур: ограничь разрешение тем, что реально разрешимо на дистанции игрока (см. логику плотности текселей: дальним вещам нужно куда меньше текселей), потому что раздутые текстуры жгут пропускную способность памяти, которую слабые GPU не могут выделить. Ни одно из них не вредит виду при правильной настройке; они просто перестают заставлять тебя платить за деталь, что никто не видит.
Находи регрессии фиксированными камерами
Определи пару «бюджетных камер» (твою худшую панораму, самое густое боевое пространство, самый загруженный интерьер) и проверяй их время кадра каждый билд. Случайные пролёты прячут регрессии; одни и те же брутальные виды каждый раз выставляют их напоказ.
Производительность тихо гниёт по мере добавления контента, и ты не поймаешь это, блуждая по уровню небрежно. Вместо этого закрепи свою горстку худших видов (обзор густого леса, забитый рынок, эффектно-тяжёлый бой) и меряй ровно их, каждый билд, против бюджета. Когда число краснеет, ты знаешь, что недавнее изменение вызвало это, и примерно где. Это разница между командой, что обнаруживает кризис производительности в конце, и той, что чинит 2-мс регрессию в день её появления. На слабых целях сделай так, чтобы одна из этих камер работала на настоящем Steam Deck или машине минимального спека, а не только оценке редактора.
Полевые числа, которые стоит украсть
- Бюджеты кадра: 16,6 мс (60 fps) / 33,3 мс (30 fps), задай на твоём напольном железе
- Обычный убийца слабого: овердро листвы: плотнее карты, быстрые LOD'ы, жёсткое отсечение
- Повторяемые меши → инстансы: сотни копий за один дроколл
- Ограничь размер текстур разрешимой камерой деталью: дальнему нужно куда меньше текселей
- Лови регрессии фиксированными бюджетными камерами, меряемыми каждый билд
Мини-FAQ
Должен ли я выбирать между красивым и слабым железом? Меньше, чем ты думаешь. Большая часть стоимости слабого — трата: овердро, небатченные коллы, раздутые текстуры, не видимое качество. Отрежь трату, и арт выживет; игроки на слабом железе редко скучают по детали, за которую ты платил, но которую они не могли видеть.
Динамическое освещение под запретом на Steam Deck? Не под запретом, но бюджетировано. Ограничь число динамических источников и отбрасывателей теней, обопрись на запечённое освещение, где сцена статична, и резервируй динамическую стоимость для того, что важно. Это строка бюджета, не бан.
Какое одно изменение помогает больше всего на портативке? Обычно приручение листвы: плотнее карты листьев, агрессивные LOD'ы и жёсткие дистанции отсечения на траве и кустах. Овердро — самое частое узкое место портативки, и живёт оно чаще всего именно в растительности.
Как рано мне тестировать на целевом железе? С первого вертикального среза. Оценка редактора на мощной дев-машине прячет ровно те проблемы, что будут у портативки. Достань билд на настоящем устройстве минимального спека рано и держи его в цикле.
Работать на картошке не о том, чтобы сделать твою игру уродливой, а о том, чтобы не платить за деталь, что игроки не могут видеть. Бюджетируй в миллисекундах, убей овердро, инстансируй повторы, отсеки невидимое, и наблюдай за худшими камерами каждый билд, и твоё окружение будет выглядеть отлично и работать для огромной аудитории, что не на топовой сборке.

