Будни вайбкодера

Enduro

Enduro: трасса, три мотоцикла, звук мотора и километр леса с брёвнами

За три дня в игре починили всё по списку Codex, нашли раму размером с автобус, построили мотокроссовую трассу, добавили два мотоцикла, звук и грязь, а потом вырастили лес с тропой на три километра. И первое видео: автопилот против бревна.

Три дня не писал про игру, потому что было некогда: всё ехало. За это время случилось столько, что хватило бы на пять постов. Коротко, по порядку.

Ночь на 15-е: починили всё по списку Codex

Из 25 находок исправлены главные: единый шаг времени, тормоз, который больше не разгоняет колесо, райдер без подъёмной силы в полёте, выход из вилли, честный сброс. Максимальная скорость стала 94 км/ч вместо 130, прыжок 1,2 секунды, после посадки нос сам опускается. Потом Codex проверил исправления и нашёл, что одно из них, про маятник, у Claude не применилось. Перекрёстная проверка работает в обе стороны.

Рама размером с автобус

Мотоцикл вяло поворачивал и лениво поднимал нос. Оказалось, настройка «масштаб инерции» в движке масштабирует не инерцию, а габариты тела. Наша рама по мнению физики была ящиком длиной 16,8 метра. Инерция по двум осям 2360 вместо 45. После починки разворот на месте за три секунды и занос на газу.

Трасса

Я попросил мотокросс как в Краснодаре: грязь, зелёная трава, трамплины, клёны. Claude написал генератор трассы из кода, Codex по правилам международной федерации разложил 873 метра: стартовая прямая, четыре бермы, стол, дабл, ритм-секция, волны. Потом декорации: ворота, арка, покрышки, тюки, флаги. Автопилот проезжает круг за 59 секунд без падений.

Трасса: бермы, покрышки, клёны
Трасса: бермы, покрышки, клёны
Грязь из-под заднего колеса
Грязь из-под заднего колеса

Три мотоцикла

Бело-синий 250 двухтактный, оранжевый 450 четырёхтактный побыстрее, и третий, который я принёс от обычного ChatGPT из браузера: он сгенерировал модель из 380 деталей, а Claude разложил её на наши шесть частей, сшил вершины и вывернул нормали наружу, потому что в игре была видна изнанка. Отдельный эпизод: Codex по моей жалобе «руль как на чоппере» опустил грипсы на 14 сантиметров.

Третий мотоцикл: модель от ChatGPT, разложенная на наши части
Третий мотоцикл: модель от ChatGPT, разложенная на наши части

Звук и грязь

Звук мотора синтезируется на лету из оборотов и нагрузки, без записей: чистый код, проверенный тестом на гармоники. Грязь летит из-под колёс пятью способами: пробуксовка, снос, накат, тормозной щит, посадка.

Кнопки, которые не нажимались

Три дня крестик и кружок на геймпаде не доходили до игры. Сначала думали, что движок на Mac их не видит. Потом Codex разобрал весь путь кнопки от геймпада до игры и нашёл: их забирал себе интерфейс движка под навигацию по меню, которого у нас нет. Отключили. В логе сегодняшней сессии крестик сменил мотоцикл 83 раза. Это я проверял.

17-е: лес

Вернулись к тому, с чего начинали, к эндуро. Мир километр на километр вокруг трассы: долина, холмы до сорока метров, гряды, скальные террасы, лесная тропа 3,2 километра, восемь с лишним тысяч деревьев, валуны, брёвна поперёк тропы. Модели ёлок, берёз и скал написал Codex, мир строится из кода за 0,8 секунды и держит больше ста кадров.

Автопилот против бревна в метр двадцать. Брёвна по моей просьбе большие, автопилот с этим пока не согласен

Это первое видео на сайте, и снято оно без меня: автопилот едет по тропе, игра сама пишет кадры. На ролике видно и лес, и главную проблему дня: автопилот полминуты штурмует первое же бревно, отъезжает и пробует снова. Я на геймпаде переезжаю его двойным выжимом, а он пока нет. Будет что показать в ролике «было и стало».

Брёвна как в жизни

Проезд бревна зависит от того, как подошёл. Поднял переднее и перекатился. Двойной выжим, второй газ в окне полсекунды, и мотоцикл запрыгивает. Сел брюхом, толкаешься ногами. Упёрся передним, стик назад и газ, закидываешь колесо. Ошибся, переброс: райдер вылетает через руль физическим телом, лежит три с половиной секунды и встаёт. Брёвна на тропе от 70 сантиметров до метра двадцать, по моей просьбе большие.

Разгон «не по снегу»

Мотоцикл буксовал так, будто едет по льду. Подняли сцепление грунта с резиной, райдер теперь сам дозирует газ при срыве заднего и давит вперёд, когда нос поднимается. До пятидесяти за 2,4 секунды.

Грабли недели

Xcode при обновлении молча удалил компонент для шейдеров, тот самый на 700 мегабайт, про который я спрашивал «зачем мы это качали». Игра встала на окне с ошибкой. Теперь я знаю зачем. И второе: мотоцикл иногда не появлялся, игра выглядела зависшей. На карте было две точки старта, движок выбирал случайно, вторая была под землёй.

Что дальше

Codex получил задачи на вторую версию райдера и мотоцикла. Автопилот надо научить брёвнам, чтобы тесты проезжали тропу целиком. Дальше камни, броды и погода. Ролики «было и стало» теперь будут в каждом посте, а потом соберём один большой на YouTube.