До этого ты собирал игры, у которых правила и порядок действий уже были описаны. Теперь выберешь собственную небольшую игру и решишь, как она должна работать. Результат занятия — бриф на одну страницу: по нему можно начать писать код и понять, когда первая версия закончена.
Бриф — короткое описание задачи. Здесь не нужны история вымышленного мира и список возможностей на год. Нужно ответить: что делает игрок, что меняется после действия, как можно выиграть и что пока не придётся делать.
Один заполненный документ, три небольших этапа реализации и проверенный на бумаге путь к цели. Выбери один из трёх вариантов ниже или придумай свой на основе того, что уже умеешь.
Что понадобится
Практикум рассчитан на пройденные проекты: история, кликер, карточки, таймеры и Canvas-игра. Ты уже работал с массивами и объектами, обрабатывал ввод, менял состояние, проверял конец партии и делал полный сброс. Не обязательно включать всё это в одну игру. Возьми только то, что нужно для её главного правила.
Если движение и столкновения пока получаются только по готовому примеру, можно выбрать карточки с обычными кнопками. Если уверенно собираешь таймер и отменяешь старую попытку, подойдёт реакция на сигнал. Это выбор задачи по своим навыкам, а не соревнование в количестве технологий.
Шаблон брифа на одну страницу, три варианта игры, проверка масштаба и журнал решений. Заполненный пример лежит отдельно, после рабочих документов. Инструкция по работе включена в просмотрщик и ZIP.
Скачать ZIPШаг 1. Сократи идею до одного действия
Попробуй закончить фразу: «Игрок делает что-то, чтобы получить результат, но есть ограничение». Например: «Игрок подбирает посылки, чтобы доставить все на базу, но может нести только две». Здесь уже есть действие, цель и решение: в каком порядке идти за грузом.
Большая идея может звучать так: «Космический курьер с разными планетами, кораблём, торговлей и улучшениями». Первая версия — одно поле, пять посылок, база и ограниченный груз. Из неё убраны перелёты, экономика и магазин, но сохранился выбор маршрута. Это полезнее, чем оставить все системы и обещать когда-нибудь их закончить.
| Расплывчато | Можно проверить |
|---|---|
| Увлекательный сбор ресурсов | Подобранный предмет попадает в груз; доставка засчитывается только на базе |
| Сложная головоломка | Нужно выбрать ровно три разные карты, получить сумму 10 и взять карту-ключ |
| Быстрая реакция | В пяти попытках ответить на сигнал вовремя хотя бы три раза |
| Красивый интерфейс | После отказа видно его причину, после конца доступен повторный запуск |
Запиши свою фразу в brief-template.md. Если внутри получилось несколько независимых действий — например, строить, торговать, сражаться и исследовать, — выбери одно. Остальные уйдут в «Не входит в первую версию».
Шаг 2. Выбери один из трёх брифов
Это основы для самостоятельной реализации. Готового кода этих трёх игр в комплекте нет. Условия уже ограничивают размер работы, а расположение объектов, сообщения, собственное дополнительное правило и устройство проверки ты фиксируешь сам. Не смешивай три проекта в один.
Посылки: подобрать, донести, разгрузить
На одном поле лежат пять посылок. Игрок управляет персонажем, может нести две и выгружает весь груз на базе. Подобрать посылку — ещё не значит доставить её: посылка уже исчезла с поля, но до цели её нужно донести. Победа наступает после доставки всех пяти. Если груз полон, новая посылка остаётся на месте, а интерфейс объясняет, почему её нельзя взять.
Тебе знакомы движение, пересечение прямоугольников и массив предметов. Новая задача — соединить их с вместимостью и отдельной доставкой. Достаточно открытого поля без врагов и таймера. В этой игре нельзя проиграть: запиши это в брифе, чтобы не искать условие поражения при разработке.
На бумаге отметь базу и пять посылок. Пройди три рейса: две, две и одна. Размести посылки так, чтобы игроку приходилось выбирать, за какими идти в следующий рейс. В данных нужно различать предметы на поле, переносимый груз и уже доставленные посылки.
Числа и ключ: сумма с обязательной картой
Есть шесть открытых карт со значениями 1–6. Требуется выбрать ровно три разные карты с суммой 10. Карта 3 помечена ключом и обязательно должна войти в набор. Превышение суммы сразу означает поражение; после третьего выбора проверяются все условия. Выбранную карту нельзя взять второй раз.
Проверь случаи: 1 + 3 + 6 выигрывает; 1 + 4 + 5 даёт нужную сумму, но проигрывает без ключа. А 4 + 6 после двух карт — ещё не победа: нужны три. Такое ограничение заставляет планировать набор, хотя случайности в игре нет.
Ты используешь массив карт, обработчики кнопок, сумму и состояние партии. К ним добавляется обязательный элемент набора. Можешь заменить условие ключа своим столь же небольшим условием, но сначала покажи, что его реально выполнить. В первой версии не нужны скрытые карты, перемешивание, таймер и десятки уровней.
Дождись сигнала: ответ в нужный момент
В каждой попытке сначала написано «Жди», затем появляется «Нажимай». Ранний ответ и пропуск отведённого времени считаются ошибкой. В партии пять попыток; не меньше трёх верных дают победу. После результата есть кнопка «Дальше»: следующая попытка не начинается поверх предыдущей.
Соедини знакомые таймеры, состояния и ограниченное число попыток. Сигнал должен различаться текстом, а не только цветом. Задержка и время ответа — настройки. Зафиксируй границу: ответ в момент крайнего срока уже опоздал. При уходе со страницы незаконченная попытка отменяется без штрафа и запускается заново после возвращения.
Реши, сколько времени дать на ответ, и объясни свой выбор. Начни с интервала, удобного для проверки, не пытайся сразу сделать испытание предельно быстрым. В первом варианте нет звука, рекордов и сохранений. Точное прошедшее время проверяется по performance.now(), как в уроке о таймерах.
Шаг 3. Заполни одну страницу
Открой brief-template.md, сохрани свою копию рядом с будущими файлами игры и заполни поля. Markdown — обычный текст с обозначениями заголовков и списков. Его можно менять тем же редактором, которым пишешь код.
| Поле | Что записать |
|---|---|
| Действие и цель | Что делает игрок и какое наблюдаемое событие завершает задачу |
| Ограничения | Что запрещено, что расходуется, какие условия должны выполняться вместе |
| Данные | Начальные значения партии и отдельно постоянные настройки |
| Обратная связь | Что игрок увидит после принятого действия, отказа и окончания |
| Конец и рестарт | Условия исходов, запрет дальнейших действий и полный список сбрасываемого |
| Устройства | Чем управлять и где ты собираешься это проверить |
| Три этапа | Три результата, каждый из которых можно сразу проверить |
| Не входит | Конкретные возможности, которые сейчас не реализуешь |
Различай настройку и состояние. Вместимость рюкзака — настройка; текущий груз — состояние. Целевая сумма — настройка; уже набранная сумма — состояние. При рестарте настройки остаются, а партия начинается заново. Пока не нужно выбирать окончательные имена всех переменных, но важно понимать, какие данные необходимы.
Пиши этапы через результат: «можно подобрать один предмет и доставить его», затем «работает предел груза и пять предметов», затем «партия заканчивается, рестарт всё восстанавливает». Формулировки «написать JavaScript» и «сделать красиво» не подсказывают, что именно проверять.
Шаг 4. Сыграй по брифу без кода
Нарисуй поле или выпиши числа. Пройди один путь к победе, одно запрещённое действие и действие после окончания. Для каждого назови данные до и после. Если нельзя решить, что должно произойти, в код пока переносить нечего: уточни правило.
Особенно проверь совместные условия. «Сумма 10» и «выбраны три карты» — два требования. Если сумма уже набрана, условие о трёх картах всё равно нужно проверить. «Посылка подобрана» и «посылка доставлена» — два разных события. Такой разбор ловит противоречие ещё до отладки.
Сверь документ с scope-checklist.md. Для первого решения заполни decision-log.md: что выбирал, почему, какое поведение ожидал и что проверил. Не придумывай наблюдение будущего игрока — пока ты проверил лишь понятность собственных правил на бумаге.
Если трудно выбрать или сократить
Подсказка 1: не получается назвать главное действие
Представь первые десять действий игрока. Какое повторяется? Выбор карты, перемещение к посылке или ответ на сигнал? Вокруг него и строй первую версию. Предысторию персонажа можно записать отдельно.
Подсказка 2: список данных слишком большой
Для каждого значения спроси: какое правило его читает? Если ни одно правило первой версии не использует репутацию, опыт или валюту, убери эти значения. Не создавай инвентарь на двадцать ячеек, когда нужно хранить два ID посылок.
Подсказка 3: хочется добавить ещё одну систему
Проверь, можно ли сыграть законченную партию без неё. Если да, положи идею в «Не входит». Если без неё нет твоего основного правила, убери другую возможность и пересобери три этапа.
Заполненный пример — после своей попытки
Во вкладке solutions/brief-example.md описана отдельная игра «Собери ровно 10»: три разные карты, сумма и предел выборов. Она проще варианта с ключом. Сравни, насколько точно у тебя описаны окончание и рестарт; копировать тот же набор правил не обязательно.
Что чаще всего мешает начать
| Проблема | Что изменить в брифе |
|---|---|
| Есть мир и персонажи, но непонятно, во что играть | Запиши одно действие, его последствие и цель партии |
| Победа невозможна | Пройди допустимый набор или маршрут на бумаге; измени противоречащие условия |
| Нужна пока незнакомая физика, сервер или движок | Сократи задачу до уже изученных систем; новую область вынеси за первую версию |
| Получилась только новая карта лабиринта | Опиши другое решение игрока: например, подбор с ограничением груза и доставкой |
| Все три этапа заканчиваются «доделать игру» | Выдели первое принятое действие, связанное правило и законченную партию |
| Бриф разросся на много страниц | Оставь обязательные правила; варианты и будущие идеи перенеси в журнал |
Когда бриф готов
Он помещается на одну страницу, содержит все поля шаблона и использует уже знакомые приёмы. Ты можешь своими словами объяснить действие, цель, одно ограничение и то, как начинается новая партия. Есть достижимый путь к концу и три проверяемых этапа. Сохрани эту версию: если во время сборки меняешь правило, будет понятно, какое решение изменилось и почему.
Для дополнительного чтения подойдут заметки о небольшом масштабе и обзор процесса разработки. Для заполнения брифа достаточно заданий на этой странице.