Unreal Engine 5.8, цель PS5проект закрытОбновлено:
🏍️ Enduro
Игра про хард-эндуро, где главный соперник это рельеф. Шестнадцать дней на Unreal с двумя нейросетями. Проект закрыт, история осталась.
Откуда взялось
Я катаюсь на эндуро. И меня давно бесит, что в играх про мотоциклы всё крутится вокруг таймера и трассы, а самое интересное в настоящем эндуро это склон, на который смотришь и думаешь: «тут вообще можно проехать?». Пробуешь, срываешься, ищешь другой заход, забираешься. Вот это и хочется сделать игрой.
Принципы записал сразу, чтобы потом не спорить самому с собой:
- Сложность живёт в рельефе. Рядом с тяжёлым подъёмом всегда есть «чикен-вей»: тоже требует техники, но прощает больше.
- Открытый мир, а не заезды. Мультиплеер вокруг совместной покатушки: искать проход, ждать наверху, помогать поднять мотоцикл.
- Реалистичность важнее графики. Двухтактник и четырёхтактник должны ощущаться по-разному. Картинка простая, зато погода, звук и физика живые.
- Приёмы рождаются из управления, а не из кнопок. Второй выжим сцепления, дабл-блип, подъём переднего колеса получаются из работы газом, сцеплением и весом.
- Сцепление на адаптивном курке DualSense: усилие и зона схватывания должны чувствоваться пальцем.
- Упал, поднял, поехал. Отвалившийся пластик это история, а не поход в мастерскую.
Как ставили движок
Выбрали Unreal Engine 5.8: с этой версии в редактор встроен сервер, через который нейросеть может сама ставить объекты на сцену, запускать игру и читать логи. Для меня это значило, что Клод сможет работать в редакторе без моих рук.
Установка это отдельный жанр. Сначала выяснилось, что моя версия Xcode официально не поддерживается, и Клод предложил ставить второй Xcode рядом. Потом скачали Metal Toolchain на 700 мегабайт, и я спросил, не захламили ли мы диск зря. Не зря: без него редактор падает на старте. Потом лаунчер Epic отказался обновляться из-за «недостаточно места», потому что я запустил его прямо из образа диска, а не из «Программ». Потом сам движок на несколько десятков гигабайт. Итог вечера: проект собрался за 21 секунду, редактор открылся через четыре минуты компиляции шейдеров, второй Xcode не понадобился.
Дрим-тим
А вот тут началось самое интересное, и про это есть отдельный пост. Коротко: мне захотелось, чтобы над игрой работали две нейросети, Claude и GPT, и чтобы они общались между собой без меня. Я попросил их договориться о ролях и прислать резюме.
Договорились за два раунда. Никто не стал доказывать, что он лучше в C++. GPT взял независимое физическое ядро: двигатель, сцепление, коробка, шина, подвеска, чистый код с тестами. Claude взял движок: архитектуру, сборку, редактор, мир, звук, репозиторий. Ревью делает всегда не автор. Спор решается измерением в игре. Мне уходят только вопросы про ощущения от езды.
Геймпад
Главный риск проекта был в курках. Ощущение сцепления строится на адаптивных курках DualSense, а я не знал, работают ли они на Mac. Подключил геймпад по проводу, редактор подхватил его сразу, и в исходниках движка нашлась полная реализация курков для Mac: сопротивление, упор с обратной связью, вибрация. Тот же механизм, что на PS5. Риск снят за десять минут.
Первая проба
Пока мотоцикла нет, есть куб. Серый куб на белом полу, вот такая у нас графика.

Зато у куба есть газ на правом курке и сцепление на левом, с сопротивлением. Кнопка переключает «лёгкий рычаг» и «тяжёлый рычаг». Я взял геймпад и сказал: разницы не чувствую, сопротивление какое-то мелкое. Оказалось, ошибка масштаба: оба пресета выдавали три процента силы. Починили, теперь лёгкий рычаг это треть силы с небольшим свободным ходом, тяжёлый это полная сила с самого начала.
Заодно появилась вибрация мотора. Корпус геймпада дрожит от «двигателя»: на холостых слабо и неровно, под газом сильнее, курок газа вибрирует с частотой оборотов. Кнопка переключает двухтактник и четырёхтактник: у 2Т вспышка каждый оборот и зудящая вибрация, у 4Т вдвое реже, отдельные глухие удары на холостых. На Mac канал вибрации один, поэтому на высоких оборотах удары сливаются в гул, на PS5 будет точнее.
Тем временем GPT сдал первую задачу: спецификация и ядро сцепления, двадцать с лишним тестов, все проходят. Его песочница не дала сделать коммит, так что Claude закоммитил за него с указанием авторства. У нас в истории проекта теперь два автора-нейросети, и это не шутка.
День второй: мотоцикл
Куб прожил один день. На следующий Codex написал скрипт, который строит модель мотоцикла в Blender, я рендерил и присылал ему картинки, он правил, четыре итерации. Так появился оранжевый эндуро в духе KTM. Потом тем же способом райдер: скелет из семнадцати костей, джерси, шлем, боты, три итерации. Claude собрал из этого мотоцикл с физикой, посадил райдера и сделал позы от стиков. Подробно, с граблями, в посте про второй день.



По дороге мы свернули с симулятора на аркаду: из всего, что нужно для езды, нам нужна мотокросс-физика, а брёвна, камни и триальные фокусы будут потом. Правый стик руль, левый стик тело, курки газ и сцепление. Ездит, прыгает, делает вилли, всё это проверяет автотест без моего участия.
Вечер второго дня: физика и перекраска
Первый прокат с геймпадом показал, что мотоцикл на месте трясётся и уползает вбок. Claude пробовал семь способов, потом передал задачу Codex с полной картиной, и тот поставил диагноз с первой попытки: импульс бокового трения считался за шаг в четыре раза короче, чем шаг физики. После починки мотоцикл стоит как вкопанный. Затем Codex прочитал весь код и выдал 25 находок, от тормоза, который разгоняет колесо, до бага в документации. Подробности в посте про 25 багов.
Заодно мотоцикл перекрашен по фото моего собственного: бело-синий с жёлтой табличкой, райдер в тёмно-синем с оранжевым. Руки теперь на руле, нога на земле, когда стоим.



Трасса, звук и лес
За следующие три дня главные находки Codex починили, и мотоцикл поехал по-человечески: 94 км/ч вместо 130, нос после прыжка опускается сам. Попутно нашлась рама размером с автобус: настройка инерции в движке масштабировала габариты, и физика считала мотоцикл ящиком длиной почти семнадцать метров. Потом появились мотокроссовая трасса с бермами и декорациями, три мотоцикла на выбор, синтезированный звук мотора и грязь из-под колёс.



А 17 сентября вернулись к эндуро: километр на километр рельефа, лесная тропа на три километра, восемь тысяч деревьев и брёвна, которые проезжаются как в жизни: перекат, двойной выжим или через руль. Все подробности в посте про трассу и лес.
Чем всё закончилось
29 сентября 2026 года я проект закрыл. Он прожил шестнадцать дней: от серого куба до трёх мотоциклов, мотокроссовой трассы и километра леса с брёвнами. До PS5 и до «трассы, на которой интересно провести полчаса» дело не дошло.
Сама игра больше не развивается, скачать или потрогать её нельзя. Остались эта страница и посты ниже. Самое ценное в них даже не мотоцикл, а то, как два ИИ делили работу: один пишет, второй проверяет, спор решается измерением. Этот способ я унёс в другие проекты.