Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

AI-GameDev: Учим нейросеть основам левел-дизайна в Unity

AI-GameDev: Учим нейросеть основам левел-дизайна в Unity

В сети постоянно появляются ролики, где с помощью пары текстовых запросов к очередному флагманскому ИИ создаются трехмерные сцены или прототипы игр. Со стороны это выглядит эффектно: пара секунд — и перед нами браузерный аналог шутера или экшена. Однако при ближайшем рассмотрении большинство таких экспериментов ограничиваются простыми демо-сценами, далеко стоящими от полноценных проектов с проработанным миром и физикой.

Как и многие, кто с детства увлекается видеоиграми, я всегда мечтал создать собственный проект. Причем не просто очередной типовой инди-платформер, а что-то с близким нам колоритом и атмосферным сеттингом. У меня есть базовое понимание C#, опыт работы в Unity, навыки 3D-моделирования в Blender и работы с текстурами в Photoshop. Тем не менее, из-за высокой рабочей нагрузки и отсутствия свободного времени браться за многолетний долгострой вручную у меня нет никакого желания.

Схема взаимодействия Unity CLI, Cursor и нейросетей
Схема пайплайна взаимодействия ИИ-инструментов с игровым движком.
3D-моделирование и риггинг персонажей в Blender
Автоматизированная подготовка мешей и скелетной анимации для Unity.
Прототип 3D-игры от третьего лица в Unity 6
Готовая тестовая локация с NPC, физикой и интерактивными объектами.

Именно поэтому я решил проверить на практике, насколько реально делегировать весь производственный цикл нейросетям. Идея заключалась в том, чтобы не написать вручную ни одной строчки кода и не моделировать объекты с нуля, а полностью доверить генерацию и сборку ИИ. В этом материале я поделюсь результатами первых технических тестов: от настройки окружения до обучения нейросетей основам пространственной логики и левел-дизайна.

Реклама

В чём заключается идея проекта?

Современные нейросети уже неплохо справляются с простыми задачами: создание 2D-платформеров, визуальных новелл или пиксельных рогаликов давно не вызывает проблем. Но меня интересовал куда более амбициозный вариант — полноценный 3D-экшен от третьего лица с графикой уровня AA, проработанными механиками взаимодействия, логикой врагов и атмосферным окружением.

Проблема 3D пространственного мышления ИИ в Unity
Без правил пространственной логики нейросеть хаотично пересекает объекты.

Выбор в пользу полноценного 3D обусловлен несколькими критическими техническими факторами:

  • Трехмерное пространство: В 2D-играх физика и перемещение ограничены двумя осями. Расстояния между объектами рассчитываются элементарно, а проблемы с масштабированием по высоте отсутствуют. В 3D-среде именно позиционирование становится главным камнем преткновения для нейросетей.
  • Сложность мешей и коллизий: Низкополигональные или плоские модели легко генерируются сервисами вроде MeshyAI. Но при работе с детализированными персонажами и объектами окружения возникают артефакты: пересечение геометрии, некорректная подгонка одежды или проваливание сквозь текстуры.
  • Автоматизация рутины: Если решить фундаментальные пространственные ошибки ИИ на старте, можно полностью сфокусировать агент на сборке геймплейных механик и настройке игрового баланса.

Инструментарий и технологический стек

Для реализации этой задумки я сформировал следующий набор инструментов:

  • Игровой движок: Unity свежей версии с использованием официального MCP (Model Context Protocol) и интеграцией через Unity CLI.
  • 3D-генерация: Сервис MeshyAI для создания базовых трехмерных моделей по текстовым описаниям и референсам.
  • Обработка моделей и риггинг: Blender с аддоном Rigify для правки геометрии и настройки скелета.
  • Анимации: Комбинация встроенных возможностей MeshyAI и каталога Mixamo.
  • ИИ-архитектор и кодер: Среда Cursor, выступающая в роли виртуального разработчика, работающего с проектом в режиме 24/7. В дальнейшем я планирую также протестировать Codex и специализированные автономные harness-системы.

Для ускорения тестирования узких мест я временно задействовал сторонние бесплатные ассеты зданий, готовые контроллеры персонажей и вспомогательные утилиты вроде RoomGen.

Проблемы совместимости и подготовка ассетов

В процессе первых тестов проявился целый пласт технических сложностей:

Реклама

1. Конфликты версий Unity: Старые контроллеры и системные модули при переносе в Unity 6 ломают проект. Например, использование унаследованной системы NavMesh вызвало критические ошибки, так как в современной версии движка применяется новый пакет AI Navigation. Переписывать устаревший код оказалось нецелесообразно.

2. Визуальный рассинхрон: Сборка локации из разнородных готовых ассетов приводит к каше из стилей и разному качеству текстур. Попытка применить нейросетевой апскейл и стилизацию через Nano Banana улучшила чёткость картинки, но разрушила карты PBR (Physical Based Rendering). Модель сгенерировала новые трещины на текстуре, но не обновила карты высот и шероховатости, из-за чего свет начал отражаться некорректно.

3. Бутафорская геометрия: Многие готовые ассеты зданий внутри оказались пустыми оболочками со стенками толщиной в один полигон. Для экстерьера это допустимо, но сделать такие зоны интерактивными или доступными для входа игрока невозможно без полной переработки.

Главное препятствие: пространственное мышление ИИ

Первый эксперимент я провел в режиме минимального вмешательства. Написал развернутое ТЗ через Perplexity с описанием прототипа survival-horror в обстановке спального района и передал его в Cursor.

