4b5c8077d3
feat(quantik-game): фаза 0 — слой целей в движке (goal/HUD/result) Декларативный блок goal в спеке SimForge (булево SimExpr-условие победы), вычисляемый каждый кадр: фиксация результата (победа/время/попытки/звёзды), callback onGoal, HUD-оверлей (цель/звёзды/подсказка/баннер, inline SVG). API инстанса: onGoal/getResult/resetResult. Серверный validateSpec пропускает goal/game (длина выражений + escape текста, без исполнения). Аддитивно: спека без goal ведёт себя как раньше. Смоук 40/40; npm test 238 pass/8 baseline; lint:routes 0. План фичи (7 фаз) + CONTEXT. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
4.0 KiB
4.0 KiB
Phase 4: Квантовые способности + SR-комнаты
Status: ⬜ Not Started Parent plan: PLAN.md Domain: fullstack
Objective
Фирменные «квантовые» механики, дающие герою идентичность, плюс связка с флешкарт-SR: суперпозиция (раздвоение), коллапс/пауза (точный прицел), туннелирование (проход сквозь тонкую стену за «энергию», которую даёт быстрое SR-повторение).
Tasks
- Task 1: Суперпозиция: уровень с двумя телами-копиями Квантика; общий «закон» (params) рулит
обеими; цель — обе достигают порталов/условий (
goal.whenссылается на оба<id>.x/.y). Реюз существующей мульти-body физики. Визуал — две glow-точки (полупрозрачные «фантомы»). - Task 2: Коллапс/пауза-прицел: на паузе показать предсказанную траекторию (
plot trace/ пунктир) текущего закона до запуска — «прицеливание». Реюз предпросмотра старта (P1/P2). - Task 3: Туннелирование: «энергетический заряд» расходуется, чтобы пройти сквозь помеченную
tunnelable:trueстену (стена временно проницаема). Энергия в HUD. - Task 4: SR-комната: перед/в уровне — мини-сессия повторения флешкарт (реюз Tier-1 SR API, мигр.074). Правильные ответы дают «энергию туннелирования». Открыть существующий движок повторения в модалке/панели игры; начислять заряды по результату.
- Task 5: Контент: 2–3 уровня под каждую способность (обучающий + применение).
- Task 6: Тесты: суперпозиция (оба тела в
goal), расход/начисление энергии (чистая логика), проницаемость стены при заряде; смоук.
Files to Modify/Create
frontend/js/labs/_sim_engine.js— полеtunnelableу стены + расход энергии (аддитивно, документировать).frontend/js/game/quantik-game.js— способности, HUD энергии, SR-комната-модалка.- интеграция с флешкарт-SR (клиентский модуль повторения /
LSAPI). frontend/js/game/levels.js— уровни способностей.- тест(ы).
Acceptance Criteria
- Суперпозиция: победа только когда обе копии выполнили условие.
- Коллапс: на паузе виден предсказанный путь.
- Туннелирование тратит энергию; SR-повторение её пополняет; стена проницаема только при заряде.
- Без eval/эмодзи; existing симуляции/SR не сломаны; тесты зелёные; lint baseline 0.
Notes
- Имя param
eзарезервировано (число Эйлера в SimExpr) — для энергии братьenergy/charge. - SR-движок повторения уже существует — переиспользовать, не дублировать расписание.
Review Checklist
- Все задачи; аддитивность; без эмодзи/eval; тесты зелёные; lint baseline 0