Змейка нейросетью: как сделать игру-классику без кода
Змейка собирается одним описанием: поле из клеток, змея, еда, рост после каждого куска и проигрыш при столкновении. Zugo пишет код, проверяет сборку в песочнице и отдаёт играбельную версию примерно за минуту. Дальше вы правите скорость, стены и управление короткими сообщениями в чате.
Это самый предсказуемый жанр из всех, что собираются текстом. Правила известны всем, спорить в них не о чем, и первая сборка почти всегда играбельна. Интересное начинается при доводке ощущения.
Что именно получится?
Классика: поле из клеток, змея из сегментов, еда в случайной клетке, каждый съеденный кусок удлиняет хвост, столкновение с собой или со стеной заканчивает партию. Счёт равен длине или числу съеденного.
Змейка движется не плавно, а шагами по клеткам, и это её главная особенность. Скорость игры это частота шага, а не скорость пикселей, и правки формулируются именно так: «делай шаг чуть реже» вместо «сделай медленнее».
Всё перечисленное собирается с первого раза. Что ещё получается из текста, разобрано в статье игры без кода, а общий подход к промптам для игр в гайде как создать игру нейросетью.
Что написать в промпте?
Шесть строк, и первая сборка приедет почти готовой.
| Элемент | Слабая формулировка | Сильная формулировка |
|---|---|---|
| Поле | «змейка» | «поле двадцать на двадцать клеток, змея стартует из центра» |
| Управление | «стрелками» | «стрелки задают направление, назад развернуться нельзя» |
| Еда | «еда» | «одна еда в случайной пустой клетке, съеденная появляется заново» |
| Рост | не сказано | «после еды хвост становится длиннее на один сегмент» |
| Стены | не сказано | «удар в стену заканчивает партию» или «через край проходит насквозь» |
| Темп | не сказано | «змея делает шаг несколько раз в секунду и ускоряется с длиной» |
Решают здесь две строки: запрет разворота и поведение стен. Без запрета игрок нажимает противоположную стрелку и мгновенно врезается в собственную шею, а винит игру. Про стены нужно решить заранее, потому что сквозные края и смертельные стены дают две разные игры.
Остальное правится потом. Размер поля, цвет змеи, вид еды и оформление счёта меняются одной фразой уже после того, как игра запустилась.
Полезно сразу назвать и то, чего быть не должно. Фраза «никаких меню и настроек, сразу партия» экономит правку, потому что генерация иначе часто добавляет стартовый экран с выбором сложности, который вам не нужен.
Как это выглядит по шагам?
- Опишите игру двумя предложениями. Например: «Змейка на поле двадцать на двадцать. Стрелки задают направление, разворот на месте запрещён, еда появляется в случайной клетке, хвост растёт, удар в стену или в себя заканчивает партию, счёт сверху».
- Дождитесь проверенной сборки. Простая игра собирается примерно за минуту. Перед выдачей она запускается в песочнице, и та, что не открылась, помечается неудачной вместо того, чтобы приехать к вам.
- Сыграйте до проигрыша и после него. Экран «игра окончена» и кнопка новой партии забываются чаще всего, а без них игра одноразовая.
- Правьте по одному параметру. «Шаг чуть медленнее в начале», «ускоряй каждые пять съеденных», «покажи рекорд рядом со счётом».
- Опубликуйте в один клик на адрес вида
имя-игры.zugo.runи отправьте ссылку.
Правка стоит дешевле, чем попытка угадать всё заранее, поэтому первую версию имеет смысл собирать намеренно простой.
Почему змейка ощущается неудобной?
Почти всегда из-за одной из трёх вещей, и все три чинятся словами.
Первая: потерянные нажатия. Игрок быстро нажимает вверх и вправо, чтобы обойти угол, но второе нажатие приходит между шагами и пропадает. Просите запоминать последнее нажатие и применять его на следующем шаге.
Вторая: разворот убивает. Если разворот на сто восемьдесят градусов разрешён, игра наказывает за случайное нажатие, а не за ошибку планирования. Запрет обратного направления обязателен.
Третья: скорость. Слишком медленная змейка скучна, слишком быстрая неуправляема. Просите начинать спокойно и ускоряться постепенно, тогда партия сама выстраивает напряжение.
Есть и четвёртая, редкая: еда появляется под хвостом, и её нельзя взять. Скажите, что еда возникает только в пустой клетке.
Чем змейка полезна как первый проект?
Тем, что она заканчивается. У неё нет уровней, сюжета и художника, поэтому её реально довести до состояния «готово» за один вечер, а не бросить на середине, как это происходит с большими замыслами.
На ней же удобно почувствовать сам цикл работы: описал, посмотрел, назвал одну неточность, посмотрел снова. Этот навык переносится на сайты и приложения без изменений, а стоит ошибка здесь мало.
И третье: змейку понимают все. Ссылку можно отправить кому угодно, и человек начнёт играть без объяснений, а значит, обратная связь придёт про ощущение от игры, а не про то, что вообще происходит на экране.
Как сделать змейку не такой, как у всех?
Механика узнаваема, поэтому отличие создаётся правилами вокруг неё, а не графикой. Хорошо работают три приёма, и каждый добавляется одной правкой.
Первый: особая еда. Редкая золотая клетка даёт больше очков, ядовитая укорачивает хвост, замедляющая на несколько секунд снижает темп. Игрок начинает выбирать, а не просто ехать к ближайшей точке.
Второй: препятствия. Несколько неподвижных блоков на поле превращают открытое пространство в лабиринт и меняют игру сильнее, чем любая перекраска.
Третий: правила поля. Сквозные края, поле, которое сужается со временем, или зона, куда нельзя заезжать. Про то, как формулировать такие изменения короткими сообщениями, есть разбор в гайде как редактировать проект после генерации.
Как играть в неё на телефоне?
Стрелок на телефоне нет, поэтому управление нужно назвать в промпте отдельно. Рабочий вариант это свайп в четырёх направлениях, запасной это четыре крупные кнопки под полем.
У свайпов есть тонкость: короткий небрежный свайп по диагонали может прочитаться не так, как задумал игрок. Просите брать преобладающее направление и игнорировать слишком короткие движения, иначе змейка будет казаться своенравной.
Поле лучше просить квадратным и вписанным в ширину экрана. Проверять всё это надо на настоящем телефоне и на опубликованном адресе: проверка в песочнице отвечает только на вопрос, запустилась ли игра.
Сколько кредитов уйдёт?
Змейка это самая дешёвая игра из перечисленных в этом блоге, потому что механика редко требует переделки.
| Действие | Кредитов |
|---|---|
| Сборка игры | 6 |
| Одна правка | 3 |
| Сборка в режиме Hi-Fi | 12 |
| Правка в режиме Hi-Fi | 6 |
Обычный маршрут: сборка, правка на темп, правка на сенсорное управление, правка на рекорд. Примерно 15 кредитов на законченную игру. Pro стоит $25 в месяц и даёт 200 кредитов, это 33 сборки или 66 правок, Business стоит $99 в месяц.
Про Free честно: 5 кредитов меньше стоимости одной сборки, поэтому собрать змейку с нуля на бесплатном тарифе нельзя. Открыть галерею и клонировать готовый шаблон без списаний можно.
Где границы у такой сборки?
Игры двумерные и браузерные, но для змейки это ровно тот формат, в котором она и живёт, так что ограничение здесь почти незаметно.
Рекорд по умолчанию хранится в браузере игрока и не переносится между устройствами. Общая таблица лидеров это база данных, то есть подключение Supabase и работа поверх игры.
Игры на двоих по сети это тоже отдельная задача, а не строчка в промпте. И общее правило: очень специфичные механики доводятся серией правок, а не одним описанием. Код проекта ваш и выгружается в GitHub, если захочется продолжить руками.
Отдельного шаблона со змейкой в галерее нет. Пять готовых игровых шаблонов закрывают другие жанры, и ближайший по устройству это Blockfall с его сеткой и аркадным темпом. Клон любого из них бесплатен и кредиты не тратит, так что посмотреть, как собрана работающая аркада, можно и без своей сборки.
С чего начать?
Опишите поле, управление и что происходит при ударе в стену. Трёх фраз достаточно для первой партии, а всё остальное правится, когда вы уже видите змейку на экране.
Соберите базовую версию, сыграйте пару партий и добавьте одно необычное правило: именно оно отличит вашу игру от сотни таких же. Проверьте, что рекорд сохраняется, а кнопка новой партии работает, и после этого публикуйте. Начать можно на zugo.dev.