VIRURO
← dev

ТЗ T5 — «Как у референса»: заставка, обучение, бой и всё между ними (релизы 0.60–0.64)

Заказ владельца 25.10.2026: «открой игру в Steam, протестируй: там много визуальных эффектов, которые стоит добавить. Подготовь ТЗ на приведение игры к варианту референса — от заставки, включая обучающие вещи, и до самой игры». Набор фигур 0.59.0 (мировые силуэты в размере референса) владельцем принят — он становится опорой визуального языка.

Источники: покадровые записи референса 28.09–02.10 (docs/reference/playtest/NOTES.md, 55 разделов, 30 fps, 122 серии), прогон «как новый игрок» 25.10 (tools/ref_fresh_study.py, свежий профиль; §1.3 ниже), планки ТЗ v3.1 §10.3 (✓/○), разрыв docs/audit/T4-gap-analysis.md. Арт, тексты и имена референса не копируются (инвариант №1) — копируем ГЛАГОЛЫ сцен и их тайминги, рисуем своё.

0. Цель, рамки, принципы

Цель. Игрок, видевший референс, узнаёт в VIRURO тот же уровень «живости»: каждая сцена — цепочка событий с паузами, панели движутся, а не мигают; каждое действие имеет искру, звук и отклик; обучение ведёт за руку, но не блокирует молча.

Рамки. Android-телефон (портрет) — основной формат; Fold/планшет — проверка; десктоп — те же сцены (мышь даёт наведение и drag). Ядро правил не меняется (кроме флагов У1–У10 там, где отмечено). Сеточный пиксель-арт 24 px: фигуры набора world, доска и HUD переводятся в тот же язык.

Принципы приёмки (как раньше, S-серия): 1. Каждая сцена — покадровая лента (build/anim/<scene> → GIF на dev.html) с таймингами в пределах ±20 % от референса. 2. Десктоп-тесты сцен (*FramesTest): сцена живёт, фазы различимы, финальный кадр = состояние покоя. 3. Телефон: скриншоты на 412×892 и Fold (740×900); ничего не режется, тексты видны (правило «описания всегда видны»). 4. Симулятор 1000 забегов без крэшей при любом касании ядра; эмулятор-смок перед выкладкой. 5. Своё: названия, портреты, тексты, звуки (синтез tools/gen_sfx_*), палитра «чёрный мрамор + кость + коралл + латунь».

1. Что видно у референса и чего нет у нас — сводка

1.1 Сделано (✓, не трогаем, только полируем под новые фигуры)

Заставка-сборка (0.50), новый забег = автомат → сбор доски роями → столбы света (0.46), магазин → расстановка (S1a), ход врага с монохромом и «!» (S1b), победа в 6 с без кликов (S1c), обвал в 4 фазы + виньетка + пепел + огонь (S3/S11), гача с редкостью-событием и кузница (S7b/S10b/S14), плинко (S7c), автомат фигур (S7a), подсказки в три слоя (S10a), путь забега (S13), боссы: явление, способность видимо, бой, смерть, поражение (S8/S14), подписи взятия шести фигур (T4), обучающая партия на событиях (T3), пиксельные фигуры в размере референса (0.59.0).

1.2 Не сделано (○) — предмет этого ТЗ

