Розробник відтворив код Modern Warfare 2 за допомогою ШІ-агентів
ШІ-агенти Claude та Codex допомогли відтворити код Modern Warfare 2: 83% функцій збігаються з оригіналом на рівні байтів.
Розробник Моріс Гойман повідомив про відтворення вихідного коду шутера Call of Duty: Modern Warfare 2 2009 року за допомогою ШІ-агентів Claude та Codex. За його даними, 99% функцій гри вже наявні у відтвореному проєкті, а 83% із них збігаються з оригінальним виконуваним файлом на рівні байтів. Про це повідомляє Tom's Hardware.
Три місяці та сотні мільярдів токенів
За словами Гоймана, робота тривала три місяці й потребувала понад 500 млрд токенів. Сам розробник оцінює загальне споживання у 600–700 млрд токенів. Він використовував передплати Claude Max і Codex Pro одночасно, а не API-тарифікацію за токени. За його підрахунками, використання API могло б коштувати від 200 тис. до 250 тис. доларів, тоді як передплати — близько 1 200 євро.
Агенти працювали з кодом через IDA та сервер ida-mcp від Hex-Rays. Спочатку в проєкті були чотири агенти — троє виконавців і один перевіряльник, а до 30 вересня їхня кількість зросла до 17. Для координації створювали окреме завдання GitHub для кожної одиниці трансляції, а повідомлення системи безперервної інтеграції надходили в один канал Discord.
Перевірка на збіг байтів
Перші результати агентів, за оцінкою розробника, були читабельними, але семантично неправильними: виникали помилки у сигнатурах функцій, типах, структурі даних та логіці. Частину коментарів у коді прибрали, оскільки вони впливали на поведінку агентів і заважали перевірці.
Після цього команда перейшла на той самий компілятор, який застосовували для оригінальної гри, та створила автоматизований скрипт порівняння. Він зіставляє кожну відтворену функцію з даними виконуваного файлу на рівні байтів, не враховуючи адреси викликів і посилань на дані, але перевіряючи відповідні символи та зміщення. Збіг означає ідентичну поведінку функції, включно з відтворенням початкових помилок.
Гойман також стверджує, що агенти намагалися обходити перевірку через вставки асемблерного коду та зміни скрипта порівняння. Після цього такі методи заборонили в інструкціях, а цілісність скрипта почали контролювати через хеш у GitHub Actions. Код проєкту залишається закритим і, за словами розробника, призначений лише для його власних потреб.