За один промпт Cursor создал базовый рабочий проект: разместил игрока, простых врагов, сформировал карту с домами и расставил интерактивные триггеры. Однако сразу же выявилась фундаментальная проблема: нейросеть абсолютно не понимает 3D-пространство. Она видит координаты в коде, но не способна визуализировать и соотнести их с реальной топографией. В результате здания хаотично накладывались друг на друга, блокируя проходы.

Опыт с геоданными и реальной топографией

Чтобы задать логику застройки, я решил передать нейросети точную структуру реального пространства. Через API OpenStreetMap я экспортировал детальный GeoJSON-файл с координатами зданий, дорог, высотностью и типом объектов, предварительно адаптирав его через Gemini в понятный для Cursor формат:

{
  "environment": {
    "water_bodies": [
      {
        "id": "river_aurajoki",
        "name": "Аурайоки",
        "type": "river",
        "width_avg_m": 15.0,
        "coordinates_local_xy": [
          [-427, 600], [-390, 550], [-237, 160], [-8, -250], [210, -580], [550, -620]
        ]
      }
    ]
  },
  "road_network": [
    {
      "name": "Советская улица",
      "class": "residential_main",
      "surface": "asphalt",
      "width_m": 7.0,
      "points_local_xy": [
        [-220, 153], [-200, 206], [48, 206], [67, 209]
      ]
    }
  ],
  "buildings": [
    {
      "id": "bld_residential_busalova_block",
      "name": "Жилой дом (ул. Бусалова)",
      "category": "residential_apartment",
      "floors": 3,
      "height_m": 10.5,
      "roof_type": "gabled",
      "material": "brick",
      "footprint_local_xy": [
        [635, 132], [643, 125], [653, 136], [646, 143]
      ]
    }
  ]
}

Загрузка реальных картографических данных решила проблему хаотичного спавна, но всплыл нюанс игровой динамики: реальные масштабы шаговой доступности делают геймплей затянутым и скучным. Для динамичной игры топологию необходимо существенно упрощать и масштабировать.

Реклама
Настройка Cursor и базы ассетов для Unity
Передача структурированных правил и таблицы ассетов в Cursor.

Масштабирование и классификация объектов

Во второй итерации я уменьшил тестовую сцену до небольшого участка: 10–15 построек, брошенные автомобили и один проработанный интерьер. Но без принудительного контроля Cursor снова начал путаться в габаритах: машины оказывались размером с дом или врастали в стены.

Для решения этой проблемы я применил два ключевых инструмента:

1. Скрипт позиционирования: Написание C#-модуля, который при спавне любого объекта автоматически рассчитывает его баундинг-бокс и минимальный отступ от соседних мешей.

Интерфейс покупки ресурсов и внутриигровая торговая зона
Невзрачная, но рабочая зона магазина, отвечающая за быструю покупку ресурсов.

2. База данных и таблица классификации ассетов: Строгий регламент назначений и допустимых зон для каждого элемента.

Статус / Тег Назначение Правила размещения Область применения
kiosk Уличный киоск Только на улице, вдоль тротуаров Экстерьер (Plaza)
military-box-ussr Ящик с припасами Строго внутри помещений Интерьер (Z2 INT)
nine-story-ussr Панельный дом Задний план, фасадная застройка Фон / Скайлайн
old-tv Старый CRT-телевизор Только внутри зданий на тумбах/столах Интерьер

Благодаря такой структуре Cursor перед установкой объекта обращается к базе знаний, сверяет габариты и проверяет, предназначен ли предмет для улицы или для интерьера. В дополнение я подключил суб-агента, который ведет подсчет размещенных объектов, не допуская замусоривания сцены.

Первые успешные результаты и ключевые выводы

После настройки правил и базы ассетов ИИ быстро связал контроллер движения Unity с набором анимаций. В результате первая же сборка выдала полностью функциональных NPC.

По заданному ТЗ Cursor автоматически выстроил следующую логику:

  • Интерактивные зоны диалогов с персонажами.
  • Динамический спавн врагов в строго отведенных триггерных зонах.
  • Базовую систему выживания: шкалы усталости, голода и жажды, расходуемые в зависимости от активности персонажа.
  • Торговую зону и интерфейс покупки ресурсов за найденные предметы.

На основе этого эксперимента я сформулировал три главных правила AI-геймдева:

1. Строгая документация и классификация: ИИ не умеет додумывать контекст. Ему необходим четкий реестр объектов с их габаритами, назначением и зонами применения.

2. Чистый пайплайн вместо исправления чужого кода: Настроить генерацию новых объектов с нуля значительно проще, чем пытаться заставить нейросеть адаптировать устаревшие сторонние ассеты.

3. Абсолютная конкретизация: Любая задумка должна выражаться в цифрах, правилах и регламентах, а не в абстрактных описаниях.

Новый этап в индустрии: почему свой продукт становится реальным

Сейчас многие разработчики ощущают смену эпох. Традиционный подбор кадров и процессы разработки трансформируются, а привычные подходы уступают место автоматизированным пайплайнам. Появляется неопределенность в том, какие навыки останутся востребованными в ближайшие годы.

Однако эта трансформация открывает невероятные возможности для одиночек. Если раньше создание трехмерной игры требовало целой команды 3D-художников, аниматоров и C#-программистов, то сегодня при грамотной настройке связки Unity, Cursor и генеративных нейросетей запуск собственного продукта становится вполне выполнимой задачей.

Источник: habr.com

01.