🕹 Давно хотел сделать клон старенькой игры Ice Rage, в которую рублися c друзьями в школе на переменах. К сожалению, на свежих iOS в нее уже не поиграть... Но для этого и нужны агенты!
Поиграть в браузере можно тут, на телефоне тоже запускается, но с ноута сильно комфортнее.
За одно и возможность потестить агентов на реальных Long Horizon Tasks.
Длинные автономные сессии агентов один из тренд текущего года. Вместо того чтобы постоянно сидеть рядом и поправлять агента вручную, мы заранее готовим ему среду, даём подробные инструкции и отправляем работать на несколько часов самостоятельно.
В такую парадигму укладывается много задач, от научных экспериментов до "Вот тебе CLI на Python перенеси его на Rust" (по такому принципу устроен наследник SWEBench – ProgramBench)
Самое важное дать агенту валидироваться, чтобы он понимал, что именно нужно улучшить.
Клонирование игры проходило в нескольких cетапах, где каждый следующий был надстройкой над предыдущим. Везде использовал Opus 4.8 с xhigh effort. В каждой попытке агент запускался автономно через`claude -p ...`. Игра делалась под three.js. У агента был доступ к playwright / agentbrowser чтобы смотреть на свой прогресс.
⚫️Сетап 1. Подробная Спецификация. В этой попытке агенту был выдан длинный файл с детальным описанием механик игры, визуала, описание поля, игроков и так далее – все что я сам написал и потом клод со мной расширил. Получилось все совсем плохо: кривой геймплей, персонажи из кубов, сломанная камера и белый шум вместо аудио эффектов (буквально). Не играбельно. Я даже удивился тому, как это было плохо. Особенно учитывая самоуверенность клода в том, что все сделано отлично.
⚫️Сетап 2. Референсы из оригинальной игры. Поняв, что просто инструкций недостаточно, я заменил исходную спеку на вариант, где были описания механики игры + приложены референсные скриншоты/видео с аннотациями того, что происходит на экране. Разметку всю делал сам. Вот тут уже пошел прогресс. Агент стал регулярно делать скриншоты своей поделки и сверяться с референсами. Вышло уже сильно приличнее – в это можно было играть. Отдельно порадовало, что агент пошел искать модельки персонажей в сети и нарыл бесплатные ресурсы. Формально играбельно, но агент во многих аспектах скатывался в "Я вижу, что это сделано не идеально, но поправлю в следующей итерации" и ленился прорабатывать детали.
⚫️Сетап 3. RALPH loop. Довольно известный способ борьбы с ленью агентов — это крутить их в цикле и просить улучшаться. Реализаций может быть великое множество, я выбрал такую: агент получает текущее состояние проекта, улучшает его, сверяет свой результат с референсами и записывает свои наблюдения (в идеале недочеты должен фиксировать независимый агент верификатор). На следующей итерации агент cтартует с точки, где сначала читает что нужно улучшит. Такой подход позволил пофиксить часть визуальных багов, улучшить текстуры, добавить трибуны и фанатов! Каждая следующая итерация становилась короче, а фидбэк все более синтетическим. Всего получилось 5 таких циклов после чего разница перестала чувствоваться.
⚫️Сетап 4. Анимации и эффекты. Квадратные персонажи раздражали, а тишина во время игры убивала весь геймплей. Я запустил отдельного агента с доступом к api 11labs для аудио генерации и segmind.com для 3D моделек. Агент сам нагенерировал релевантных моделей для игры. Правда с анимациями все равно осталось туговато и с этим я уже ничего не делал.
✨ Итоги
Вышло играбельно. Механика в местах не такая чувствительная, боты не очень естественные да и визуал бюджетнее. Но порцию ностальгии я словил и с удовольствием поиграл. Фиксить механику без вмешательства в код тяжело, надо играть и калибровать баланс, у агента с чувством плавности жуткие проблемы. А вот допилить визуал, при наличии качественных моделек героев и анимаций (что конечно отдельный челлендж) – это уже дело техники.
Удачный запуск, сетап 3 + сетап 4, потребовал 3 часов работы агента. Самая длинная автономная работа одного агента длилась 35 минут.
Поиграть в браузере можно тут, на телефоне тоже запускается, но с ноута сильно комфортнее.
За одно и возможность потестить агентов на реальных Long Horizon Tasks.
Длинные автономные сессии агентов один из тренд текущего года. Вместо того чтобы постоянно сидеть рядом и поправлять агента вручную, мы заранее готовим ему среду, даём подробные инструкции и отправляем работать на несколько часов самостоятельно.
В такую парадигму укладывается много задач, от научных экспериментов до "Вот тебе CLI на Python перенеси его на Rust" (по такому принципу устроен наследник SWEBench – ProgramBench)
Самое важное дать агенту валидироваться, чтобы он понимал, что именно нужно улучшить.
Клонирование игры проходило в нескольких cетапах, где каждый следующий был надстройкой над предыдущим. Везде использовал Opus 4.8 с xhigh effort. В каждой попытке агент запускался автономно через`claude -p ...`. Игра делалась под three.js. У агента был доступ к playwright / agentbrowser чтобы смотреть на свой прогресс.
⚫️Сетап 1. Подробная Спецификация. В этой попытке агенту был выдан длинный файл с детальным описанием механик игры, визуала, описание поля, игроков и так далее – все что я сам написал и потом клод со мной расширил. Получилось все совсем плохо: кривой геймплей, персонажи из кубов, сломанная камера и белый шум вместо аудио эффектов (буквально). Не играбельно. Я даже удивился тому, как это было плохо. Особенно учитывая самоуверенность клода в том, что все сделано отлично.
⚫️Сетап 2. Референсы из оригинальной игры. Поняв, что просто инструкций недостаточно, я заменил исходную спеку на вариант, где были описания механики игры + приложены референсные скриншоты/видео с аннотациями того, что происходит на экране. Разметку всю делал сам. Вот тут уже пошел прогресс. Агент стал регулярно делать скриншоты своей поделки и сверяться с референсами. Вышло уже сильно приличнее – в это можно было играть. Отдельно порадовало, что агент пошел искать модельки персонажей в сети и нарыл бесплатные ресурсы. Формально играбельно, но агент во многих аспектах скатывался в "Я вижу, что это сделано не идеально, но поправлю в следующей итерации" и ленился прорабатывать детали.
⚫️Сетап 3. RALPH loop. Довольно известный способ борьбы с ленью агентов — это крутить их в цикле и просить улучшаться. Реализаций может быть великое множество, я выбрал такую: агент получает текущее состояние проекта, улучшает его, сверяет свой результат с референсами и записывает свои наблюдения (в идеале недочеты должен фиксировать независимый агент верификатор). На следующей итерации агент cтартует с точки, где сначала читает что нужно улучшит. Такой подход позволил пофиксить часть визуальных багов, улучшить текстуры, добавить трибуны и фанатов! Каждая следующая итерация становилась короче, а фидбэк все более синтетическим. Всего получилось 5 таких циклов после чего разница перестала чувствоваться.
⚫️Сетап 4. Анимации и эффекты. Квадратные персонажи раздражали, а тишина во время игры убивала весь геймплей. Я запустил отдельного агента с доступом к api 11labs для аудио генерации и segmind.com для 3D моделек. Агент сам нагенерировал релевантных моделей для игры. Правда с анимациями все равно осталось туговато и с этим я уже ничего не делал.
✨ Итоги
Вышло играбельно. Механика в местах не такая чувствительная, боты не очень естественные да и визуал бюджетнее. Но порцию ностальгии я словил и с удовольствием поиграл. Фиксить механику без вмешательства в код тяжело, надо играть и калибровать баланс, у агента с чувством плавности жуткие проблемы. А вот допилить визуал, при наличии качественных моделек героев и анимаций (что конечно отдельный челлендж) – это уже дело техники.
Удачный запуск, сетап 3 + сетап 4, потребовал 3 часов работы агента. Самая длинная автономная работа одного агента длилась 35 минут.