Files
goon-game/docs/CURRENT_ROADMAP.md

24 KiB
Raw Permalink Blame History

Текущий roadmap реализации Project Sacrifice

Этот документ описывает ближайшие работы относительно существующего vertical slice. Полный утверждённый GDD + TDD + production roadmap находится в DEVELOPMENT_PLAN.md.

Актуально на 18 августа 2026 года.

1. Текущее состояние

Этапы 0–4 завершены по primary-stage ownership:

  • реализованы 10 последовательных уровней;
  • работают движение, прыжок и мобильное multitouch-управление;
  • смерть не сбрасывает состояние уровня, тела остаются физическими объектами;
  • реализованы шипы, пила, нажимные и временные кнопки, двери, движущиеся платформы, заморозка и электричество;
  • сохраняются прогресс, лучшее время и минимальное число жертв;
  • intended route всех уровней 1–10 защищён Android acceptance-ботами: каждый маршрут выполняется по три раза через production-ввод без прямого перемещения персонажа;
  • blocker-softlock уровня 8 после истечения таймера устранён recovery relay и покрыт отдельным трёхкратным сценарием;
  • исправлено перекрытие FREEZER уровня 6, которое повторно убивало игрока на frozen stepping stone;
  • тело, доставленное пилой на PRESSURE уровня 10, фиксируется после оседания и больше не соскальзывает с плиты;
  • restart из промежуточного состояния уровня 10 очищает тела, сигналы, таймер и удерживаемый ввод;
  • Settings screen сохраняет размер и opacity touch-controls и режим вибрации; три form-factor контракта и защита от повторного held-jump покрыты device-тестами;
  • добавлены сохраняемые Standard/Large text и high-contrast режимы, видимый статус сигналов/дверей/respawn и локализованные content descriptions;
  • короткое трёхшаговое обучение не блокирует gameplay и после Skip/Done не показывается повторно;
  • экран результата разделяет текущий и лучший результаты, показывает targets, следующую цель и рабочие Level select/Replay/Next level переходы;
  • весь Canvas UI, десять названий и подсказок доступны на русском и английском; язык хранится отдельно и не меняет progress/control settings;
  • Stage 3 focused matrix: 14/14 методов без retries; UI contracts GREEN на 20:9, 16:9 и логическом 16:10 tablet viewport;
  • final Stage 3 Android 16 matrix: OK (30 tests) без filters/retries за 1,409.366 s; все intended routes 1–10, recovery/stress, lifecycle, restart и UI/persistence contracts GREEN;
  • все десять уровней и RU/EN copy перенесены из Java-констант в versioned JSON с formatVersion=1 и physicsVersion=1;
  • общий pure-Java loader/validator используется Android runtime и desktop tooling; повреждённая геометрия, версия или ссылка на signal останавливает build до APK packaging;
  • deterministic desktop exporter создаёт десять SVG и единый coordinate TSV с byte-identical результатом для неизменного каталога;
  • acceptance bots сохраняют versioned command/checkpoint trace и SHA-256 trace ID без wall-clock или прямых mutation-команд;
  • final Stage 4 Android 16 matrix: OK (30 tests) без filters/retries за 1,096.448 s; вся Stage 3 gameplay/UI матрица GREEN после JSON-миграции;
  • final integrated Android 16 matrix: 16/16 методов, 36 игровых выполнений, lifecycle и restart; wall time 9:32.496;
  • финальный debug APK проверен на Android 16: установка, холодный запуск, ZIP-структура и v1/v2-подписи корректны.

Автоматическая проходимость, устойчивость обязательных объектов и чистый restart доказаны. Внешняя понятность уровней не может быть сертифицирована самим automation-runner: две ручные сессии на уровень остаются отдельным внешним playtest-gate и не считаются выполненными этим отчётом.

Performance-оговорка: исторический критерий этапа 1 «полный прогон до 5 минут» не выполнен на текущем throttled AVD. После расширения набора до 16 методов exact final matrix занимает 9:32.496. Сокращать трёхкратные прохождения или скрывать нестабильность retries запрещено; оптимизация runner остаётся отдельной QA-задачей и не меняет доказанную проходимость.

