Как сделать аркадные гонки нейросетью: промпт и доводка
Опишите трассу, управление и условие проигрыша, и Zugo соберёт браузерную 2D-гонку: машина уклоняется от трафика на прокручивающейся дороге, скорость растёт, счёт идёт за пройденное расстояние. Сборка стоит 600 кредитов, доводка идёт короткими правками по 300 кредитов. Трёхмерная трасса и физика подвески так не появятся.
Эта оговорка определяет весь дальнейший разговор. Аркадная гонка это не симулятор, а игра про реакцию, и именно поэтому она хорошо ложится в текстовое описание.
Какие гонки реально собираются текстом?
Те, где машина это точка на экране, а дорога это движущийся фон. Вид сверху или вид сзади с прокруткой полосы вверх работают одинаково хорошо, потому что оба сводятся к простым правилам: боковое движение игрока, встречные объекты, столкновение, счёт.
Что укладывается в один промпт: уклонение от трафика, сбор ускорителей, ограничение по времени на контрольных точках, рост скорости по мере набора очков, несколько полос движения. Всё это формальные правила, и генерация с ними справляется.
Что не укладывается: настоящая трёхмерная трасса с рельефом, модель сцепления шин, дрифт как физическое явление, сетевые заезды с другими игроками. Это другой класс задач, который решается движком и командой разработки, а не описанием. Общая рамка того, что вообще получается собрать текстом, разобрана в статье может ли нейросеть сделать игру.
Промежуточный вариант, который получается неплохо: гонка на время без соперников. Вы едете по трассе с препятствиями, задача уложиться в лимит, при столкновении теряете секунды. Такая механика полностью описывается словами и почти не требует балансировки на старте.
Что назвать в промпте для гонки?
Пять вещей. Всё остальное можно уточнить правкой, но без этих пяти результат будет случайным.
| Что назвать | Зачем это нужно | Пример формулировки |
|---|---|---|
| Вид и направление | Задаёт всю схему движения | «Вид сверху, дорога прокручивается вниз» |
| Управление | Иначе будет неудобно с первой секунды | «Стрелки влево и вправо, три полосы» |
| Препятствия | Из них состоит вся игра | «Встречные машины появляются случайно» |
| Рост сложности | Без него скучно через полминуты | «Скорость растёт каждые 15 секунд» |
| Конец забега | Даёт цель и повод переиграть | «Три столкновения, потом экран результата» |
Хороший промпт целиком выглядит так: «Аркадная гонка, вид сверху, дорога из трёх полос прокручивается вниз. Машина двигается стрелками влево и вправо. Навстречу случайно появляются другие машины, столкновение отнимает одну из трёх жизней. Скорость растёт каждые пятнадцать секунд, счёт идёт за расстояние. Экран проигрыша с кнопкой перезапуска».
Внешний вид пишите отдельным предложением и в самом конце: палитра, стиль дороги, вид машины сверху. Визуальную часть править дешевле, чем механику, поэтому в первом прогоне важнее договориться о правилах.
Как устроен цикл, который делает гонку интересной?
Из трёх частей, и если хоть одна отсутствует, игра ощущается пустой независимо от графики.
Первая часть: постоянное давление. В гонке его создаёт скорость, а не таймер. Игрок должен чувствовать, что промедление наказывается само собой, без предупреждений на экране. Просите рост: «после каждых десяти обгонов скорость увеличивается на десять процентов».
Вторая часть: выбор в каждый момент. Три полосы дают выбор, одна не даёт ничего. Если препятствия появляются так, что проезд всегда единственный, игра превращается в реакцию без решения. Просите разброс: «иногда свободны две полосы, иногда одна».
Есть и обратная сторона выбора: полос не должно быть слишком много. На пяти полосах игрок перестаёт держать в голове всю дорогу и начинает смотреть только под себя, а вместе с этим исчезает планирование. Три полосы это тот размер, где решение ещё видно целиком.
Третья часть: видимая награда. Счёт крупными цифрами, отметка лучшего результата, вспышка при обгоне. Без обратной связи игрок не понимает, стало лучше или хуже, и бросает раньше. Что ещё делает браузерную игру живой, собрано в подборке игры без кода.
Что чинить первыми правками?
Правка стоит 300 кредитов, поэтому доводить дешевле маленькими шагами. Ниже частые симптомы и точная формулировка, которая их лечит.
| Симптом | Что просить в правке |
|---|---|
| Управление вязкое | «Машина должна менять полосу мгновенно, без инерции» |
| Слишком легко | «Увеличь частоту появления встречных машин вдвое» |
| Слишком резко проигрываю | «Добавь неуязвимость на одну секунду после столкновения» |
| Не видно скорости | «Добавь полосы разметки, которые ускоряются вместе с игрой» |
| Нет повода переигрывать | «Сохраняй лучший результат и показывай его на экране проигрыша» |
Проверять такие изменения лучше по одному, вопреки общему совету собирать правки пачкой. Здесь вам важно понять, какое именно изменение сделало игру живее, а слепленные три просьбы этот ответ теряют.
Ощущение скорости стоит отдельного упоминания, потому что оно почти всегда упирается не в скорость, а в детали на периферии экрана. Разметка, обочина, мелькающие объекты по краям создают его сильнее, чем реальное увеличение числа пикселей в секунду.
Сколько стоит собрать и довести гонку?
Сборка стоит 600 кредитов, правка 300, режим Hi-Fi удваивает оба числа. Free даёт 2 400 кредитов разово: это четыре сборки или восемь правок. Pro стоит $25 в месяц и даёт 20 000 кредитов, Business стоит $50 в месяц.
Считать удобнее проектами, а не месяцами. 20 000 кредитов Pro превращаются в 66 правок, если тратить их только на доводку, а аркадная гонка доходит до приятного состояния примерно за десять или пятнадцать уточнений, а не за сотню.
Сроков сборки мы не обещаем, и ориентироваться лучше на число правок, а не на секундомер. Зависимость простая: чем длиннее список механик в первом промпте, тем дольше идёт генерация и тем больше уточнений понадобится потом. Гонка с одной механикой уклонения почти всегда обходится дешевле, чем гонка, в которой сразу заказаны ускорители, чекпоинты и несколько трасс.
Сократить путь помогают шаблоны: в Zugo их 25, из них 5 игровых. Взять работающий каркас и переделать его дешевле, чем начинать с пустого экрана. Порядок шагов для игры с нуля разобран в статье как создать игру нейросетью.
Как сделать гонку играбельной на телефоне?
Заменить стрелки на касания и проверить размеры. Браузерная игра открывается с телефона по той же ссылке, и большинство людей, которым вы её отправите, откроют её именно так, а не за компьютером.
Первое, что нужно попросить: управление касанием. Рабочих схем две. Половины экрана: касание слева уводит влево, справа вправо. Или перетаскивание: машина следует за пальцем по горизонтали. Вторая приятнее, первая понятнее без объяснений, и выбирать стоит после того, как вы попробуете обе.
Второе: размеры. То, что читается на большом мониторе, на телефоне превращается в мелочь. Просите крупный счёт, крупные машины и меньше полос: три полосы на вертикальном экране работают, пять уже нет.
Третье: положение пальца. Если управление внизу экрана, рука закрывает часть дороги, и игрок не видит препятствия, которое к нему едет. Просите отодвинуть игровую зону выше или сделать зону касания прозрачной и узкой. Проверять это надо на настоящем телефоне, а не в уменьшенном окне браузера.
Чего гонка не соберётся с первого промпта?
Четыре честные границы.
- Только 2D и только браузер. Объёмная трасса, шейдеры и физика уровня движка сюда не помещаются. Это рамка продукта, а не временное ограничение.
- Соперники будут простыми. Машины, которые «умеют» ехать по трассе и бороться за позицию, это отдельная работа. Уклонение от трафика получается сразу, гонка с искусственным интеллектом противника нет.
- Баланс остаётся за вами. Генерация соберёт работающие правила, но не решит, весело ли играть. Это проверяется живыми людьми, которые садятся играть.
- Свой арт нужно приносить. Узнаваемый стиль появляется, когда вы подставляете собственные спрайты и звук, а не когда описываете их словами.
Проверка перед выдачей закрывает узкую часть риска: каждая сборка запускается в песочнице, и та, что не открылась, помечается как неудачная вместо того, чтобы уехать к вам. Пустого экрана это делает меньше, а про удовольствие от игры не говорит ничего.
Что делать, когда гонка собралась?
Дайте поиграть трём людям, которые не знают замысла, и смотрите не на слова, а на момент, когда они бросают. Чаще всего причина одна из трёх: непонятное управление, слишком резкий рост скорости или отсутствие видимого результата на экране.
Дальше публикуйте. Проект живёт на адресе вида имя-проекта.zugo.run, открывается на телефоне и на компьютере, ссылку можно бросить в чат и собрать первую реакцию за вечер. Куда выкладывать бесплатно, разобрано в статье где опубликовать игру бесплатно.
Отдельно проверьте первые десять секунд. Человек, открывший ссылку из чата, решает за это время, играть дальше или закрыть вкладку, и мешает ему обычно одно: непонятно, чем управлять. Подпись с двумя стрелками на стартовом экране стоит одну правку и заметно поднимает шанс, что забег вообще начнётся.
Если гонка понравится, соседний жанр собирается тем же способом и с той же логикой промпта: посмотрите бесконечный раннер, там та же прокрутка и другое ощущение. А самый короткий способ проверить всё это на своей идее: описать одну трассу на zugo.dev и сыграть в то, что вернётся.