Мини-игра становится проверяемым прототипом, когда игрок может начать, выполнить понятное действие, получить реакцию игры и закончить раунд. Для примера возьмём одну комнату: персонаж собирает три жетона и избегает движущегося препятствия. Ни сюжет, ни магазин предметов, ни генератор уровней пока не нужны.
Опиши цикл до сцены
Запиши последовательность состояний:
title → playing → hit → playing → won
На title видны правило и кнопка старта. playing принимает движение и проверяет пересечения. При касании препятствия игрок теряет одну из трёх попыток: если попытки остались — короткая пауза и возврат в игру; иначе состояние game_over. После третьего жетона состояние меняется на won, ввод движения прекращается, появляется итог и кнопка повтора. Это конечный автомат, а не набор независимых экранов: переходы и причина каждого перехода должны быть явными.
Минимальная сцена
Если выбран Godot, официальное обзорное руководство по движению в 2D использует CharacterBody2D, Sprite2D и CollisionShape2D, а для направления — Input Map. Руководство CharacterBody2D и столкновения поясняет, что тело управляется кодом; перемещать его рекомендуют через move_and_slide() или move_and_collide() в physics callback, а не присваиванием координаты. Для другого движка модель может выглядеть иначе.
Попроси генератор вернуть сначала карту: Main.tscn, Player, Token, Obstacle, HUD, GameController, затем связи сигналов и точки изменения состояния. Только после согласования проси код. Если используешь Godot, проверь игровые действия left/right/up/down в Input Map. Нормализуй диагональное направление, чтобы движение по диагонали не ускорялось: это свойство выбранного управления, которое надо подтвердить игровым тестом, а не предположить по красивой анимации.
Столкновения и состояние отдельно
У персонажа — shape для движения; у жетона — область обнаружения; у препятствия — отдельная область потери попытки. При сборе жетон выключается ровно один раз, счётчик увеличивается, а событие отправляется контроллеру. При повторном кадре тот же объект не должен дать второй жетон. На пересечении границы комнаты персонаж либо останавливается, либо появляется с другой стороны — выбери одно правило заранее.
Таблица поведения делает запрос к модели точным:
| Ввод/событие | Начальное состояние | Ожидаемый переход |
|---|---|---|
| Нажать старт | title |
playing, попытки = 3, жетоны = 0 |
| Двигаться вверх и вправо | playing |
Персонаж движется по диагонали без дополнительного ускорения |
| Войти в жетон | playing |
Один жетон исчезает, счётчик +1 |
| Коснуться препятствия | playing |
Попытки −1; если 0, game_over |
| Собрать третий жетон | playing |
won, дальнейшее движение выключено |
| Нажать повтор | won или game_over |
Начальные значения восстановлены |
Это спецификация учебной механики, а не отчёт о playtest. Для прототипа можно задать измеримые критерии: новый раунд запускается за один клик; три жетона можно собрать без перезагрузки сцены; столкновение уменьшает попытки один раз за касание; победа и поражение блокируют игровое управление; повтор не сохраняет старый счёт. После реализации пройди каждую строку таблицы и записывай фактическое расхождение.
Что сохранить между запусками
Для первой версии достаточно хранить лучший счёт, а не положение каждой сущности. У Godot tutorial Saving games предлагает сначала определить, какие объекты и свойства должны пережить сессию, затем сериализовать эти данные. Здесь ключ best_tokens записывается только по окончании раунда, если новый счёт выше. Проверь отсутствующий, повреждённый и старый файл сохранения. Онлайн-таблица рекордов потребовала бы сервера и проверки данных; локальная запись не даёт ей.
Ассеты и права
Попроси модель сгенерировать placeholder-геометрию или использовать временные простые формы. Для каждого изображения, звука и шрифта зафиксируй источник, автора, лицензию, разрешённые способы использования и условия атрибуции. «Нашёл в поиске» и «модель сгенерировала» не означают автоматически, что ассет можно распространять в коммерческой игре; условия конкретного источника и инструмента надо читать отдельно. Не включай чужие логотипы, персонажей или музыку в финальную сборку без оснований на использование.
Полезный запрос: «Сначала составь схему сцены для одной комнаты в Godot и карту переходов title/playing/won/game_over. Затем перечисли input actions, collision shapes и сигналы. Не добавляй инвентарь, меню паузы, врагов кроме одного препятствия и сетевой рейтинг. Для каждого перехода назови проверку; не заявляй, что код запускался». Если нужен интерфейс сложнее игрового HUD, сравни веб-приложение; если важна запись долговременных сущностей, смотри схему базы данных.