# Сцена У референса (измерено) У нас Батч
A1 Старт боя панели расстановки уезжают вниз 500 мс с искрами по краям; через 1.1 с въезжает панель действий; «дин» 100 мс / 3.6 кГц на «ваш ход» ✅ 0.60.0: уход панелей с искрами, «дин» + вспышка каймы T5
A2 Взятие t+130 мс белое облако накрывает клетку целиком, тёмные осколки веером, облако редеет к 1.1 с ✅ 0.60.0: облако из пиксельных клубов T5
A3 Тень под фигурой плотный тёмный эллипс под подставкой у каждой фигуры ✅ 0.60.0: эллипс пиксельными строками T5
A4 Последняя фигура под ударом красная виньетка по периметру, пока опасность есть, красный «!»-огонёк над фигурой ✅ уже было (S3, DangerSignals.vignette) —
A5 Пропуск хода веер жёлтых искр из кнопки 200 мс, щелчок ✅ уже было (Button(sparks)) —
A6 Доска и HUD пиксельные плиты с фаской, латунный кант, чипы HUD в том же языке ✅ 0.60.0: плиты с фаской и жилками, заклёпки канта, основа скинов; чипы HUD — остаток T8 T5
A7 Подсветка ходов drag: ВСЕ легальные клетки зелёным, враг под ударом — красной рамкой, зелёный «след» на исходной ✅ 0.60.0: свет + рамка, прицел взятия; drag опцией — T9 T5
B1 Награда → казна «получить $N» выстреливает искрами, панель улетает вверх 400 мс, монеты летят в казну 1.4 с, казна считает по прилёту ✅ 0.61.0 T6
B2 Кладбище отдельный экран над уменьшенной доской: последние 5 потерянных, первая покупка $0, остальные +$3 до конца забега, «скрыть», возврат в магазин панелями ≈ 3 с ✅ 0.61.0: ядро + экран + тумблер «показывать кладбище» T6
B3 Поражение фон темнеет в бордовый 300 мс, сток и полка уезжают за края, «конец игры» раскрывается над доской 200 мс, доска стоит 1 с «местом смерти», звук 1.1 с ✅ 0.61.0 T6
B4 «Открыт новый гамбит» модалка после итогов: портрет с сиянием, условие серым, конфетти, крестик через 1 с тоста нет T6/T8
C1 Первый запуск §1.3: язык → заставка → меню без «продолжить» → диалог «начать» ✅ как есть (наш выбор языка лучше) —
C2 Наставник фигурка на светящейся подставке справа от доски, реплика ПЕЧАТАЕТСЯ 40 симв/с с тиканьем, ключевое слово оранжевым капсом, «далее» появляется после допечатки, цепочка 2–4 реплик на событие, советы по первому появлению механики (сток, высадка, взятие); ввод гейтится молча (не копируем) ✅ 0.61.0: MentorPlate в обучении и подсказках первого забега; цепочки по новым механикам — остаток T9 T7
C3 Подсказки первого забега «продумайте стратегию!» на расстановке, «!» у фигуры под угрозой с «дин», карточка врага «приближается босс» подсказки только в партии-уроке T7
C4 Меню ряд второстепенных кнопок внизу (настройки · коллекция · авторы · выход), рост кнопки 8–10 % за 80–100 мс ✅ 0.61.0: «Правила · Обучение · Настройки» (Коллекция — T8) T7
D1 Справка/коллекция один экран с вкладками: прогресс · гамбиты 97/200 с цепями и «новым» · фигуры с диаграммой · клетки с «???» · враги (5 модификаторов) · боссы-карусель · помехи (заперта) карта пути, справочник боссов, глоссарий, правила — порознь T8
D2 Разблокировки гамбитов ~40 % пула заперто условиями; диалог после поражения; цепи на портретах заперты 6 секретных, диалога нет T8
D3 Настройки «улучшенный ИИ» с пояснением под тумблером, «сбросить данные», координаты клеток, карусель скинов доски (превью 3×3) тумблеры доступности есть; остального нет T8
E1 Магазин/расстановка продажа с доски по наведению/долгому тапу, тост «открыто новое» в углу, подорожание карточек после сброса ○ T9
E2 Портреты гамбитов крупные персонажи-фигуры вместо иконок медальоны T9 (12 «семейств» по типу эффекта)
E3 Статусы и эффекты гамбитов защита — щит, благословение — нимб, капкан — зубья, стазис — лёд; у 8 гамбитов свой арт эффекта (1.5.4b) кольца; общий язык FX T9

1.3 Прогон «как новый игрок» (25.10, logs/ref/timelapse/fresh, logs/ref/bot/fresh)

