Всем привет!
Я соло-разработчик, делаю на UE 5.8 мультиплеерный шутер. Код пишу вместе с ИИ-агентом Claude Code, и быстро упёрся в проблему: с C++ агент работает хорошо, а Blueprints для него — чёрный ящик. .uasset — это бинарник: агент не видит, что внутри, и не может ничего поправить. Приходилось вручную описывать ему графы и вручную же переносить его советы в редактор.
Поэтому я сделал editor-плагин BlueprintVision. Он даёт агенту «глаза и руки» для Blueprints. Агент работает по циклу: нашёл BP → открыл → прочитал граф → разобрался → внёс правку (включая связи между нодами) → скомпилировал и проверил.
Плагин в активной разработке. Пишу, чтобы показать, что получается, и собрать мнения. Ниже подробности.
Что умеет
Чтение
- Список ассетов: Blueprint, Widget BP, AnimBP, DataTable, Data Asset, структуры, перечисления.
- «Карточка» BP: компоненты, переменные (с RepNotify), графы, реализованные события C++, интерфейсы.
- Граф как псевдокод. Это главная фишка. Вместо JSON с сотней нод агент получает компактный текст со стабильными ID нод:
event BlueprintUpdateAnimation(DeltaTimeX: float): #nf7ec3f
t_1 = TryGetPawnOwner() #n15f255
if isvalid(t_1): #n224afe
Speed = VSize(t_1.GetVelocity()) #n1ebf2c #n3ab7d8 #nd64389
bIsInAir = t_1.GetMovementComponent().IsFalling() #nf131ae #nc0c9ad #nd622c1
- Поиск использований переменных, функций и строк DataTable по всему проекту.
- Widget BP: дерево виджетов, привязки, анимации виджетов, MVVM.
- AnimBP: Event Graph, Anim Graph деревом от выходной позы, State Machine с условиями переходов:
state Move: BlendSpacePlayer(BS_Move, X ← Speed, Y ← Direction)
Idle -> Move when (Speed > 10) && !bIsInAir blend 0.2 s
Move -> Idle when Speed <= 10 blend 0.25 s
Правка
- Ноды, связи, значения пинов, переменные, функции, события, компоненты, диспетчеры, интерфейсы.
- Переименование и удаление с каскадом: плагин сам сообщает, какие зависимые ноды удалены или переподключены.
- Дерево виджетов, анимации виджетов, MVVM, строки DataTable, свойства Data Asset.
- AnimBP: ассеты у нод, время смешивания, привязки переменных, настройки переходов. Правка State Machine сейчас в работе.
Цикл C++
buildсам решает, хватит ли Live Coding или нужна полная пересборка. Ошибки компилятора сжимаются до первопричин (≤ 10 строк вместо простыни лога).- Если нужен перезапуск, агент не закрывает редактор сам (если вы не разрешили это сами ибо такая функция тоже есть, если вы паралельно не делаете в редакторе что-то еще вы можете разрешить агенту самому пересобирать проект когда ему это понадобится). Он показывает уведомление и ждёт(вам дается минута, после окончания таймера проект сохраняется принудительно в таком виде какой он есть на момент истечения таймера). Когда вы закрыли редактор, проект пересобирается и открывается снова с тем же уровнем и теми же вкладками.
- Перед тем как просить закрыть редактор, плагин проверяет компиляцией, что новый код вообще собирается.
- Откат C++ к последней удачной сборке. Текущие версии файлов при этом сохраняются.
Безопасность (мне это было важнее скорости)
- Атомарность. Патч сначала применяется к временной копии BP. Если хоть одна операция или компиляция не прошла, оригинал не трогается.
- Ctrl+Z. Правка в открытом редакторе — обычная транзакция, её можно отменить.
- Ничего не сохраняется на диск без явного флага. Перед каждым сохранением делается резервная копия, все сохранения пишутся в журнал, и любое можно откатить.
- Права: запись выключена по умолчанию. Можно разрешить её только для нужных папок, а отдельные BP, графы и свойства — заблокировать.
- Живой режим. Если в ассете есть ваши несохранённые изменения, агент его не тронет.
- Вывод не зависит от языка редактора. У меня редактор на русском, это проверяется тестами.
Как это выглядит в работе
Агент запускает команды из терминала, например:
bv.cmd read /Game/Characters/BP_Player EventGraph
bv.cmd edit patch.json
bv.cmd build
Если редактор открыт, команды выполняются прямо в нём, и правки видны сразу. Если закрыт — в фоне, без интерфейса.
[скриншот / GIF: агент читает граф и добавляет ноду]
Честно об ограничениях
- Только UE 5.8 и Windows. Другие версии пока не поддерживаются.
- Плагин сделан под Claude Code (агент Anthropic, нужна их подписка). Сами команды можно вызывать и вручную, но смысл — в связке с агентом.
- Агент не видит картинку. Он читает логику, а не то, как это выглядит в игре. «Анимация дёргается» он сам не заметит.
- Не поддерживаются: материалы, Niagara, акторы на уровне, Montage и Blend Space как ассеты (последние запланированы).
- Плагин написан мной вместе с ИИ (Claude), включая большую часть кода и тестов. Набор тестов — около 700 автоматических проверок, плюс ручная приёмка каждой функции.
Планы
- Доделать AnimBP: правка State Machine, Linked Anim Layers, Montage, Blend Space.
- «Глаза» для мультиплеера: линтер Blueprints (в том числе правила безопасности — Server RPC без проверок, логика вне
HasAuthority), запуск сервера и клиентов с логами, аудит репликации, сравнение версий BP. - Независимое ревью кода и первый запуск с выбором правил для агента.
- Потом — релиз. Скорее всего, будет бесплатная версия «только чтение» и полная.
Что хочу от вас
- Нужен ли вам такой инструмент? Какие задачи с Blueprints вы бы отдали агенту?
- Какие типы ассетов важнее всего поддержать дальше?
- Если хотите попробовать раннюю версию (UE 5.8, Windows), напишите в теме. Тестеров позову когда подготовлю плагин к скачиванию
Спасибо, что дочитали! Отвечу на вопросы в теме.