Собирание 3D-шутера на Gemini 3.8: проверка на прочность
Google представил модель Gemini 3.8 Flash, позиционируя её как инструмент для автономной разработки сложных систем. На практике автор статьи проверил, способна ли нейросеть создать полноценный 3D-шутер в стилистике ретро-фэнтези без готовых движков. Результат показал: код работает, но визуальная составляющая требует кропотливой ручной полировки.

# Проверяем возможности новой Gemini 3.8: можно ли собрать 3D-шутер без движка?
Второе сентября Google анонсировал выход модели Gemini 3.8 Flash. Разработчики сделали акцент на способности автономных агентов решать инженерные задачи и обрабатывать длинные контексты, пообещав качественный скачок в области генерации кода. Чтобы проверить, соответствуют ли маркетинговые заявления реальности, автор эксперимента поставил амбициозную цель: создать с нуля 3D-шутер от первого лица, используя только веб-технологии и без использования Unity, Godot или других игровых движков.
Тестирование: от базового каркаса к «геометрии сатанинского храма»
Эксперимент начался с задания нейросети написать код для игры в стиле темного фэнтези: лабиринты, поиск ключей, толпы нежити и мрачная атмосфера. Вместо тяжелых движков в качестве основы выбран легковесный Three.js с нативным WebGL, а запуск игры должен был осуществляться через самописный локальный лаунчер на языке C#.
Первый этап работы модели выглядел обнадеживающе. Нейросеть быстро сгенерировала базовый каркас: сетку комнат, контроллер камеры с захватом курсора и простую систему отрисовки стен. Для достижения эстетики классических игр 90-х модель предложила рендерить виртуальный буфер в разрешении 426x240 пикселей с последующим масштабированием, что сразу дало нужную пиксельную плотность.
Однако как только процесс перешел к созданию графических ассетов, на сцену вышла реальность. Попытки сгенерировать спрайты монстров (скелетов, демонов, факелов) привели к созданию плоских картинок, которые визуально прилипали к белым фонам. Стандартная прозрачность в Three.js оставила вокруг объектов уродливые белесые ореолы. Решением стала доработка скрипта на Python с попиксельным обходом для расширения альфа-масок, что позволило антуражу выглядеть достовернее.
Ситуация усугубилась ошибками в логике генерации кадров боевых эффектов. При создании спрайта для волшебного посоха модель, пытаясь добавить драматизма, пририсовала к заднему плану полупрозрачного скелета, перекрывающего половину экрана. Исправление таких артефактов требовало ручной интервенции и пересборки кадров.
Тонкие настройки: оптические иллюзии и коллизии
Детальная проработка оружия выявила специфические проблемы с восприятием стиля. Сгенерированный посох выглядел слишком детализированным, напоминая современный 3D-рендер в пиксельном окружении. В качестве решения было применено цветовое квантование: скрипт принудительно сжимал изображение до сетки 136x136 точек с адаптированной палитрой старых видеокарт, растягивая результат методом ближайшего соседа. Это удалось вернуть оружию нужную зернистость.
Еще одной проблемой стало просвечивание латной перчатки героя насквозь. Алгоритм очистки фона ошибочно воспринял глубокие темные складки кожи как фон подземелья и вырезал более шестидесяти тысяч пикселей. Исправление заключалось в переходе от порогового отсечения по яркости к строгому отсечению фона снаружи контура руки.
Процесс разработки уровня привел к архитектоническим сюрпризам. Модель создала финального босса — Архинекроманта Мортиса — высотой в пять с половиной метров. Однако, при загрузке уровня с потолком стандартной высоты в 4,5 метра, выяснилось, что босс уперся головой в перекрытия и начал скользить по полу. Исправление потребовало повышения сводов финального храма до 7,5 метров и пересчета пропорций монстра, чтобы добавить пространственной глубины сцене.
Боевая система также имела критические логические ошибки. Монстры, следуя алгоритмам поиска пути, не могли попасть по игроку. Причиной стал расчет вектора стрельбы от точки спавна снаряда к координатам ног персонажа (уровень нуля). Поскольку оружие монстров находилось на высоте 1,5 метра, снаряды неизменно летели в пол в двух метрах перед целью. Переход на капсульную коллизию и расчет выстрела в центр массы с учетом высоты оружия устранил проблему.
Итоговый вердикт: рутинная работа вместо чуда
В результате были созданы четыре законченных уровня с уникальной атмосферой, система физики снарядов, поведение врагов с фазами ранимости и смерти, а также босс с двумя этапами боя. Весь набор из 95 ассетов и текстур был собран без сторонних движков. Музыка, сгенерированная нейросетью, оказалась неудачной и была заменена треками из SUNO, а интерфейс получил стилизацию под кованые рамки 80-х.
Смогла ли Gemini 3.8 сделать игру? Да, она создала полностью автономный проект. Однако миф о том, что достаточно нажать одну кнопку и получить шедевр, остается мифом. Новая модель отлично пишет код, но страдает от отсутствия пространственного воображения, что приводит к визуальным и логическим артефактам. Работа над проектом фактически свелась к бесконечному циклу: задача — проверка — корректировка — проверка. Чем детальнее автор расписывал технические нюансы, тем точнее получался результат.
Для разработчика, понимающего принципы рендеринга, физику и архитектуру данных, такой инструмент может экономить недели рутинной работы по написанию кода. Но для визуальной составляющей и логической целостности 3D-сцен человека всё еще требуется «вручную» направлять нейросеть, указывая ей на ошибки в геометрии и освещении. Чуда не произошло, но опыт оказался крайне приятным.
Примечание автора: Самоирония в конце проекта заключалась в установке на стартовом экране разбитой плитки с надписью "Навайбкожено Нейроскуфом", подчеркивая тот факт, что без человеческого контроля результат часто выглядит как наваждение.
Глоссарий терминов
* Three.js: JavaScript-библиотека для работы с WebGL, позволяющая создавать 3D-графику в браузере. * WebGL: API для прямого взаимодействия с аппаратным обеспечением видеопроцессора для отрисовки 3D-графики. * Alpha-канал: Канал в изображениях, отвечающий за прозрачность пикселей. Ошибка с ним часто приводит к появлению белых ореолов или просвечиванию объектов. * Коллизия: Вычисление столкновений между объектами в пространстве. В данном случае использовалась капсульная коллизия для более точного определения попадания в объем персонажа. * Сглаживание (Anti-aliasing): Процесс устранения ступенчатости границ объектов. В контексте статьи упоминалось как проблема при масштабировании низкого разрешения.