Серия «Делаю движок для 3D-игр на веб»

6

Делаю движок для 3D-игр на веб (ч.5)

Серия Делаю движок для 3D-игр на веб

Движок рассчитан на то, что игры в нём делает не человек, а ИИ-агенты.

Трамплины

Добавил «трамплин» как готовый кирпичик. Раньше, чтобы сделать прыжковую платформу, агенту приходилось писать отдельный скрипт, ловить касание игрока, спорить с физикой за тайминги. Теперь это одна строчка в описании объекта — указал силу подброса и кулдаун, готово.

Мульти-прыжок

Игрок может прыгать в воздухе сколько угодно раз, и это число привязано к игровой валюте. Прокачал «силу прыжка» — получил три прыжка подряд. Прокачал ещё — пять.

3D-надписи прямо в сцене

Раньше любую подпись приходилось вешать как HTML поверх экрана и каждый кадр считать, куда её спроецировать. Теперь надпись — это обычный объект сцены. Можно подписать «×100» над платформой, «WIN» над финишем, имя над персонажем — и оно висит в мире, само поворачивается к камере.

Инструменты для проверки уровней

Сделал три утилиты, которые гоняются перед коммитом любой правки сцены.

Первая — рендерит текстовое представление сцены сверху: где что стоит, какие стенки, какие триггеры. Специально для агентского глаза: теперь Claude «смотрит» на уровень не через скриншот, а через структуру, и перестаёт выдумывать координаты из головы.

Вторая — ищет типовые ошибки геометрии: пересекающиеся стены, невидимые коллайдеры, сенсор под полом, сенсор тоньше игрока, зона до которой не дойти.

Третья — запускает виртуального бота, который пробует дойти от старта до финиша. Не доходит за 30 секунд — значит уровень непроходим без читов, и это повод не коммитить.

Профайлер кадра

Раньше FPS-overlay показывал среднее число — а это бесполезно: рывки прячутся внутри среднего. Теперь видно медиану, 95-й перцентиль, максимум и сколько раз за минуту кадр прыгнул выше 33ms. Сразу понятно, где у игрока подвисает.

На видео – сырой прототип идеи, которую придумал и реализовал агент, он же сделал видео. Пока все оч сыро, но потихоньку двигаюсь к своей задумке с полностью автономной студией разработки игр. Впереди еще очень много работы.

~10 800 строк ядра, 339 автотестов.

Показать полностью
4

Делаю движок для 3D-игр на веб (ч.4)

Серия Делаю движок для 3D-игр на веб

Движок рассчитан на то, что игры в нём делает не человек, а ИИ-агенты. Вот, что добавилось в очередной итерации.

Жанровый фокус — инкрементальные симуляторы

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

Toolkit для жанра

В прошлой части садовод был самодостаточным, но при сборке второй и третьей игры выяснилось, что 60% кода каждый раз повторяется. Агент вытащил эти куски в движок: всплывающий «+1» текст над кликнутым объектом, угловые toast-уведомления, большой по центру reveal-эффект для эпических моментов, форматтер больших чисел (1.23K / 4.56M / 7.89B), автосейв по таймеру с версионированием схемы, поведения respawn-ноды и follower-пета, библиотека процедурных звуковых эффектов (coin / purchase / level-up / unlock — без бинарных файлов, через WebAudio). Третья игра стартует уже с 250 строк скриптов вместо 420.

Небольшие UI улучшения

HUD выглядел как CLI debug-overlay: моноширинный шрифт, плоские блоки, никаких эффектов. Переделали: жирный системный sans с чёрной обводкой текста, новый виджет button с rounded corners + hover/press состояниями + accent-полоской, currency-pill в углу (leaderstats-стиль с иконкой и значением), модальное окно с dim-backdrop, big center reveal для ASCEND-моментов.

Камера и звук