Два прогона (logs/ref/timelapse/fresh, fresh2, бот-скриншоты logs/ref/bot/fresh2_*): - Флаг «первый запуск на устройстве» (FirstLaunchOnThisDevice) перезапускает игру в ПОЛНОЭКРАННОМ родном разрешении и на английском (язык — системный, экрана выбора языка нет); меню для нового игрока то же: лента-титул, «Play!», ряд «Settings · Collection · Credits · Quit», промо мобильной версии, Discord/Steam. Никаких приветственных окон. → У нас экран выбора языка при первом запуске (сделан) — оставляем, это лучше. - Сейв нельзя «обнулить» локально — Steam Cloud возвращает забег владельца (диалог сразу с «Продолжить»); значит, состояние обучения (какие советы показаны) живёт в сейве, подсказки наставника выдаются ПО СОБЫТИЮ один раз за профиль. - Наставник (кадры fresh2_0009…0013, таймлапс 93–126 с): розовая пиксельная фигурка (король с короной, ~2 клетки высотой) на зелёной круглой подставке со свечением, СПРАВА от доски на уровне её верхней трети; над ней плашка (кость, тёмная рамка, 260×100 px при 1280×720) с текстом, который ПЕЧАТАЕТСЯ (в таймлапсе 150 мс видно по 5–6 новых символов на кадр ≈ 40 симв/с); ключевое слово ОРАНЖЕВЫМ капсом («классный совет!», «ПЕРЕНЕСТИ»); кнопка «ДАЛЕЕ» под фигуркой ПОЯВЛЯЕТСЯ ТОЛЬКО ПОСЛЕ допечатки (кадр 0010 — текста половина, кнопки нет; 0013 — текст полный, кнопка есть). Пока плашка на экране, ходы не принимаются (бот 6 раз подряд пытался — «STUCK»): гейт молчаливый, что мы НЕ копируем. - Цепочка на одно событие: «Привет, это снова я! Дам тебе классный совет!» → «Если лимит фигур не исчерпан, в свой ход ты можешь ПЕРЕНЕСТИ фигуру, перетащив её из запаса!» — две реплики через «ДАЛЕЕ», триггер — в стоке появилась фигура при свободном лимите. Это тот же наставник, что в §7 NOTES (взятие, высадка): подсказки привязаны к первому появлению механики, а не к первой партии. - Расстановка: наведение на фигуру/клетку даёт карточки с язычком («Защитная клетка», «Гамбит тамплиера» — свои названия у нас), «ВПЕРЁД!» при нажатии выстреливает веером жёлтых искр (кадр 61 с) — подтверждает единый язык кнопок. - Превращение ВРАЖЕСКОЙ пешки глазами игрока (кадры 67–73 с): титул «ПРЕВРАЩЕНИЕ» над доской, вся сцена окрашивается радужным градиентом (зелёный → синий → фиолетовый → розовый → золотой за ~3 с), панель с шестью силуэтами фигур раскрывается слева направо, над доской подпись «Враг пропускает ход!», затем столб света на клетке и новая фигура белым силуэтом → цвет. У нас (S9) свой диалог для СВОЕЙ пешки; для вражеской — проверить, что сцена столба и подпись «враг пропускает ход» есть (планка 16/19 NOTES) — иначе в T5. - Подсказка угрозы в бою: красный «!» над своей фигурой под ударом и над вражеской — крошечная корона-метка «ходила последней» (кадры 57–62 с) — у нас есть (S1b).

2. Сцены — что делаем (глаголы и тайминги)

2.1 Заставка и главное меню (T7)

2.2 Первый запуск и обучение (T7)

Наш принцип сохраняется: обучение — настоящая партия 5×5 (T3), уроки идут за событиями, ввод не блокируется молча. Добавляем язык референса: - Наставник: пиксельный персонаж (своя фигура-«советник» в той же сетке 24 px, два кадра: покой и «говорит»), стоит на плашке у нижнего края (телефон) или справа от доски (ландшафт). Реплика печатается посимвольно 40 симв/с с тиканьем 3.6 кГц (−40 дБ), ключевое слово ОРАНЖЕВЫМ, кнопка «далее» (пружина 200 мс). Тап по плашке — допечатать сразу. - Цепочки: на событие — до 3 реплик («далее» между ними); пока реплика печатается, ход принимается, но подсветка целей приглушена на 50 % и над доской мелкая строка «наставник говорит…» (гейт явный, не молчаливый — §10.4). - События урока (как T3) + новые: первый магазин («сброс», «замок», «жетоны» по одной реплике при наведении/тапе), первая расстановка («перетащи фигуру на первые две линии», «продумайте стратегию!»), первый «!» угрозы («дин» + реплика), первый обвал-предупреждение, первая награда (строки итогов — «откуда деньги»). - Повтор и пропуск: «Пропустить обучение» остаётся; из настроек — «Обучение» (есть), плюс «Подсказки наставника» тумблер. - Содержимое — content/tutorial.json (RU+EN), lint-тест на пары языков; ядро не трогаем. - Приёмка: лента печати реплики (кадр на 10 символов), тест TutorialOverlayTest (цепочка, «далее», тап-допечатать), скриншоты 412/Fold на каждом шаге.

