Я делаю Dungeon Cult — игру про строительство и управление подземельем. Механически она растёт из Dungeon Keeper, а визуально уходит в Лавкрафта: культисты, глубоководные, щупальца, живая архитектура и всё такое. Начинался проект как игра на веб‑странице. Подземелье уже строилось, рабочие копали стены, появлялись комнаты и существа. Почти вся графика была изометрической: персонаж представлял собой пачку заранее нарисованных кадров.
В какой‑то момент я решил перенести игру в Unreal Engine 5 и сделать существ полноценными 3D‑моделями. Большую часть технической работы выполняли ИИ‑агенты: Claude Opus от Anthropic и Sol/Astra от OpenAI. Они писали скрипты для Blender, запускали локальные модели, готовили сетки, строили скелеты, делали анимации, импортировали ассеты в Unreal, дописывали игровую логику и сами запускали проверки. Я в основном решал, что выглядит хорошо, что отправляется в мусор и куда проект должен двигаться дальше. Расскажу, как попытка сделать одного рабочего гуля превратилась в целый конвейер производства игровых персонажей.
Почему спрайты перестали работать
Будучи наивно убеждённым, что ИИшка не способна сделать нормальное 3D, я выбрал изометрический подход из Dungeon Keeper 1. Хотелось получить качественную картинку. Для веб‑версии я генерировал существ с нескольких сторон и собирал их в листы. Один только рабочий требовал восемь направлений и семь кадров ходьбы — 56 изображений. Простое отражение не подходило: кирка начинала прыгать из правой руки в левую.

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

После переезда в Unreal проблема стала особенно заметна. Подземелье уже было объёмным, факелы давали настоящий свет, а существа оставались плоскими картонками с запечёнными тенями. Можно было продолжать наращивать спрайтовый конвейер, но я решил попробовать нормальный 3D.
Гуль: первая попытка собрать весь путь
Первых 3D‑гулей мы делали через локальный TRELLIS.2. На вход подавалась картинка персонажа, на выходе получалась текстурированная 3D‑модель. TRELLIS.2 я установил на свой ПК через WSL, потому что локальный стек работает под Linux. Парадокс: разработчик модели — Microsoft. Linux от Microsoft — звучит сомнительно, но окей.
Что касается железа, всем использованным локальным моделям хватило моей RTX 5060 Ti с 16 ГБ видеопамяти — правда, местами после low‑VRAM‑оптимизаций. Звучит как готовое решение, но между «получился GLB» и «существо работает в Unreal» лежит небольшая пропасть.
Исходную сетку требовалось очистить, закрыть дыры, уменьшить количество полигонов, сохранить текстуру, развернуть в нужную сторону и подготовить для Blender. Затем нужен скелет, веса вершин, анимации, импорт в Unreal и игровой класс. Агент начал писать под всё это отдельные инструменты. Появились скрипты для обработки сетки, сборки скелета, создания анимаций и проверки геометрии. Другие скрипты запускали Unreal, импортировали ассеты, создавали тестовую карту и записывали результат.
Первые две версии гуля были технически рабочими, но выглядели плохо. В одном месте разваливалась анатомия, в другом одежда слипалась с телом, а лицо состояло из лоскутов и обломков. Именно здесь оказалось полезно, что я не управлял каждым скриптом вручную. Я мог сказать: «Этот гуль мне не нравится, начинаем заново», — а агент сам перестраивал цепочку под новый исходник. Третью версию сделали с нуля по новому концепту. После обработки в модели осталось около 100 тысяч треугольников. Агент построил скелет, подготовил походку и показал гуля уже внутри настоящего подземелья. Четвёртая версия получила кирку, мешок и анимации ожидания, ходьбы, копания и переноски золота.

После этого гуль стал настоящим рабочим: он находил отмеченную породу, подходил к ней, бил киркой, забирал ресурс и относил его в сокровищницу. Для проверки запускался конкретный сценарий. В хранилище лежало 2500 золота. Гуль добывал ещё 400, приносил его, счётчик становился равен 2900, а груз рабочего обнулялся. Это был первый полностью работающий 3D‑персонаж. Но сам способ получения модели оказался далеко не финальным.

