Лівел дизайн для ігор
Рівень — це простір, який керує поведінкою гравця без слів. Правильно розставлені стіни спрямовують взгляд. Розташування ворогів диктує тактику. Світло вказує на наступну ціль. Коли все це працює — гравець не помічає дизайну, він просто "знає", куди йти.
Чому поганий лівел дизайн непомітний у редакторі
Проблема "бога" у редакторі
Дизайнер, який створив рівень, знає кожен кут. Він не застрянет у геометрії, не пропустить скритий проїзд, не заблудиться у коридорах. Тестування рівня його творцем — марно. Перший принцип: рівень тестує тільки той, хто бачить його вперше.
Конкретний інструмент для 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.
Ще частa проблема: 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 рівні з схожих ігор. Нарративні задачі рівня.
Blockout (2-5 днів на рівень). Геометрія, навігація, базові енкаунтери. Перший раунд плейтеста.
Gameplay iteration (3-7 днів). За результатами плейтеста — корректування. Повторюємо доти, поки рівень не працює стабільно на всіх плейтестерах.
Art pass (залежить від обсягу та стилю).
| Тип рівня | Терміни (без art pass) |
|---|---|
| Лінійний коридорний | 3-7 днів |
| Відкритий з кількома шляхами | 1-2 тижні |
| Hub-локація з NPC | 1-2 тижні |
| Procedural dungeon система | 2-4 тижні |
Вартість розраховується після аналізу кількості рівнів, жанру та вимог до AI/навігації.





