Как сделать 3D-деревню с помощью ИИ-агента: пять проходов

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

Городок с улицами, переходами, кирпичными домами и коттеджами, построенный агентом в Cuberta

Обычная первая попытка сделать деревню — одна инструкция: «построй средневековую деревню на 30 домов». В ответ приходят тридцать домов на плоской земле, примерно одной высоты, и дорога, которая обрывается на последнем из них. С геометрией всё в порядке. Просто это не место.

Лечится это не длиной инструкции, а количеством задач в каждой — и порядком, в котором настоящее поселение их получало: земля, дорога, участки, дома, обстановка, свет. Пять проходов и проверка. Ошибка в первом проходе стоит минуты; та же ошибка, найденная после четвёртого, стоит деревни.

Дальше предполагается ИИ-агент, управляющий настоящим 3D-редактором: между шагами он считывает сцену обратно, а вы можете остановить его в любой момент — на этом проходы и держатся. Cuberta устроена так: инструменты уровня локации отданы по Model Context Protocol, вы жмёте Copy connect command, вставляете команду в терминал — и агент подключён. Инструкции ниже — то, что я бы и набирал.

Бриф пишется до того, как что-то открыто

Бо́льшая часть качества решается ещё до подключения агента. Проверка на то, место ли вопросу в брифе, простая: меняет ли ответ геометрию. «Уютная» не меняет, «сорок шесть зданий» — меняет. Запишите ответы и сохраните: зафиксированная формулировка потом позволит ткнуть в проигнорированное предложение.

Пять ответов, которые меняют геометрию

  • Сколько зданий. Число, а не прилагательное размера. Двадцать пять читаются как хутор, шестьдесят-восемьдесят — как деревня с центром, за полутора сотнями начинается городок. Отдельно стоящие дома на участках 400–500 м² дают 20–25 домовладений на гектар, поэтому под полсотни зданий нужно около трёх гектаров — 250 × 250 м плюс поля вокруг.
  • Эпоха и регион. Они выбирают палитру материалов и уклон кровли — это геометрия, а не украшение.
  • Рельеф. Равнина, долина, склон, берег — самый несущий ответ из пяти. Склон приносит подпорные стены, ступенчатые участки и дорогу серпантином; пойма не приносит ничего из этого.
  • Зачем она. По ней ходят на уровне глаз, мимо неё едут на 40 км/ч или смотрят сверху камерой RTS. Это решает, куда идёт детализация и куда не идёт.
  • Где она кончается. Поля, лес, вода или дорога, уходящая за кадр, — иначе поселение растворится в недоделанной плоскости земли.

Проход 1 — земля и хребет дороги

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

Пустая сцена. Сделай участок земли 400 × 400 м в виде неглубокой долины: гряда вдоль северного края, поднимающаяся на 18 м над центром, ровная земля посередине, ручей с запада на восток по низине. Дальше одна главная дорога шириной 6 м с тротуарами по 1,8 м с обеих сторон: входит с запада, изгибается вдоль северного берега ручья и уходит за восточный край. От неё два переулка по 4 м без тротуаров, примерно по 80 м, с разворотными кольцами на концах. Каменный мост там, где главная дорога пересекает ручей. Больше пока ничего — ни зданий, ни реквизита, ни деревьев.

Два числа здесь работают всерьёз. Шесть метров — это две полосы по три, реальная ширина дороги, на которой разъезжаются две машины: NACTO рекомендует 3,05 м для городских полос, а 3,0 м — распространённый минимум для внутриквартального проезда. Тротуары 1,8 м — ширина, на которой расходятся два человека. Потом пройдите по дороге от края до края, не сходя с покрытия: если не получается, первый проход не закончен.

Проход 2 — участки и места, где строить нельзя

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

Пока ничего не строй. Нарежь землю вдоль дорог на участки. Вдоль 200 м главной дороги через центр — 15 м по фронту и 30 м в глубину, с обеих сторон, с отступом 4 м от тротуара. Вдоль двух переулков — крупнее, 25 × 40 м. Отметь как зоны запрета застройки ручей и по 8 м с каждой стороны от него, гряду выше отметки 12 м, оба разворотных кольца и прямоугольник 30 × 40 м на южном берегу у моста — это площадь, она остаётся пустой. Покажи мне контуры участков, прежде чем что-то в них ставить.

Предложение про запрет застройки — самая сильная инструкция во всей процедуре. Агенты заполняют пространство. Если не сказать, дома окажутся на берегу ручья, на гряде и посреди того, что вы задумывали лугом. Назвать каждую пустую область по функции тоже полезно: так её не «дозастроят» через три прохода. В Cuberta эти области можно отметить прямо во вьюпорте, а не описывать словами.

Проход 3 — здания

Когда участки размечены, а запретные зоны отмечены, этот проход — арифметика: количества, одна договорённость о высотах, диапазон габаритов, закрытая палитра.

Теперь здания, всего 46. На центральных участках: 30 домов в два этажа, габариты от 7 × 9 м до 9 × 12 м, высота этажа 2,8 м, двери 2,0 м, двускатные крыши с уклоном около 40°, все фасадом к дороге. На переулках: 12 более крупных отдельно стоящих домов в полтора этажа, до 12 × 14 м. Вокруг площади: 4 трёхэтажных здания — трактир, лавка, мастерская с широкими воротами и часовня, башня которой может доходить до 16 м. Материалов ровно пять: белёная штукатурка, серый камень, тёмное дерево, красная черепица, сланец. Любая стена — штукатурка или камень, любая крыша — черепица или сланец. Варьируй ширину, глубину, направление конька и цвет внутри палитры. Не варьируй высоту этажа, высоту двери и отступ.

