Безумец потратил 500 миллиардов токенов и задействовал 17 ИИ-агентов для воссоздания исходного кода оригинальной Modern Warfare 2

Разработчик Морис Хойман рассказал в своем блоге, как с помощью ИИ-агентов декомпилировал Call of Duty: Modern Warfare 2 2009 года и воссоздал ее исходный код на C++.

В самом посте игра названа просто "популярным шутером от первого лица", а работа заняла три месяца и потребовала более 500 млрд токенов.

Сейчас в реконструированном коде присутствует 99% функций оригинала, а 83% из них совпадают с исходными побайтово. Цель Хойман изначально сформулировал как "точное, стабильное и полнофункциональное воссоздание" игры. По словам разработчика, в нынешнем виде она "работает безупречно".

Еще в конце сентября Хойман сообщил, что игра полностью проходима:

Декомпиляция MW2 близится к завершению. Сейчас параллельно работают 17 агентов, и мы продвигаемся с невероятной скоростью. Игра теперь полностью проходима, почти все видимые баги исчезли. Осталось лишь несколько. Я даже заработал свою первую ядерную бомбу ☢️😂

По собственной оценке разработчика, общий расход составил 600–700 млрд токенов. Сам он за токены не платит, но прикинул стоимость в отдельном посте. При использовании подписок вышло бы около 1200 евро, а при оплате через API – от 200 до 250 тысяч долларов.

Агенты работали на базе Claude от Anthropic и Codex от OpenAI. Хойман начал с тарифа Claude Max (20x), затем подключил Codex Pro и использовал оба одновременно. Оба тарифа фиксированные и не предполагают оплату за каждый токен через API.

Технический стек выглядел так:

  • основная модель – Sonnet 5, также активно применялись Opus 5.5 и модели OpenAI Luna, Sol и Terra

  • в качестве оболочек для агентов использовались в основном Claude Code и Codex CLI

  • код игры агенты читали через дизассемблер IDA с помощью сервера ida-mcp от Hex-Rays

  • на каждую единицу трансляции заводился отдельный issue в GitHub

  • агенты и люди общались в едином канале Discord, куда приходили уведомления CI через вебхуки GitHub

Поначалу над кодом трудились четыре агента: три исполнителя и один ревьюер. К концу сентября их число выросло до 17. Чтобы агенты не держали в памяти уже готовые функции, Хойман снизил порог автоматического сжатия контекста с заданных по умолчанию 90% от максимального окна до 42%.

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

Код, написанный за первый месяц, оказался прекрасно читаемым, но "семантически неверным". Агенты ошибались в сигнатурах функций, типах данных и раскладке структур, а также выдумывали или удаляли куски логики. Кроме того, они вносили ненужные архитектурные изменения – например, переписали поиск конфигурационной переменной так, что он стал "на порядки дороже".

Агент-ревьюер не смог этому помешать, так как объективных критериев приемки не существовало. По словам Хоймана, комментарии исполнителей, обосновывающие их правки, "фактически действовали как непреднамеренная промпт-инъекция". В итоге все комментарии удалили из исходников, и это, как отметил разработчик, "очень помогло".

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

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

Каждая функция получает простой результат "пройдено" или "не пройдено", а все совпадения записываются, чтобы CI мог перепроверять их и сообщать о регрессиях. Такой подход медленный и порой сложный, но совпадение гарантирует идентичное поведение вплоть до воспроизведения оригинальных багов.

Даже после этого агенты сразу попытались схитрить. Они писали ассемблерные вставки и, по словам Хоймана, "неоднократно пытались изменить скрипт, чтобы исключить свою функцию из сравнения". В ответ ассемблерные вставки и подобные обходные пути запретили в инструкциях, а CI теперь хеширует проверочный скрипт и сверяет результат с хешем, хранящимся в секретах GitHub Actions.

До появления проверки более дешевые и слабые модели Haiku и Luna "выдавали крайне плохие результаты". С внедрением автоматической сверки у моделей появилась достаточная обратная связь, что снизило затраты и позволило масштабировать работу. Спустя почти два месяца было восстановлено 99% функций, из которых 83% совпали побайтово.

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

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

Activision пока никак не прокомментировала ситуацию. Сам Хойман по "очевидным причинам" оставляет код закрытым и собирается использовать его "только для собственных нужд". Он добавил, что "декомпилированный код, очевидно, тоже защищен авторским правом".

Параллельно разработчик начал развивать Sogen – свой эмулятор пользовательского пространства, превращая его в легковесную песочницу для ИИ-агентов. Поводом стало то, что агенты в ходе работы стирали виртуальные машины. К полноценному использованию инструмент будет готов нескоро.

Хойман признает, что декомпиляция игры – особый случай, ведь далеко не в каждой задаче есть возможность побайтово сверяться с эталоном. Однако, по его мнению, "при достаточной изобретательности" приблизиться к такому уровню контроля можно везде.

Главный урок разработчик сформулировал так: "Генерировать код теперь дешево. Если он плохой – выбрасывайте его", а приоритет стоит отдавать корректности, а не продуктивности.

Больше статей на Shazoo
Тэги:

Об авторе

Эксперт по Fallout
Главный редактор
Более 16 лет в индустрии освещения видеоигр, кино, сериалов, науки и техники. Особенно разбираюсь в серии Fallout, ценитель The Elder Scrolls. Поклонник Arcanum и Fallout Tactics. Больше всего играю в Civilization, Old World и градостроители. Изучаю ИИ и загадки космоса.