goon-game-regression-10 сохраняет вторичную связь со Stage 1, а goon-game-level-balance — со Stage 2. Их незавершённые performance и external comprehension gates имеют primary Stage 5, поэтому завершённые инженерные этапы не содержат скрытых открытых primary-задач.

2. Принципы разработки

  1. Сначала acceptance-тест, затем исправление уровня.
  2. Бот использует те же команды движения и прыжка, что и игрок, без прямого перемещения персонажа или подмены физики.
  3. Новый контент не добавляется, пока текущие 10 уровней не проходят обязательный регрессионный набор.
  4. Изменения физики проверяются на всех уровнях, потому что скорость, импульсы и коллизии являются общими.
  5. Debug APK используется для внутренней проверки; внешняя альфа собирается отдельной release-подписью.

Оценки ниже указаны в рабочих днях для одного Android-разработчика при доступности дизайнера и QA на проверках. Это ориентиры, а не календарные обещания.

3. Этапы

Этап 0. Prototype foundation — завершён

В этот исторический этап входят базовый Android APK, character/death/corpse, Canvas physics, camera, puzzle objects, hazards, HUD/multitouch, save, unit tests и greybox-набор из десяти уровней. Он сохраняется в registry, чтобы завершённые baseline-задачи также имели явного владельца по stage.

Этап 1. Боты проходимости для уровней 1–10 — P0, 4–6 дней

Задачи:

  • выделить общий сценарный движок поверх существующего LevelPlaytestBot.Driver;
  • добавить наблюдаемые состояния: положение и скорость игрока, опора, активные сигналы, состояние платформ и дверей;
  • реализовать отдельный маршрут для каждого уровня;
  • выдавать полезную диагностику таймаута: координаты, число смертей, тела, сигналы и последняя выполненная команда;
  • запускать все сценарии одной Gradle-командой на эмуляторе;
  • исключить случайные повторы как способ скрыть нестабильность.

Критерии завершения:

  • уровни 1–10 проходят по три последовательных запуска;
  • каждый сценарий использует предусмотренную механику уровня;
  • один полный прогон укладывается в 5 минут;
  • падение теста показывает этап и состояние, на котором бот остановился.

Этап 2. Исправление уровней и баланс — P0, 4–7 дней

Задачи:

  • исправить найденные ботами тупики и нестабильные взаимодействия;
  • увеличить допуски у прыжков и зон срабатывания, не убирая смысл головоломок;
  • проверить, что тела не выталкиваются с плит и не застревают в дверях;
  • выровнять кривую сложности: знакомство, закрепление, комбинация механик;
  • уточнить подсказки и целевые показатели времени/жертв;
  • провести минимум две ручные сессии на каждом уровне.

Критерии завершения:

  • 10/10 passed в автоматическом прогоне;
  • каждый уровень впервые понимается тестировщиком не более чем за три попытки либо содержит достаточную подсказку;
  • restart всегда возвращает чистое начальное состояние;
  • после смерти невозможно потерять обязательный объект без возможности перезапуска.

Этап 3. Управление, интерфейс и доступность — P1, 3–5 дней

Задачи:

  • добавить настройку размера и прозрачности экранных кнопок;
  • улучшить зоны multitouch и визуальную обратную связь на нажатия;
  • добавить короткое обучение без блокирующих длинных окон;
  • доработать экран завершения: время, жертвы, лучший результат и следующая цель;
  • локализовать интерфейс и подсказки на русский и английский;
  • проверить контраст, масштаб текста, вибрацию и режим без вибрации;
  • корректно обрабатывать pause/resume и системную кнопку Back.

Критерии завершения:

  • игра полностью управляется на телефоне без внешней клавиатуры;
  • элементы управления не перекрывают игровую информацию на поддерживаемых экранах;
  • смена языка и настроек не сбрасывает прогресс;
  • UI проверен минимум на форматах 16:9, 20:9 и планшете.

Этап 4. Контентная архитектура и инструменты — P1, 5–8 дней