У разброса должны быть границы

Характерная беда неограниченного агента — не повторы. Он читает «сделай разнообразно» как разрешение и ставит трёхметровую дверь рядом с дверью 1,6 м. Настоящая народная архитектура варьируется в узком коридоре: у всех были одинаковые длины бруса, один и тот же кирпич и один уклон кровли под местные дожди. Перечислить, какие размеры могут гулять, а какие заморожены, — вот что покупает улицу вместо страницы каталога.

Чего этот проход не делает

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

Проход 4 — обстановка и 80/20 обжитого места

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

Проход обстановки. Заборы или низкие каменные стенки по каждой границе участка, выходящей на дорогу, высотой 1,2 м, в материале стен стоящего за ними дома. Фонари только вдоль главной дороги, столбы 5 м, один каждые 30 м, в шахматном порядке. Деревья: шесть вдоль южной стороны площади, плодовые в дальней половине центральных участков, плотный смешанный лес на гряде выше запретной отметки, камыш вдоль ручья. Примерно на трети участков добавь что-то одно: поленницу, бочку для воды, телегу, скамью, бельевую верёвку. На проезжей части ничего, на площади ничего, кроме деревьев и двух скамеек.

Столбы 5–6 м для жилых улиц обычно ставят на расстоянии трёх-пяти высот подвеса, то есть 18–30 м; тридцать метров при пятиметровом столбе — как раз для деревни, которая освещала только главную улицу. Обратите внимание и на ограничитель: примерно на трети участков. Без него поленница появится у каждого дома, а регулярный хлам читается хуже пустоты.

Проход 5 — свет и время суток

Поставь время примерно за час до заката ранней осенью: солнце низко с запад-северо-запада, около 12° над горизонтом, тёплое. Чистое небо с высокими облаками. Включи уличные фонари на низкой яркости, чтобы они читались, но не спорили с солнцем. Проверь, что гряда кладёт тень на восточные участки.

Угол солнца — решение скорее композиционное, чем световое. Низкое солнце скользит по фасадам, отделяет один скат кровли от другого и делает читаемым рельеф из первого прохода; полуденное всё это уплощает. В движке свет всё равно соберут заново, но выставить его нужно сейчас: всё на проверке вы оцените при этом свете.

Что пойдёт не так и что на это сказать

Три беды покрывают почти всё. Агент перестраивает: вы просили 46 зданий, а их 71, и заполнен каждый просвет, — это не непослушание, а поведение по умолчанию: при неопределённости в границах агенты расширяются. Агент повторяется: один и тот же дом зеркально одиннадцать раз подряд по одной стороне улицы. Масштаб плывёт: обычно на стыке проходов, и тогда часовня правильная, а дома тихо усохли.

Что вы видитеЧто сказать
Зданий больше, чем заказаноУдали всё вне участков из второго прохода. Сорок шесть — предел, а не ориентир.
Один и тот же дом одиннадцать разПалитру оставь, габариты по северной стороне перегенерируй. У соседних домов не должны совпадать сразу ширина и направление конька.
После третьего прохода всё подрослоПомерь по эталонному блоку 1,8 м по одной двери в каждом здании и пересобери всё вне 1,9–2,1 м.
Объекты висят или наполовину утопленыПосади всё обратно на рельеф: не выше и не ниже земли под собой более чем на 2 см.
Дороги обрываются на последнем домеПродли оба конца главной дороги до края плоскости земли.

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

Проход проверки, потом экспорт

Несколько минут здесь ловят то, что дорого чинить уже по ту сторону импорта.

  1. Встаньте рядом с блоком 1,8 м. Поставьте его у въезда и посмотрите вдоль главной улицы. Стандартная дверь — 2,03 м, то есть она должна перекрывать блок примерно на ладонь.
  2. Выборочно померьте двери и этажи. Восемь зданий по всей деревне, в каждом одна дверь. Вне 1,9–2,1 м — ошибка, как и высоты этажей вне 2,6–3,0 м.
  3. Пройдите каждую дорогу. Главную от края до края, каждый переулок до перекрёстка, тротуары непрерывны через перекрёстки и по мосту.
  4. Поищите висящее. Облетите сцену низко, солнце за спиной: висящий объект ловится по отсутствующей контактной тени, а не по координатам.
  5. Пересчитайте материалы. Если было сказано «пять», а сцена показывает тридцать четыре, схлопывайте сейчас, а не после импорта.
  6. Дойдите до краёв. Всё, куда игрок может добраться, либо правдоподобно продолжается, либо перекрыто.

Дальше экспорт. GLB или FBX с текстурами закрывают Unity, Unreal, Blender и Godot. Одну договорённость стоит помнить заранее: glTF — в метрах, FBX по умолчанию в сантиметрах, Unity считает единицу метром, а Unreal — сантиметром, поэтому FBX с масштабом 1 иногда приезжает в сто раз не тем. Стройка в настоящих метрах с первого прохода превращает это в галочку.

Перед экспортом назовите всё по функции — дороги, здания, реквизит, растительность, — чтобы тот, кто возьмёт файл, мог хоть что-то выделить. Дальше начинается отдельная работа: схлопывание материалов, инстансинг и LOD и настройки импорта, от которых зависит, как сцена ляжет в движок.

На все пять проходов набирается около десяти предложений текста. Остальное время вы смотрите — а это и была работа. Проходы не свойство какого-то одного инструмента: они избавляют агента от необходимости удерживать целую деревню в одной мысли.