Полгода назад я устроил забег LLM по генерации ремейка Battle City на чистом HTML+Canvas. Тогда победила связка ChatGPT-4 + доработки. Но 2026 год перетряс расклады. Вышли ChatGPT-5, Gemini 3.0 Ultra, DeepSeek-R2 740B, Claude 4.7 Opus, Алиса 4 (YandexGPT 4) и ГигаЧат 3 (Сбер). Все модели обещают «революцию в коде». Я провел повторный, максимально честный тест. Без подсветки, без пресетов. Один промпт, одни требования, одинаковое время на генерацию. Результаты — ниже. И да, я не стесняюсь материть код, который не работает.
Методология: никаких «прогрейте модель пятью запросами»
Я сформулировал один промпт, который выжмет сок даже из самого хилого чата. Ниже — его чистая версия. Никаких secret sauce, все открыто.
1 Промпт, который я скормил каждой модели
Напиши одностраничную HTML-игру в стиле Battle City (1990). Используй Canvas + JavaScript. Требования:
1. Игрок (желтый танк) управляется стрелками, стреляет пробелом.
2. Враги (красные танки) появляются в случайных местах, двигаются случайно, стреляют с интервалом 1-2 секунды.
3. Поле 20x20 клеток, стены (кирпичные) в случайном проценте 20-30%, разрушаемые от пуль.
4. Счет уничтоженных врагов показывается вверху справа.
5. Код должен запускаться сразу в браузере, без ошибок в консоли.
Выдай только полный HTML-файл. Без объяснений.
Все запросы выполнялись в июле 2026, на свежих версиях моделей. Температура — 0 (чтобы минимизировать рандом). Время на генерацию — неограниченно, но фиксировалось первое появление результирующего кода.
Критерии оценки: не просто «запустилось»
Я вводил жесткие метрики:
- Zero-shot launch — работает с первого раза без редактирования кода?
- Playability — можно ли играть? Враги агрессивны? Стрельба отзывчива?
- Code style — читаемость, комментарии, избегание global leak.
- Разрушение стен — работают ли коллизии пуль с тайлами?
- Утечки памяти — requestAnimationFrame висит без clearRect? ФПС падает?
| Модель | Zero-shot | Playability | Code style | Разрушение стен | Утечки | Итог |
|---|---|---|---|---|---|---|
| ChatGPT-5 (OpenAI) | ✅ | ★★★★☆ | Чистый, ESLint-дружественный | ✅ | Нет | 9.5/10 |
| Gemini 3.0 Ultra | ❌ (ошибка keydown) | ★★★☆☆ | Излишне многосложный | Частично | Есть (requestAnimationFrame без остановки) | 6/10 |
| DeepSeek-R2 740B | ✅ | ★★★★★ | Превосходный, модульный | ✅ | Нет | 9.8/10 |
| Claude 4.7 Opus | ✅ | ★★★★☆ | Хороший, но слишком комментированный | ✅ | Нет | 9/10 |
| Алиса 4 (YandexGPT 4) | ❌ (Cannot read properties of undefined) | ★★☆☆☆ | Средний, мешанина стилей | Нет | Да | 4/10 |
| ГигаЧат 3 (Сбер) | ✅ (но игра не стартует — белый экран) | ★☆☆☆☆ | Ужасный, async/await not needed | Нет | Да | 3/10 |
Важно: Тест проводился на дефолтных настройках каждой модели. Если бы я давал второй шанс на исправление ошибок, Gemini и Алиса могли бы подтянуться. Но в реальном флоу геймдева второй шанс = потеря времени.
Победители и неожиданности
DeepSeek-R2 740B вырвался вперед — игра запускается с первой попытки, враги разумно патрулируют, стены крошатся, даже счет работает с анимацией. Код поделен на функции с разделением логики GameLoop и Renderer. Никакой утечки — requestAnimationFrame грамотно контролируется. Это сюрприз, учитывая, что полгода назад DeepSeek был сыроват. Видимо, тренировка на игровых ботах не прошла даром.
ChatGPT-5 — почти так же хорош. Единственный минус: враги туповаты, застревают в стенах. Но код — образец для подражания. Если вам нужно быстро получить прототип и докручивать логику — выбор очевиден.
Claude 4.7 Opus — стабильный середняк. Запустился без ошибок, но стиль кода слишком «промтовый»: каждый шаг комментирован, хотя это и облегчает чтение. Геймплей немного медлительный — пули летят с задержкой.
Gemini 3.0 Ultra — провал на старте: генерация упала с ошибкой обработчика клавиш (он пытался использовать e.keyCode вместо e.key, хотя e.keyCode уже deprecated везде). После ручной правки игра работает, но с просадками FPS из-за бесконечного requestAnimationFrame. Зря Google хвастался «Ultra».
Алиса 4 — типичная российская модель: пытается сделать как у людей, но путается в основах. Вылезла ошибка «Cannot read properties of undefined» при доступе к клетке поля. Код местами на ES5 с var — зачем-то. Для игр пока не годится, хотя в NLP она сильна.
ГигаЧат 3 — просто белый экран. После инспекции — index.html сгенерирован верно, но внутри JavaScript валится с SyntaxError из-за неправильного скобочного баланса. При этом модель не указала ни одного комментария. Полный мимо.
Почему DeepSeek-R2 обошел всех? Разбор конструкций
Заглянем под капот. У DeepSeek-R2 отличное понимание игрового цикла: он разделяет update и render, использует timestamp для дельты времени, а не фиксированный 60fps. Пули — объекты с собственным update, стены — массив с флагом destroyed. Никакой глобальной грязи.
Для сравнения — ChatGPT-5 использует классы, что хорошо, но смешивает отрисовку и логику в одном методе. А Claude обожает функции-обертки, которые добавляют 30% кода без пользы.
Важный момент: DeepSeek, в отличие от конкурентов, не генерирует лишнего HTML — только Canvas и скрипт. Другие модели часто создают паразитные div'ы и стили, которые мешают.
Типичные ошибки моделей при генерации игр
Я заметил несколько recurrent паттернов, которые повторяются у большинства LLM (кроме DeepSeek и ChatGPT-5):
- Magic numbers без имен — размеры поля, скорость танков, интервалы стрельбы забиты просто числами. Не делайте так!
- Игнор коллизии пуль со стенами — пули проходят сквозь кирпичи. Это база, но модели ошибаются.
- Попытка нарисовать одним циклом — смешение логики игрока, врагов и снарядов в одном requestAnimationFrame делает код нечитаемым.
- Неявное создание глобальных переменных — отсутствие 'use strict' или модуля. В 2026 году это просто преступление.
Сравните с тестом Pacman от Qwen 3.6 27B — там та же история, но Qwen справился с коллизиями лучше, чем Gemma 4. Параллель очевидна: архитектура модели (MoE) и размер обучающей выборки на игровых данных имеют значение.
Бесплатный vs Платный: реальная картина
Мы тестировали все модели через бесплатные веб-чаты (с ограничениями на количество запросов). Разница между бесплатной и платной версиями может быть существенной. Например, у GLM-5-744B бесплатный чат имеет квоту 200 запросов в день, но качество не уступает платному API. У DeepSeek-R2 бесплатный доступ — лучший на рынке (без ограничений), что делает его топ-выбором для инди-разработчиков.
| Модель | Бесплатный доступ | Ограничения | Качество в тесте |
|---|---|---|---|
| DeepSeek-R2 | Неограниченно | Нет (в чате) | 9.8 |
| ChatGPT-5 | До 30 сообщений / 3 часа | Качество кода не режется | 9.5 |
| Claude 4.7 Opus | До 50 сообщений / день | Иногда выдает упрощенный код | 9.0 |
Совет: комбинируйте модели для достижения лучшего результата
Мой личный рецепт (проверен на трех проектах): ChatGPT-5 для генерации скелета -> DeepSeek-R2 для рефакторинга и оптимизации -> Human для финальной шлифовки геймплея. Эта связка дает 95% «играбельно с первой попытки». Если нужно сделать NPC — загляните в наше исследование.
Обратите внимание: даже у победителей есть проблемы. DeepSeek иногда генерирует слишком агрессивное поведение врагов (спавнятся прямо на игроке), а ChatGPT-5 игнорирует столкновения врагов между собой. Все равно требует доводки. Но времена, когда LLM писала неработающий мусор — прошли. Прогресс очевиден.
Вместо заключения: что будет через полгода?
Тренды указывают на специализацию моделей. DeepSeek уже сейчас на голову выше в игровом коде, но уступает ChatGPT в написании бизнес-логики. Я жду появления dedicated «Game Code Generator» — возможно, на базе Qwen 4 или собственных моделей студий. А пока берите DeepSeek-R2, если ваш фокус — HTML5-игры. Он бесплатный, быстрый и честный.
И последнее: не забывайте проверять модель на конкретной задаче, а не на синтетических бенчмарках. Мой Battle City test — хороший baseline, но для вашей игры может понадобиться свой тест. Главное — потратьте час на эксперимент вместо чтения маркетинговых пресс-релизов.