Масштаб и архитектура проекта
Разработчики из сообщества GitHub представили Claude of Duty — первый от первого лица шутер, работающий в браузере. Проект состоит из 55 000 строк кода, распределенных по 11 подсистемам. Ключевая особенность: полное отсутствие внешних ассетов. Ни текстур, ни 3D-моделей, ни звуковых файлов. Все ресурсы (геометрия, материалы, звуки) генерируются процедурно в момент загрузки с помощью WebGL2 и Three.js r180.
Игра управляется командой ИИ-агентов, работающих под оркестровкой. Архитектура строго регламентирована файлом ARCHITECTURE.md, который определяет интерфейсы подсистем, зоны ответственности и общий словарь событий. Управление стандартное для жанра: WASD, мышь, стрельба, приседание, уклонение и спринт.
Технические характеристики подсистем
Проект включает сложный графический и физический движки, реализованные с нуля. Ниже приведены ключевые компоненты, сгенерированные ИИ:
| Подсистема | Ключевые возможности |
|---|---|
| Рендеринг | HDR-пайплайн, каскадные карты теней (PCSS), GTAO, TAA, GPU-экспозиция, процедурный LUT |
| Материалы | GPU-генерация 19 типов поверхностей (бетон, металл, дерево), параллакс-окклюзия, трипланарная проекция |
| Физика | Собственная реализация: BVH (29k трисов за 22 мс), swept-capsule контроллер, PBD-рагдоллы, пробитие пуль |
| AI | Навигационные сетки, поведение укрытий, восприятие игрока, рагдолл-смерти |
| Аудио | Web Audio API: синтез выстрелов, HRTF-пространственное звучание, реверберация без файлов |
Проблема производительности и оптимизация
Изначально проект столкнулся с критическими проблемами производительности. Бенчмарки с неподвижной камерой показывали 94 FPS, но в реальном геймплее частота падала до 12–17 FPS из-за длительных задержек (до 1236 мс), вызванных ленивой компиляцией более 34 WebGL-программ прямо во время кадра.
Разработчики внедрили инструмент profile.mjs для точного анализа хитчей и baseline.mjs для воспроизводимых тестов. Оптимизация включала предварительную загрузку шейдеров (pre-warm). Результат:
| Метрика | До оптимизации | После оптимизации |
|---|---|---|
| FPS (p50) | 12–17 | 28–30 |
| FPS (p99) | 4–9 | 14–17 |
| Худший кадр | 728–1236 мс | 66–82 мс |
| Время загрузки шейдеров | ~9–12 с | 3.7–4.6 с |
Честная оценка качества
Целью проекта было создание аналога Call of Duty. ИИ-критики оценили результат по шкале от 1 до 10. Средний балл вырос с 3.59 до 5.05. Однако в слепом тестировании все критики однозначно выбирали настоящий Call of Duty. Основные недостатки:
- Руки и оружие: «Блочные» пальцы, не convincing держащие оружие. Проблема с освещением viewmodel (избыточная яркость).
- Материалы: На близком расстоянии текстуры выглядят как процедурный шум, а не фотография.
- Персонажи: Враги напоминают манекены на расстоянии.
- Освещение: Отсутствие настоящего глобального освещения (GI), только аппроксимация.
Инсайты о работе ИИ-агентов
Эксперимент выявил важность последовательной работы. Параллельная обработка 11 директорий шестью агентами привела к деградации качества (рост дефектов с 60 до 66). Последовательная оптимизация с одним владельцем на каждую связанную систему улучшила оценку на +1.00 балла и сократила дефекты до 26. Также выяснилось, что ИИ-агенты могут ошибаться в интерпретации задач: агенты «улучшали» оружие, делая его темнее, чтобы убрать блики, но это убивало диффузную составляющую. Исправление потребовало обратного действия — увеличения яркости, что противоречило первоначальной инструкции.
Источник: Github ↗
