Левел дизайн для игр
Уровень — это пространство, которое управляет поведением игрока без слов. Правильно расставленные стены направляют взгляд. Расположение врагов диктует тактику. Свет указывает на следующую цель. Когда всё это работает — игрок не замечает дизайна, он просто «знает», куда идти.
Почему плохой левел дизайн незаметен в редакторе
Проблема «бога» в редакторе
Дизайнер, создавший уровень, знает каждый угол. Он не застрянет в геометрии, не пропустит скрытый проход, не заблудится в коридорах. Тестирование уровня его создателем — бесполезно. Первый принцип: уровень тестирует только тот, кто видит его впервые.
Конкретный инструмент для Unity: Analytics + Heatmap. Записываем позиции игроков каждые N секунд, визуализируем через Unity Analytics Heatmap SDK или самописный инструмент с Gizmos.DrawSphere. Тепловая карта смертей мгновенно показывает, где игроки застревают, где теряются, где сталкиваются с непредвиденной сложностью.
NavMesh и AI pathfinding
Красивый уровень в редакторе может быть непроходимым для AI. NavMeshSurface не запекается автоматически — нужна явная настройка Agent Radius, Agent Height, Max Slope. Пропасти шириной меньше агента + некорректный NavMesh Link = враги, замирающие перед ступенькой высотой 5 см.
Для динамических уровней (разрушаемость, открывающиеся двери) используем NavMeshSurface.UpdateNavMesh() с Coroutine вместо полной перепечатки — это избегает фриза на несколько кадров. Для больших уровней — Navmesh.CalculateTriangulation() асинхронно через Job System.
Ещё частая проблема: NavMeshAgent застревает на стыке двух NavMeshSurface при переходе между зонами. Это не баг Unity — это отсутствие NavMeshLink между поверхностями. Для многоуровневых локаций обязательно явное создание Link для каждого перехода.
Collision geometry vs. Visual geometry
Одна из самых дорогих в исправлении ошибок: коллизионная геометрия совпадает с визуальной. Mesh Collider на сложном 3D-меше — это тысячи треугольников для физического движка. На уровне с 50 сложными пропсами это убивает производительность.
Правило: коллизии — простые примитивы (Box Collider, Capsule Collider, Convex Mesh Collider с ограничением 255 треугольников). Визуальный меш — отдельный, детальный. В Blender — отдельный объект с суффиксом _collision, экспортируем вместе с основным мешем через FBX-настройки.
Как строим уровни
Процесс: grey box до финального арта
Уровень проходит через три стадии до того, как художник прикоснётся к нему:
Blockout (серый ящик). Только геометрия — ProBuilder в Unity или примитивы. Никаких текстур, только материалы-заглушки разных цветов для разных типов поверхностей (пол, стены, платформы). На этом этапе проверяем: путь игрока, темп, сложность энкаунтеров, читаемость пространства.
Правило: если уровень неинтересен в blockout — финальный арт не исправит это.
Gameplay polish. Расставляем точные позиции врагов, триггеры событий, spawn points, интерактивные объекты. Балансируем сложность. Тестируем с плейтестерами.
Art pass. Только после согласования геймплея — художники работают по финальной геометрии. Это избегает ситуации «переделайте красивый уровень, потому что он неиграбелен».
Инструменты и пайплайн
- ProBuilder — быстрое создание геометрии прямо в Unity. Для blockout и простых level-specific мешей.
- Blender — сложная геометрия, модульные наборы тайлов, экспорт через FBX с настроенными коллайдерами.
-
Cinemachine — управление камерой в зависимости от позиции игрока на уровне.
CinemachineConfinerограничивает камеру рамками уровня без кода. - Timeline — скриптованные события на уровне: открывание дверей по триггеру, ambient анимации, cutscene-вставки.
- Terrain Tools — для открытых локаций с органическим рельефом. Terrain Layer с PBR материалами + Detail Mesh для растительности.
Модульный дизайн
Для эффективного производства строим modular tileset: набор стандартизированных модулей (стены, углы, полы, потолки) с единым grid size. Модули snapятся через ProGrids или встроенный vertex snap в Unity. Это позволяет художнику создать 20-30 модулей и покрыть бесконечное количество комнат.
Размер грида зависит от масштаба персонажа. Правило: ширина прохода = минимум 2 единицы размера персонажа. Для стандартного персонажа 2м высотой — грид 1м, проходы 2-3 клетки.
Procedural generation
Для roguelike и procedural-heavy проектов: BSP (Binary Space Partitioning) для разбивки пространства на комнаты, Cellular Automata для пещерных уровней, Wave Function Collapse для тайловых уровней с правилами связности.
WFC работает через TileRule ScriptableObject: каждый тайл имеет допустимых соседей в каждом направлении. Алгоритм коллапсирует суперпозицию тайлов в конкретный уровень, соблюдая все ограничения. Готовые реализации для Unity: WFC Unity (open source), Tessera (платный, более функциональный).
Процесс работы
Концепт и reference (1-3 дня). Разбираем game feel цели: темп, сложность, атмосфера. Reference levels из схожих игр. Нарративные задачи уровня.
Blockout (2-5 дней на уровень). Геометрия, навигация, базовые энкаунтеры. Первый раунд плейтеста.
Gameplay iteration (3-7 дней). По результатам плейтеста — корректировка. Повторяем до тех пор, пока уровень не работает стабильно на всех плейтестерах.
Art pass (зависит от объёма и стиля).
| Тип уровня | Сроки (без art pass) |
|---|---|
| Линейный коридорный | 3-7 дней |
| Открытый с несколькими путями | 1-2 недели |
| Hub-локация с NPC | 1-2 недели |
| Procedural dungeon система | 2-4 недели |
Стоимость рассчитывается после анализа количества уровней, жанра и требований к AI/навигации.