2.3 Новый забег → расстановка (T5, полировка)

Сцена S6 сделана; под новые фигуры: силуэты в столбах — чёрный силуэт сетки world (а не старого набора), посадка = белая вспышка 100 мс; маркер-скобка по садящимся клеткам — в пиксельном языке доски (2.6).

2.4 Старт боя (T5)

2.5 Бой: выбор, ход, взятие, угрозы (T5)

2.6 Доска и HUD в пиксельном языке (T5, остаток Task R)

2.7 Победа → награда → кладбище → магазин (T6)

2.8 Поражение (T6)

2.9 Боссы (T5–T6, полировка)

Сцены S8/S14 остаются; под новые фигуры — силуэты в столбах и осколки из сетки world; «пропуск» мелким текстом всю сцену (есть). Новых планок нет.

2.10 Справка, коллекция, разблокировки, настройки (T8)

2.11 Магазин и расстановка — остатки (T9)

2.12 Звук (сквозное)

Единый язык (NOTES §17): щелчок 20–70 мс на любой клик (есть), стук посадки на панели/фигуры (есть), «вжух» на движение панелей (есть), «дин» угрозы/«ваш ход» (A1), искры крупных кнопок (A5/B1), печать наставника (C2), монеты (B1), поражение 1.1 с (B3). Наведение без звука. Все — tools/gen_sfx_t5.py, слоты SoundFx.

3. Батчи, порядок и релизы

Батч Содержимое Релиз Оценка
T5 A1–A7: старт боя с искрами и «дин», дым взятия, плотная тень, виньетка «последняя фигура», искры пропуска, доска/HUD в пиксельном языке (+2 скина), подсветка светом; полировка S6/боссов под фигуры world 0.60.0 2 дня
T6 B1–B4: монеты в казну, кладбище-экран, возврат панелями, поражение с уездом панелей и «конец игры» над доской, модалка «открыт гамбит» 0.61.0 1.5 дня
T7 C1–C4: наставник с печатью и цепочками, подсказки первого забега, ряд кнопок меню, заставка под новую пешку, «что нового» 0.62.0 1.5 дня
T8 D1–D3: справка/коллекция с вкладками, разблокировки 60–80 гамбитов с диалогом, настройки (улучшенный ИИ, координаты, сброс, скины доски) 0.63.0 2 дня
T9 E1–E3: продажа с доски, тост, дорогие карточки, портреты-семейства, статусы-предметы, эффекты 10 гамбитов 0.64.0 2 дня

Порядок — по видимости для игрока: бой (60 % времени) → победа/поражение (каждая партия) → первый запуск (каждый новый игрок) → справка/коллекция → витрины. Каждый батч: гейт (lint, ядро, desktopTest, симулятор при касании ядра, сборка), эмулятор-смок, выкладка APK на сайт, dev.html с лентами, отчёт владельцу; AAB в Play — по решению владельца после проверки на телефоне.

4. Что не копируем и что делаем по-своему

5. Открытые вопросы владельцу

  1. Наставник — кто он? Предложение: «Советник» — фигура-слон с латунным моноклем, два кадра; или абстрактный «голос» без персонажа (дешевле, но слабее).
  2. Drag на телефоне: оставить тап (как сейчас) или дать drag как опцию в настройках («управление: тап / перетаскивание»)?
  3. Скины доски: сколько и какие первыми (мрамор, обсидиан, дуб, песчаник, лёд, латунь)?
  4. Порядок батчей: T5 → T6 → T7 → T8 → T9 (предложен) или сначала обучение (T7)?