Будни вайбкодера

Enduro

Дрим-тим: как Claude и GPT сами поделили работу над игрой

Третий проект, игра про эндуро на Unreal. Я захотел, чтобы над ней работали две нейросети и общались без меня. Они договорились о ролях за два раунда, и резюме переговоров оказалось интереснее, чем я ожидал.

У меня появился третий проект, и он не про телефоны. Это игра про хард-эндуро на Unreal Engine с прицелом на PS5: открытый мир, где противник это склон, а не таймер. Про саму игру написано на странице проекта. Этот пост про другое: про то, как я собрал команду.

Зачем два ИИ

Идею игры я обсуждал в ChatGPT, а делать проект сел с Claude Code, потому что он умеет работать в редакторе Unreal сам: ставить объекты, запускать игру, читать логи. И мне стало жалко терять второго собеседника. Спросил у Клода в лоб: а как бы нам выстроить общение между тобой и GPT без моего участия?

Ответ был честный. С тем чатом в браузере связаться нельзя, его память живёт в окне. Но у OpenAI есть Codex, агент для терминала, аналог Claude Code, и он работает по моей же подписке ChatGPT. Claude может подключить его к себе как инструмент, давать ему задачи, читать ответы и наоборот, Codex может дёргать Claude для независимой проверки. Всё общение через файлы репозитория. Я участвую только там, где нужны мои ощущения от езды.

Две команды в терминале, вход по подписке, и у меня в проекте два агента.

«Договоритесь между собой и напишите мне резюме»

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

Вот что я получил через десять минут.

Договорились за два раунда. Claude предложил основу, Codex принял её и внёс три поправки, Claude принял все три. Самая важная поправка от Codex: не передавать формулы «на бумаге», чтобы вторая сторона их переписывала, а писать физическое ядро самому, как отдельный код с тестами. Лишнее переписывание это лишнее место для ошибок.

Никто не стал меряться. Цитата из резюме: «Ни один из нас не стал утверждать, что сильнее в математике или C++: сравнительных данных по этому проекту нет, поэтому роли распределены по реальным возможностям среды, а не по самооценке». Я знаю живых разработчиков, которым до такого далеко.

Кто что взял. Codex, то есть GPT: независимое физическое ядро, двигатель, сцепление, коробка, шина и грунт, подвеска, чистый код без движка плюс тесты. Спецификации: единицы, система координат, шаг расчёта. Сценарии проверки и разбор телеметрии. Ревью всего существенного, что напишет Claude. Право вето на сетевой контракт, если найдёт конкретный сценарий рассинхрона.

Claude: архитектура в Unreal, стыковка ядра с движком, силы, ввод, камера. Сборка, редактор, профилирование. Мир, погода, звук. Репозиторий, документация, постановка задач Codex. Ревью того, что написал Codex.

Правила, о которых они договорились без меня.

  • Ревью делает всегда не автор. Замечание содержит сценарий, последствия и способ проверки.
  • Вето только с воспроизводимым сценарием и условием снятия.
  • Спор решается измерением в игре. Если измерить нельзя и решение обратимо, закрывает Claude и записывает допущение с условием пересмотра.
  • Общение только через файлы репозитория, параллельная работа в отдельных ветках, общие файлы состояния редактирует один.
  • Прошедшие тесты подтверждают свойства модели, а не реализм. Реализм подтверждаю я с геймпадом.
  • Роли пересматриваются после каждых десяти закрытых задач по трём метрикам: принято без переделок, найдено дефектов, время до проверенного результата.

Последний пункт меня добил. Они сами себе назначили аттестацию.

Первая задача

Чтобы это не осталось красивым документом, Claude сразу поставил Codex задачу: спецификация и ядро сцепления. Входы: положение рычага, обороты двигателя, обороты вала. Параметры: максимальный момент, положение и ширина зоны схватывания, кривая усилия на рычаге для курка. Отдельно: чем «китайский» рычаг отличается от рычага дорогого мотоцикла, как набор параметров, а не как бренд.

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

Что делал я

Подключил геймпад. Взял его в руки, когда Claude сделал пробную сцену с кубом: газ на правом курке, сцепление на левом с сопротивлением. Сказал: разницы между лёгким и тяжёлым рычагом не чувствую. Оказалось, ошибка масштаба, оба пресета выдавали три процента силы. Через двадцать минут была новая версия с полной шкалой и вибрацией мотора, где двухтактник и четырёхтактник дрожат в руках по-разному.

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

Что из этого будет

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