В Roblox-стиле free-cursor + правая кнопка крутит камеру. Реализовали как опцию controller.cameraMode: 'rmb-drag' рядом с дефолтным pointer-lock'ом. Курсор не залочивается — можно прицельно кликнуть на конкретную руду или питомца. Кадровая частота не падает при rmb-drag. Параллельно добавили camera.minY floor — камера больше не уходит под землю при больших pitch'ах (был баг: рейкаст для клика стартовал внутри collider'а земли).

Видео — Glow Rush, минутный playthrough

Записал агентом playthrough Glow Rush'а. AI реально играет: WASD ходит, клик-кликает по орбам (зелёные ×1, розовые ×2, золотые ×5), покупает Power/Speed/Magnet апгрейды как только хватает, ловит combo-streak с бонусом до +50%, нажимает ASCEND при 500 glow для большого celebrate-pop'а.

~8200 строк кода, 195 автотестов.

Показать полностью
8

Делаю движок для 3D-игр на веб (ч.3)

Серия Делаю движок для 3D-игр на веб

Движок рассчитан на то, что игры в нём делает не человек, а ИИ-агенты. Вот, что добавилось в очередной итерации.

Иерархия объектов

Раньше каждая штука в сцене висела сама по себе – нельзя было сказать «эта телега, а это её колёса, двигай вместе». Теперь можно: ставишь объекту parent: car, и он становится «приклеенным» к родителю. Подвинул машину – колёса поехали с ней. Удалил машину – колёса исчезли сами. Камера, физика и сейвы это понимают.

Сейвы

Любая игра теперь сохраняется в браузер одной строчкой api save. F5 – состояние возвращается: монеты, прогресс, анимации, иерархия. Каждая игра пишется в свой ключ, не пересекаются.

Производительность

Движок упёрся в количество draw calls – Three.js на каждый объект делает отдельный вызов GPU. Большие сцены проседали: 300 кубов = 30 fps. Сделал три слоя оптимизации: одинаковые объекты теперь отрисовываются одним вызовом, для процедурных деревьев/заборов листья сливаются в одну геометрию с per-vertex цветом. Демо-сцена «деревня» (192 объекта) упала с 480 → 199 draw calls. На реальной видеокарте уверенные 60 fps.

Игра-инкрементал

Чтобы проверить всё это в одной игре, агент сделал «садовод». Сажаешь куст → растёт через tween-анимацию → собираешь → монеты → разблокируешь цветы и деревья → апгрейды (удобрение, лучший сорт, авто-сборщик). Полностью персистится – закрыл вкладку, вернулся, всё на месте. Под капотом одновременно работают: иерархия (растение – child грядки), сейвы, частицы (искры при сборе, капли воды при посадке), tween (рост), picking (клик в центре экрана через рейкаст).

Видео – агент сам играет, ходит, прыгает, переключает три вида растений и собирает урожай.

~6900 строк кода, 136 автотестов.

Показать полностью
10

Делаю движок для 3D-игр на веб (ч.2)

Серия Делаю движок для 3D-игр на веб

Движок рассчитан на то, что игры в нём делает не человек, а ИИ-агенты. Вот, что добавилось.

Анимация персонажа

Раньше игрок был просто капсулой. Теперь – скелетный человечек с idle/walk/run/jump/fall, плавными переходами и сохранением кадра анимации в save'ах. Чтобы не таскать в репе тяжёлые модели, агент собрал процедурного «boxbot'а» – блочного человечка прямо в коде (6 «костей», 5 клипов через keyframe-tracks).

Частицы

Простая CPU-система: пыль из-под ног, облачко на прыжке, искры на сборе.

Тестовая мини-игра

Обби-уровень целиком сделал агент. Я просто сказал «сделай уровень-обби как в Роблокс». Дальше агент всё сам: пилоны разной высоты, движущаяся платформа, лава с камнями-степпингами, чекпоинты с авто-сохранением, респаун со счётчиком смертей, финиш. Агент сам же протестировал и сбалансировал — погонял тестами, нашёл что прыжки натянутые, сжал расстояния. Потом написал AI-плейера который реально проходит уровень: смотрит мышью на цель, бежит на WASD и прыгает на Space.

Видео

Видео геймплея сделано и записано тоже агентом. Нормальное видео получилось только с третьей попытки. На видео результат прогресса по движку за два дня.

Студсы

Как в Роблоксе пока не получились. Попросил агента сделать «пупырышки» на кирпичиках. Накодил canvas-генератор, тайлится по размеру грани, но ощущения «лего» нет. Больше похоже на плитку с кружочками. Доделаем позже, нужна явная объёмность.

Показать полностью
3

Делаю движок для 3D-игр на веб (ч.1)

Серия Делаю движок для 3D-игр на веб

Движок рассчитан на то, что игры в нём делает не человек, а ИИ-агент (Claude Code, Cursor и подобные). Видео примеров игр из движка будут в следующих постах.

Почему именно так. Обычные движки (Unity, Godot) – это визуальные редакторы для людей: окна, панели, мышка. ИИ-агенты умеют в них работать, но не идеально. Зато агенты отлично умеют редактировать текстовые файлы. Поэтому в моём движке вся игра – это просто папка с JSON-файлами (где что стоит) и маленькими JS-файлами (как оно себя ведёт). Открыл, поправил текст – игра обновилась.

Что внутри. Картинку рисует Three.js, физику считает Rapier (тот же, что в коммерческих движках), всё работает прямо в браузере без установки.

Что уже умеет:

  • Игрок от 3-го лица: бегает, прыгает, камера за спиной

  • Физика, столкновения, триггеры

  • Анимации, звук с 3D-позиционированием, всплывающий интерфейс

  • «Префабы» – сделал шаблон врага один раз, расставил по уровням

  • Горячая перезагрузка: правишь сцену – игра меняется на лету, не теряя позицию игрока

  • Инспектор по кнопке F2 – видно все объекты, можно мышкой подвинуть

Главная фишка – отдельный мост к Claude Code / Cursor. Агент через него умеет: проверять сцены на ошибки и подсказывать опечатки, запускать игру в фоне без окна, нажимать кнопки за игрока, гонять «робот-плейтест» (сыграть 30 раз, посчитать сколько раз победил), делать скриншоты и смотреть на них своими глазами – то есть оценивать игру как игрок, а не как программист.

Размер: ~3000 строк ядра, 50+ автотестов, всё локально, готовая игра собирается в обычный сайт и кладётся на любой хостинг.

Игры на этом движке пока очень примитивные получаются, потому что сделаны буквально только первые шаги.

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества