# Текущий roadmap реализации Project Sacrifice Этот документ описывает ближайшие работы относительно существующего vertical slice. Полный утверждённый GDD + TDD + production roadmap находится в [`DEVELOPMENT_PLAN.md`](DEVELOPMENT_PLAN.md). Актуально на 18 августа 2026 года. ## 1. Текущее состояние Инженерная часть этапов 2 и 3 завершена: - реализованы 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; - 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-задачей и не меняет доказанную проходимость. ## 2. Принципы разработки 1. Сначала acceptance-тест, затем исправление уровня. 2. Бот использует те же команды движения и прыжка, что и игрок, без прямого перемещения персонажа или подмены физики. 3. Новый контент не добавляется, пока текущие 10 уровней не проходят обязательный регрессионный набор. 4. Изменения физики проверяются на всех уровнях, потому что скорость, импульсы и коллизии являются общими. 5. Debug APK используется для внутренней проверки; внешняя альфа собирается отдельной release-подписью. Оценки ниже указаны в рабочих днях для одного Android-разработчика при доступности дизайнера и QA на проверках. Это ориентиры, а не календарные обещания. ## 3. Этапы ### Этап 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. Художественная и звуковая альфа — P1, 8–15 дней Задачи: - утвердить самостоятельный визуальный стиль, не копирующий коммерческий референс; - заменить prototype-графику персонажа, опасностей, окружения и интерфейса; - добавить анимации движения, смерти, respawn и реакции механизмов; - добавить звуки управления, механизмов, результата и фоновую музыку; - предусмотреть независимые настройки музыки, эффектов и вибрации; - оптимизировать ресурсы для Android. Критерии завершения: - все игровые состояния визуально различимы без чтения внутренней логики; - звук не является единственным источником обязательной информации; - проект сохраняет стабильную частоту кадров на целевых устройствах. ### Этап 6. Техническая стабилизация — P0 перед внешней альфой, 4–7 дней Задачи: - проверить Android 8–16 и устройства с 2–4 ГБ памяти; - измерить frame time, память, запуск и размер APK; - протестировать сворачивание, возврат, блокировку экрана и уничтожение Activity; - добавить журналирование необработанных ошибок без персональных данных; - проверить обновление приложения поверх предыдущей версии и сохранность прогресса; - подготовить release build, отдельный application ID для тестового канала и закрыто хранимый keystore; - сформировать APK для прямой установки и AAB для Google Play Internal Testing. Критерии завершения: - нет блокирующих падений, ANR и потери прогресса; - 95-й перцентиль кадра соответствует целевым 60 FPS либо документированному минимуму 30 FPS на слабых устройствах; - release APK/AAB подписан, устанавливается и запускается на чистом устройстве; - debug-инструменты не попадают в публичную конфигурацию без необходимости. ### Этап 7. Закрытая альфа — 1–2 итерации по 5–7 дней Задачи: - привлечь 20–30 тестировщиков разного игрового опыта; - собирать по каждому уровню время, число смертей, restart и точку выхода; - разделять дефекты на блокирующие, значимые и косметические; - повторно проверять исправления ботами и ручным smoke-тестом; - определить уровни с высоким процентом выхода или неверно понятой механикой. Критерии завершения: - 90% тестировщиков завершают уровни 1–5 без помощи разработчика; - 70% завершают все 10 уровней; - отсутствуют открытые блокирующие дефекты; - все значимые дефекты имеют решение или явно принятое продуктовое решение. ## 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–3 и следующая итерация Инженерный scope этапа 2 закрыт: уровни 1–10 проходят intended route по три раза, уровень 8 имеет restart-free recovery, уровень 10 использует все три тела и сохраняет тело на lift-плите, а restart возвращает чистое состояние. Передаваемые результаты — обновлённый проект, проверенный APK и [`STAGE2_QA_REPORT.md`](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`](STAGE3_QA_REPORT.md). Следующая инженерная итерация — этап 4, перенос описаний уровней в валидируемый формат и инструменты контента. Параллельно внешний QA должен выполнить `goon-game-human-playtest`: по две ручные сессии каждого уровня без подсказок разработчика. До получения этого протокола milestone Vertical Slice нельзя называть принятым внешними тестировщиками.