Задачи:

  • перенести описания уровней из Java-констант в валидируемый JSON-формат;
  • добавить загрузчик с проверкой геометрии, сигналов и обязательных объектов;
  • создать простой desktop-скрипт предпросмотра или экспортёр координат;
  • закрепить версию физики и формата уровня;
  • сохранять воспроизводимый журнал команд бота для расследования регрессий.

Критерии завершения:

  • геометрию и подсказки уровня можно изменить без перекомпиляции игрового кода;
  • некорректный сигнал, дверь или объект отклоняется валидатором при сборке;
  • все существующие уровни после миграции проходят тех же ботов.

Этап 5. Завершение Vertical Slice — P0/P1, 10–18 дней

Задачи:

  • утвердить самостоятельный визуальный стиль, не копирующий коммерческий референс;
  • заменить prototype-графику персонажа, опасностей, окружения и интерфейса;
  • добавить анимации движения, смерти, respawn и реакции механизмов;
  • добавить звуки управления, механизмов, результата и фоновую музыку;
  • предусмотреть независимые настройки музыки, эффектов и вибрации;
  • завершить lifecycle/process-death и versioned save migration;
  • доказать performance budget и три полных playability regression прогона;
  • провести внешний playtest уровней 1–10 без объяснений разработчика;
  • закрыть оставшийся comprehension/balance gate.

Критерии завершения:

  • все игровые состояния визуально различимы без чтения внутренней логики;
  • звук не является единственным источником обязательной информации;
  • проект сохраняет стабильную частоту кадров на целевых устройствах.
  • progress восстанавливается после Activity/process recreation и обновления приложения;
  • goon-game-milestone-vslice принят вместе с performance и human-playtest gates.

Статус на 19 августа 2026: Stage 5 принят. Инженерный candidate 0.8.0-stage5-vslice прошёл 72 JVM-теста и единый Android 16 run 35/35 (493.521 s). Владелец продукта подтвердил завершение внешнего тестирования и переход дальше; границы доступного human evidence зафиксированы в STAGE5_HUMAN_PLAYTEST_RESULT.md. Stage 6 разблокирован.

Этап 6. Production content — P1, несколько итераций

Задачи:

  • спроектировать и произвести четыре мира и 55–70 уровней;
  • расширить hazards, corpse states и weighted physical objects;
  • завершить character state machine, CorpseManager и event-driven PuzzleSystem;
  • добавить challenges, collectibles и production progression;
  • расширить модульные варианты персонажей без нарушения анимационных контрактов;
  • проводить каждый уровень через JSON validator, solution graph, bot и level DoD.

Критерии завершения:

  • все production-уровни проходят content pipeline и имеют versioned bot trace;
  • новые mechanics сначала обучаются отдельно и только затем комбинируются;
  • content не содержит blocker-softlocks и обязательных невосстановимых объектов;
  • принят goon-game-milestone-production.

Этап 7. Техническая стабилизация и release engineering — P0, 4–8 дней

Задачи:

  • проверить Android 8–16 и устройства с 2–4 ГБ памяти;
  • измерить frame time, память, запуск и размер APK;
  • протестировать сворачивание, возврат, блокировку экрана и уничтожение Activity;
  • добавить журналирование необработанных ошибок без персональных данных;
  • проверить обновление приложения поверх предыдущей версии и сохранность прогресса;
  • подготовить release build, отдельный application ID для тестового канала и закрыто хранимый keystore;
  • сформировать APK для прямой установки и AAB для Google Play Internal Testing.
  • зафиксировать gameplay analytics contract и crash/ANR reporting без персональных данных.

Критерии завершения:

  • нет блокирующих падений, ANR и потери прогресса;
  • 95-й перцентиль кадра соответствует целевым 60 FPS либо документированному минимуму 30 FPS на слабых устройствах;
  • release APK/AAB подписан, устанавливается и запускается на чистом устройстве;
  • debug-инструменты не попадают в публичную конфигурацию без необходимости.

Этап 8. Закрытая альфа — 1–2 итерации по 5–7 дней