Почему TRELLIS.2 мы всё‑таки заменили
На простом персонаже недостатки сетки ещё можно было победить скриптами. На более сложных существах начался кошмар. Хорошим тестом стал Скрытый культист: длинная одежда, капюшон и шесть щупалец на лице. Я дал одну и ту же исходную картинку TRELLIS.2 и Pixal3D от TencentARC. Сравнение получилось довольно наглядным. TRELLIS.2 склеил лицевые щупальца в общую пластину. В сетке оказалось 5629 открытых рёбер и около 48 тысяч отдельных обломков.
Pixal3D сохранил шесть отдельных щупалец. Открытых рёбер осталось четыре, а количество обломков сократилось примерно до 1100. Pixal3D тоже построен на основе TRELLIS.2, но итоговая реконструкция оказалась заметно лучше. После этого именно он стал основным генератором моделей в проекте.
Агент установил Pixal3D в отдельное окружение WSL, не ломая рабочую установку TRELLIS. Чтобы модель помещалась в мои 16 ГБ видеопамяти, расчёт одного из тяжёлых этапов был разбит по головам внимания. Генерация занимала около пяти минут и выдавала модель примерно на миллион треугольников с текстурой 4096×4096. Затем другой скрипт сваривал вершины, уменьшал сетку примерно до 180 тысяч треугольников и сохранял UV. После этого запускались риг, анимации, импорт и проверка в Unreal.
Лайфхак № 1: просить не ассет, а конвейер
Самый полезный сдвиг произошёл, когда вместо «сделай мне модель» задача стала звучать примерно так:
Сделай существо, но оставь после себя воспроизводимый путь: исходник, скрипты подготовки, риг, импорт в Unreal, проверку и инструкцию для следующего персонажа.
Разница огромная. Если агент просто выдаёт готовый файл, следующий персонаж начинается почти с нуля. Если после него остаются скрипты, второй персонаж уже использует наработки первого, а третий — исправления первых двух. Сейчас результат работы над существом выглядит примерно так:
SourceAssets/ принятые картинки, GLB, Blender-файлы и версии Tools/ подготовка сетки, риг, анимации и проверки Content/Python/ импорт ассетов и создание тестовых карт Unreal QA/ скриншоты, видео и журналы запусков AGENTS.md что принято, что сломалось и как это починили
Лайфхак № 2: удачный процесс нужно превращать в навык агента
Навык, или скилл, здесь не про промпт‑инжиниринг, а про действительно сложные многоэтапные задачи. И в таком проекте это решает очень многое. После Скрытого культиста стало понятно, что конвейер наконец работает. Агент прошёл весь путь: концепт, Pixal3D, подготовка сетки, скелет, походка, атака, перенос в основную карту, бытовые действия, получение урона и смерть. После этого мы не просто скопировали несколько скриптов. В проекте появился отдельный навык для агентов — инструкция, по которой создаются следующие существа.
В ней записано:
какой концепт подходит для перевода в 3D;
как запускать Pixal3D;
в какую сторону смотрит экспортированная модель;
когда сваривать вершины;
как строить скелет;
чем проверять веса;
как записывать походку в Unreal;
какие ошибки уже были найдены;
какие принятые файлы нельзя перезаписывать.
Теперь я могу попросить сделать новое существо «по схеме культиста». Агент читает навык, находит эталонные скрипты и продолжает с уже работающего места. Для меня это один из главных лайфхаков вайбкодинга: если агент один раз хорошо выполнил сложную задачу, нужно попросить его упаковать найденный путь в повторяемую инструкцию. Иначе через несколько чатов половина опыта испарится.
Лайфхак № 3: память должна лежать рядом с проектом
У проекта есть большой AGENTS.md. Это не документация для пользователя и не красивый README. Это рабочая память агентов. После каждого этапа туда записывается:
что было сделано;
какая версия сейчас считается принятой;
какие способы оказались тупиковыми;
где лежат исходники;
какими командами повторить результат;
что запрещено менять;
какие дефекты пока не исправлены.
Например, там записано, что Pixal3D экспортирует модель лицом в +Y, а старый TRELLIS.2 — в −Y. Без этой строчки следующий агент легко импортирует персонажа задом наперёд и потратит час на изучение логики движения. Туда же попала история с текстурами Pixal3D. Они были упакованы внутрь GLB в формате WebP. Blender сохранял исходные байты в файл с расширением .png, а Unreal отвечал, что у текстуры нулевая ширина. Внешне файл назывался PNG. Внутри лежал WebP. Агент нашёл причину, добавил настоящее преобразование через Pillow и проверку сигнатуры файла. Теперь следующий персонаж не наступит на ту же граблю. Чат для этого подходит плохо: он заканчивается, обрезается или остаётся у другой модели. Файл в репозитории прочитает любой следующий агент.
Лайфхак № 4: пусть агент сам смотрит на результат
Первое время агенты могли написать что‑нибудь вроде: «Модель успешно импортирована, анимация воспроизводится, ошибок нет.» После запуска оказывалось, что персонаж смотрит в стену, его ноги скользят, а кирка проходит сквозь голову. Поэтому в проекте появилось «Правило Ноль»: нельзя говорить, что что‑то работает, пока это не показано на читаемом кадре из самой игры. Не в Blender. Не в окне импорта. Не в журнале.
Агент запускает Unreal с тестовым сценарием, записывает видео, разбирает его на кадры и смотрит результат. Если проверяется удар — нужен момент попадания. Если подол одежды — крупный кадр подола. Если освещение — персонаж рядом с настоящим игровым факелом. Проверочные скрипты также следят за временем создания файлов. Старый удачный скриншот не должен случайно стать доказательством для новой сломанной версии. Это сильно меняет качество автономной работы. Агент не просто пишет код и отдаёт его мне, а замыкает цикл:
сделал → запустил → увидел проблему → исправил → снова запустил
Что получилось
Сейчас в Dungeon Cult больше нет плоских существ. Гуль, культист, глубоководный, Ньярлатхотеп, шоггот и остальные обитатели стали полноценными 3D‑моделями. У них есть не только ходьба и атака. Они едят, спят, тренируются, читают в библиотеке, злятся, получают урон, умирают и реагируют на руку игрока.

