Перейти к содержимому

Физическая головоломка нейросетью: собрать без кода

Физическую головоломку собирают текстом так же, как любую другую браузерную игру: вы описываете, что падает, чем игрок на это влияет и когда наступает победа. Zugo пишет код, проверяет сборку в песочнице и отдаёт играбельную версию примерно за минуту. Дальше идут правки в чате.

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

Что такое физическая головоломка в браузере?

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

Победа обычно формулируется как состояние: предмет добрался до цели, все мишени сбиты, конструкция выстояла заданное время. Проигрыш это невозможность продолжить, поэтому кнопка перезапуска уровня здесь не украшение, а часть механики.

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

Такая игра хорошо описывается текстом, потому что правил в ней мало: гравитация, столкновения, одно действие игрока и одно условие победы. Что вообще получается собрать одним описанием, разобрано в статье игры без кода.

Что написать в промпте?

Опишите физику словами, а не термином. Слово «физика» модель понимает как угодно, а фраза «предметы падают вниз, отскакивают от пола и останавливаются от трения» задаёт конкретное поведение.

Элемент Слабая формулировка Сильная формулировка
Мир «физическая игра» «2D-сцена, гравитация тянет вниз, тела сталкиваются»
Предметы «объекты» «деревянные ящики и тяжёлые каменные шары»
Действие игрока «управление мышкой» «клик ставит доску под курсором, доска остаётся навсегда»
Ограничение не сказано «доступно пять досок на уровень, счётчик слева»
Цель «пройти уровень» «шар должен докатиться до зелёной зоны справа»
Перезапуск не сказано «клавиша R возвращает уровень в начальное состояние»

Из шести строк критичны ограничение и перезапуск. Без ограничения решение находится заваливанием сцены предметами, и головоломки не остаётся. Без перезапуска первая же ошибка запирает игрока в мёртвой сцене.

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

Как собрать её по шагам?

  1. Опишите одну сцену, а не игру целиком. Например: «2D-физическая головоломка: слева на полке лежит шар, справа зелёная зона. Клик ставит наклонную доску, доступно пять досок. Шар должен скатиться в зону. Клавиша R перезапускает уровень».
  2. Дождитесь проверенной сборки. Простая игра собирается примерно за минуту. Перед выдачей она запускается в песочнице, и та, что не открылась, помечается неудачной вместо того, чтобы уехать к вам.
  3. Пройдите свой уровень сами. В этом жанре первое прохождение важнее любого чтения кода: вы сразу видите, слишком ли скользкий пол и не застревает ли шар в углу.
  4. Правьте по одному параметру. «Сделай шар тяжелее», «уменьши отскок», «добавь трение полу». Меняя две величины сразу, вы перестаёте понимать, какая из них дала результат.
  5. Опубликуйте в один клик. Игра получает адрес вида имя-игры.zugo.run и открывается по ссылке на любом устройстве.

Дальше уровни добавляются такими же короткими сообщениями: «добавь второй уровень, где зона выше и досок только три».

Почему физика ощущается неправильно?

Чаще всего из-за одного из трёх параметров, и все три меняются словами.

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

Второй: упругость. Ящик прыгает как мяч, потому что отскок задан общим для всех тел. Разделите: «дерево почти не отскакивает, резиновый шар отскакивает сильно».

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

Отдельная поломка касается скорости. Быстро летящий мелкий предмет иногда проходит сквозь тонкую стену, потому что между двумя кадрами он оказывается уже по другую сторону. Лечится просьбой сделать стены толще или замедлить снаряд.

Ещё одна частая жалоба звучит как «предметы дрожат и не засыпают». Стопка ящиков мелко трясётся, хотя её никто не трогает. Скажите, что тела в покое должны останавливаться полностью, и дрожание уходит вместе с ощущением недоделанности.

Как играть в это на телефоне?

Управление в физической головоломке почти всегда сводится к точке на экране, и это как раз то, что переносится на палец без переделки. Но точность падает: то, во что мышь попадает уверенно, палец промахивает, а сам палец ещё и закрывает место постановки.

Поэтому просите крупные зоны и подтверждение действия. Хорошо работает схема, где касание показывает предмет полупрозрачным, а второе касание фиксирует его: игрок видит результат до того, как потратил одну из пяти досок.

Проверять это надо на настоящем телефоне и на опубликованном адресе. Проверка в песочнице отвечает только на вопрос, запустилась ли сборка, и ничего не говорит о том, удобно ли целиться большим пальцем.

Как построить уровень, который интересно решать?

Начните с решения, а не с препятствий. Сначала придумайте, каким должен быть правильный ход игрока, потом расставьте всё остальное так, чтобы другие ходы не работали.

Хороший уровень читается за пару секунд и решается за полминуты. Если игроку непонятно, что вообще нужно сделать, это не сложность, а неясность, и лечится она не подсказкой, а перестановкой предметов в сцене.

Сложность растёт от ограничения ресурса, а не от количества предметов на экране. Три доски вместо пяти меняют задачу целиком, а десять новых ящиков просто делают сцену шумной. Про то, как формулировать такие правки короткими сообщениями, есть отдельный разбор в гайде как редактировать проект после генерации.

Сколько кредитов уйдёт?

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

Действие Кредитов
Сборка игры 6
Одна правка 3
Сборка в режиме Hi-Fi 12
Правка в режиме Hi-Fi 6

Реалистичный сценарий это сборка плюс пять или шесть правок на настройку веса, трения и уровней, то есть около 24 кредитов на игру, которую не стыдно показать. Pro стоит $25 в месяц и даёт 200 кредитов, это 33 сборки или 66 правок. Business стоит $99 в месяц.

Про Free скажем прямо: он даёт 5 кредитов, а сборка стоит 6, так что собрать игру с нуля на бесплатном тарифе не получится. Посмотреть интерфейс, галерею и клонировать готовый шаблон он позволяет.

Где границы у такой сборки?

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

Второе ограничение честнее назвать сразу: физика в браузере всегда приблизительна. Одинаковые действия могут давать чуть разный результат, и головоломка, где победа зависит от миллиметра, будет раздражать. Проектируйте уровни с запасом.

Третье: уровни это ваша работа. Генерация соберёт песочницу, где всё падает правильно, но замысел каждой сцены придумываете вы. И самая специфичная механика доводится серией правок, а не одним промптом. Отдельного физического шаблона в галерее нет, ближайшая по устройству стартовая точка это аркады из раздела игр.

С чего начать?

Возьмите одну сцену, которую можете описать двумя предложениями, и соберите её. Оценивать жанр по описанию бессмысленно, всё решается за первые тридцать секунд игры в собственный уровень.

Когда сцена начнёт вести себя правдоподобно, добавляйте уровни по одному и после каждого проходите игру целиком. Так вы заметите момент, когда сложность перестала расти и превратилась в перебор, а это главный риск жанра. Более широкий разбор промптов для игр собран в гайде как создать игру нейросетью.

Код проекта ваш, выгружается в GitHub и продолжается руками, если захочется добавить настоящий физический движок. Первая сборка начинается с описания сцены на zugo.dev.

← Все статьи