Задачи:

  • привлечь 20–30 тестировщиков разного игрового опыта;
  • собирать по каждому уровню время, число смертей, restart и точку выхода;
  • разделять дефекты на блокирующие, значимые и косметические;
  • повторно проверять исправления ботами и ручным smoke-тестом;
  • определить уровни с высоким процентом выхода или неверно понятой механикой.

Критерии завершения:

  • 90% тестировщиков завершают уровни 1–5 без помощи разработчика;
  • 70% завершают все 10 уровней;
  • отсутствуют открытые блокирующие дефекты;
  • все значимые дефекты имеют решение или явно принятое продуктовое решение.

Этап 9. Beta — 1–3 стабилизационные итерации

Задачи:

  • объявить feature/content freeze;
  • выполнить широкую device, upgrade, save-migration и localization QA matrix;
  • исправлять blocker/critical/major defects без добавления новых mechanics;
  • повторять production bots, analytics и ручные smoke-сценарии на каждом кандидате.

Критерии завершения:

  • beta QA matrix зелёная;
  • нет blocker и critical progression defects;
  • content, format/physics versions и save migrations заморожены для RC.

Этап 10. Release Candidate

Задачи:

  • собрать финальные signed APK/AAB из воспроизводимого commit;
  • проверить store metadata, privacy, analytics и crash reporting;
  • выполнить финальный полный regression, чистую установку и upgrade path;
  • зафиксировать известные ограничения и release decision.

Критерии завершения:

  • goon-game-milestone-rc принят;
  • нет blocker/critical defects, все уровни проходимы;
  • release signatures, artifacts, remote commit и сохранность прогресса подтверждены.

4. Обязательный набор проверок каждого APK

Перед передачей тестировщикам должны выполняться:

  1. testDebugUnitTest — математика, каталог и валидация уровней;
  2. lintDebug — Android Lint без ошибок;
  3. connectedDebugAndroidTest — боты уровней 1–10;
  4. проверка APK через unzip -t;
  5. проверка package/version через aapt2 dump badging;
  6. проверка подписи через apksigner verify;
  7. установка поверх предыдущего билда и на чистое устройство;
  8. холодный запуск и проверка crash-буфера;
  9. ручной smoke-тест уровня 1 и одного сложного комбинированного уровня.

5. Завершение этапов 2–4 и следующая итерация

Инженерный scope этапа 2 закрыт: уровни 1–10 проходят intended route по три раза, уровень 8 имеет restart-free recovery, уровень 10 использует все три тела и сохраняет тело на lift-плите, а restart возвращает чистое состояние. Передаваемые результаты — обновлённый проект, проверенный APK и STAGE2_QA_REPORT.md.

Этап 3 завершён: к сохраняемым пресетам управления добавлены accessibility, неблокирующее обучение, полный result flow и RU/EN локализация. Совместный device-gate проверяет сохранность progress/settings, а UI contracts выполнены на 20:9, 16:9 и tablet-sized экране. Подробный итог находится в STAGE3_QA_REPORT.md.

Этап 4 завершён: каталог загружается из десяти JSON-ресурсов, общий validator запускается до Android packaging, а desktop-команда создаёт deterministic SVG/TSV preview. Боты публикуют versioned trace с идентификатором для диагностики регрессий; неизменность gameplay подтверждена полным Android regression. Контракт и evidence находятся в STAGE4_CONTENT_FORMAT.md и STAGE4_QA_REPORT.md. Следующая инженерная итерация — этап 5, полное завершение Vertical Slice: самостоятельный art/audio pass, lifecycle/save/performance gates и внешний playtest.

Полный registry этапов 0–10 и правила машинной привязки каждой Bead находятся в STAGE_REGISTRY.md. Production-задача четырёх миров и 55–70 уровней имеет primary Stage 6 и не остаётся вне нумерованного roadmap.

Параллельно внешний QA должен выполнить goon-game-human-playtest: по две ручные сессии каждого уровня без подсказок разработчика. До получения этого протокола milestone Vertical Slice нельзя называть принятым внешними тестировщиками.