Началось всё с одного неудачного спрайтового гуля. Сам гуль ещё был сделан через TRELLIS.2. Но его скрипты стали первым черновиком конвейера, Pixal3D заменил слабое место, а успешный путь Скрытого культиста превратился в навык, по которому агенты теперь делают остальных существ. В следующей статье могу продолжить рассказ о том, как отдельные тесты постепенно превращаются в полноценную игру.
Комментарии (18)

IronMesh
02.10.2026 11:11Данный текст тоже подготовил ии агент

netricks
02.10.2026 11:11Мб он мне и за ретопологию подскажет :)

evilray
02.10.2026 11:11Tripo умеет ретоп, сегментацию, ригинг а-поз/т-поз. В тарифах куча генераций, есть встроенные модели для картинок. С дуру взял макс подписку по скидке, в одно лицо нереально скликать столько, а для агентов там отдельные тарифы к сожалению.
Клод может в блендере, но это мучительно долго. Собственно после ретопа трипо, все равно надо в блендер модельку присунуть и клоду дать. Но одно дело когда в исходнике 2млн полигонов, и другое когда 10-50к.
Опус 5.5 лучше фейбла и астры с блендером справляется.

m1221
02.10.2026 11:11Dungeon Keeper
Боже мой, это моя любимая игра. Я ее каждый год в новогодние праздники прохожу, уже знаю каждый закуток там!
Когда можно будет пощупать вашу игру - я буду первым!
NeordPsy Автор
02.10.2026 11:11Спасибо! Тоже моя любимая, с детства. Недавно играл в самую первую часть (KeeperFX), оттуда и вдохновение возникло. Ну и из Лафкрафта тоже)
Прогресс уже зашел гораздо дальше, скоро будут новые статьи и потом, надеюсь, сама игра)

liamnoel007
02.10.2026 11:11Спасибо за статью, тоже играюсь с локальными 3д моделями. Можете поделиться скиллом для 3д?

NeordPsy Автор
02.10.2026 11:11привет, без проблем поделюсь) скажи о специфике, чтобы совсем общее не кидать)

liamnoel007
02.10.2026 11:11Специфика в приницпе общая. Это ассеты и модельки персонажей, поликов примерно на 10.000-20.000

DaneSoul
02.10.2026 11:11Гуль разрушает блок стены киркой.
Выглядит весьма достойно, но бросается в глаза момент разворота - там или кадров не хватает или скорость их смены чрезмерная, но по сравнению с остальными движениями разворот выглядит ускоренным в несколько раз и практически мгновенным.
Что касается железа, всем использованным локальным моделям хватило моей RTX 5060 Ti с 16 ГБ видеопамяти
Это прям отлично! А сколько времени занимает генерация на таком железе?

NeordPsy Автор
02.10.2026 11:11Спасибо, приятно!
7 минут — генерация модели с текстурами, 7 минут 16 секунд — весь запуск с загрузкой и экспортом на моей RTX 5060 Ti 16 ГБ.
Но для всех проверок и работы ИИ агентов - часа 2.
Там вы правы, кадров не хватало, для гуля был ускоренный финальный тест.
Но вот из финальных существ уже так выглядят анимации (тут часов 5-7 проработки было, включая генерацию)
netricks
А как вы решаете проблему упрощения сетки? Trellis.2 и Pixal3D оставляют после себя монстроузорные по количеству вершин меши, а упрощение их штатным способом через CuMesh приводит к появлению дыр. Новый quad-retopo пайплайн вроде бы работает лучше, но проблема с дырами остаётся
NeordPsy Автор
Да, ловил такое, у одного из первых персонажей (культист, упоминаемый в статье) после упрощения подол был в куче дыр. Помогла сварка совпадающих вершин ДО Decimate в Blender. В импортированном GLB вершины на швах UV были разделены, и при упрощении края расходились. Сваривать после было уже поздно
Так получилось ужать почти миллион треугольников до 180 тысяч без этих трещин. Но если дыры есть в самой исходной модели, сварка не спасает — такие варианты сейчас чаще перегенерирую. Но на последних персонажах, астра по скиллу делала модель с 1го раза, в том числе за счет подходящей картинки на входе
180 тысяч — всё ещё жирно, конечно. Пока это рабочий компромисс для прототипа