Skip to content

Latest commit

 

History

History
253 lines (232 loc) · 13.7 KB

ROADMAP.md

File metadata and controls

253 lines (232 loc) · 13.7 KB

Roadmap

This roadmap is ordered by dependency and risk, not by marketing priority. Statuses describe repository state as of 2026-06-20.

Completed Foundation

  • Create multi-module Android project: :app, :domain, :game, :data, and :pose.
  • Build Compose battle and victory UI.
  • Integrate CameraX front-camera preview.
  • Integrate on-device MediaPipe Pose Landmarker.
  • Convert MediaPipe output to framework-independent pose models.
  • Implement squat state machine using hip-knee-ankle angles.
  • Emit typed exercise events.
  • Map exercise repetitions to attacks and flat damage.
  • Implement a training boss, HP flow, victory, and reset.
  • Add debug frame-source abstraction.
  • Add debug video input mode for deterministic manual testing.
  • Add a visible goblin enemy and synchronized hit-reaction animation.
  • Add a main menu with seven exercise cards and explicit selection.
  • Add scalable exercise content models and a central ExerciseCatalog.
  • Add ExerciseDetectorFactory with a ready squat detector and initially safe experimental placeholders.
  • Calculate damage from the selected exercise configuration.
  • Add menu -> battle -> victory -> menu navigation.
  • Add a debug-only simulated repetition action.
  • Add unit coverage for detector construction, squat repetition, catalog completeness, configured damage, and victory.
  • Add six configurable enemies with generated portraits.
  • Add fixed random three-enemy selection after exercise selection.
  • Guarantee at least one non-resistant matchup in every trio.
  • Add exercise weaknesses and non-blocking resistances.
  • Add timed enemy abilities that reduce player attack instead of player HP.
  • Add an extensible enemy attack timing policy.
  • Add CODEX_RULES.md for repository-wide development and delivery rules.
  • Add optional first-launch profile fields for weight, height, and sex.
  • Persist accepted repetitions as local daily exercise aggregates.
  • Add statistics with 7/30/90-day periods, exercise filtering, per-type totals, and a daily chart.
  • Add approximate calorie estimation with optional weight personalization.
  • Add 12 calorie-based progression levels and show the current level in statistics.
  • Scale enemy HP on a cubic curve from the level-1 baseline to 3x at level 12.
  • Keep debug-simulated repetitions out of fitness statistics.
  • Add functional experimental repetition state machines for pull-ups, crunches, and jumping jacks so every catalog exercise can be live-tested.
  • Use MediaPipe world landmarks with normalized 3D fallback for front-facing exercise geometry.
  • Remove horizontal screen-orientation requirements from push-up and plank detection and support knee or ankle body endpoints.
  • Move profile and statistics navigation into a main-menu drawer.
  • Add a clickable main-menu card for today's approximate calories.
  • Add settings with an in-app language selector.
  • Add a locally persisted inventory and equipment screen with body, weapon, and artifact slots.
  • Add button and swipe navigation between inventory and equipment.
  • Expand the catalog to 36 items with seven bonus types and item-specific scalable Compose icons.
  • Add three locally persisted weekly quest categories with required exercises, progress, restrictions, and fixed rare/epic/legendary rewards.
  • Add a three-week test quest rotation covering the current ISO week and two future weeks.
  • Add a sword-in-shield quest entry beside the inventory button.
  • Start players with zero artifacts and grant non-quest artifacts from resistant-matchup victories.
  • Add a custom adaptive launcher icon for APK builds.
  • Keep bottom UI actions above the Android system navigation bar.
  • Add experimental live detectors for push-up, lunge, and plank so they can produce battle attacks during real camera sessions.
  • Promote inventory into the main progression loop with a six-item starter loadout, deterministic victory rewards, named loot on victory, and save migration from prototype ownership.
  • Apply all seven bounded equipment bonus types to combat damage and timing.
  • Replace the equipment mannequin with original generated Vitruvian-style loadout art.

Current Priority: Make The Vertical Slice Reliable

  • Add unit tests for SquatDetector with synthetic pose sequences.
  • Add unit tests for BattleSession, tactical damage, victory, and enemy selection fairness.
  • Add a committed or documented test-video workflow for debug builds.
  • Verify camera rotation and front-camera mirroring on representative devices.
  • Verify debug-video orientation and skeleton alignment.
  • Test lifecycle transitions: background, resume, input switch, reset.
  • Expand project-specific coverage beyond detector, combat, data, and catalog rules into ViewModel and Compose navigation tests.
  • Add structured input/pose error reporting instead of display-only strings.
  • Measure dropped frames and inference latency on a low/mid-range device.

Exit condition: a recorded squat sequence and a live-camera session both produce stable, explainable repetition counts and complete a battle without duplicate damage.

Next: Detection Quality

  • Add temporal smoothing for noisy landmarks/angles.
  • Add hysteresis and configurable minimum phase duration.
  • Add cooldown/debounce protection against repeated events.
  • Distinguish poor visibility from insufficient squat depth.
  • Add player calibration for camera position and safe personal range.
  • Define structured form/validation feedback.
  • Evaluate side-view versus front-view detection assumptions.
  • Add detector telemetry usable in local debug tooling.

Exit condition: common invalid or ambiguous movements produce clear feedback and do not count as valid attacks.

Then: Scalable Session Architecture

  • Introduce detector factory/registry construction.
  • Introduce a session configuration model.
  • Extract enemy attack scheduling from BattleViewModel.
  • Use exercise difficulty and an optional player fitness profile in EnemyAttackTimingPolicy.
  • Extract battle/session construction from BattleViewModel.
  • Depend on narrow frame/pose contracts at the UI boundary.
  • Add pause/resume/stop lifecycle.
  • Add typed recoverable errors and retry actions.
  • Move content configuration to JSON assets or Room.
  • Add ViewModel tests with fake pose and detector sources.

Exit condition: a session can select content and exercises without hard-coded changes across the ViewModel and UI.

Content And Game Expansion

  • Calibrate and validate all six experimental detectors against real camera sessions and deterministic recorded video; promote an exercise to ready only after representative front-facing and side-view checks pass without duplicate repetitions.
  • Surface the existing basic, heavy, and critical attack types in battle UI with distinct animation, color, and optional haptic feedback; support reduced motion and do not change exercise workload or damage rules for spectacle.
  • Add multiple enemies and configurable encounters.
  • Add additional enemy ability archetypes that work within the currently selected exercise and remain configurable in content rather than UI branches.
  • Add first enemy phases that change tactics without switching exercises; require BattleSession unit coverage for every phase transition.
  • Add persistent rewards and calorie-based player levels.
  • Add local cosmetic achievements for exercise milestones, active-day streaks, resistant victories, quest completion, and inventory collection; achievements must not alter repetition validity or required movement.
  • Connect resistant-matchup victories to prototype artifact rewards.
  • Prototype weekly quests and reserve the highest item rarity for quest rewards.
  • Define and implement a data-driven production quest rotation with finite reward pools, explicit duplicate and exhausted-pool behavior, difficulty bounds, migration rules, and deterministic tests.
  • Playtest equipment acquisition pacing and tune bonus values/caps across neutral, weak, and resistant encounters; keep the physical repetition as the source of every attack.
  • Define the contract for a broader equipment/skills build loop before implementation: skill ownership, activation, stacking limits, respec rules, and the boundary that prevents progression from bypassing exercise work.
  • Complete an accessibility pass for battle and progression screens, including TalkBack semantics, scalable text, non-color tactical cues, reduced motion, optional haptics, and exercise alternatives where product rules allow.

Exit condition: all seven exercises have validated counting paths, attack types are visually and haptically distinguishable without changing workload, reward progression has no duplicate dead ends, and accessibility settings cover the main menu-to-victory flow.

Production Readiness

  • Establish product analytics that do not collect camera frames.
  • Add privacy disclosures and data-retention rules.
  • Add crash/performance monitoring.
  • Add Russian, English, German, Spanish, French, and Portuguese localization and remove hard-coded user-facing strings from the app layer.
  • Add accessibility review for UI and exercise alternatives.
  • Add release signing, CI, lint, unit tests, and instrumentation gates.
  • Define supported devices, Android versions, camera requirements, and performance floor.
  • Run a safety and claims review before public distribution.

Deferred Until Product Decisions Exist

  • Separate combat XP or a second leveling track; calorie-based levels already exist, so another progression axis needs a distinct purpose.
  • Player HP and defeat rules; failure must not encourage unsafe speed or punish a player for pausing, resting, or losing camera tracking.
  • Enemy prompts that switch exercises during one encounter; require session configuration, safe pause/rest transitions, and detector switching first.
  • Audio system and sound assets; revisit after visual and haptic combat feedback is stable.
  • Backend/accounts/cloud sync.
  • Social competition and leaderboards.
  • Monetization.
  • Multiplayer.
  • Health platform integration.
  • Procedural campaigns.
  • Medical or rehabilitation use cases.

Decision Log

  • 2026-06-20: Prioritize validation of all experimental detectors, distinct attack feedback, equipment balance, cosmetic achievements, and production quest rules before adding broader progression systems.
  • 2026-06-20: Defer separate XP, player defeat, mixed-exercise enemy prompts, and audio until their session, safety, and product purposes are defined.
  • 2026-06-19: Prefer MediaPipe world landmarks for detector geometry while retaining normalized coordinates for UI overlays and as a fallback.
  • 2026-06-19: Optimize experimental detectors for front-facing tests without removing side-view compatibility; keep all new paths marked experimental until recorded and live calibration is complete.
  • 2026-06-19: Derive player level from lifetime approximate calories using 100 * 2^level thresholds; use level 0 before 200 kcal and cap at level 12.
  • 2026-06-19: Treat catalog enemy HP as the level-1 baseline and use cubic scaling to reach exactly triple HP at level 12.
  • 2026-06-19: Make inventory a persistent progression system: six starter items, one regular equipment reward per victory, existing resistant/quest rewards, and versioned migration from prototype ownership.
  • 2026-06-19: Activate all seven equipment bonus types with caps in :game and freeze the equipped loadout at battle start.
  • 2026-06-10: Keep pose inference on device.
  • 2026-06-10: Preserve strict module boundaries between capture, pose, exercise, combat, and UI.
  • 2026-06-10: Treat repetition accuracy and explainability as the first product milestone.
  • 2026-06-10: Use camera and debug video as interchangeable frame sources in debug builds.
  • 2026-06-13: Store the optional profile and daily activity locally without accounts or camera uploads.
  • 2026-06-13: Record accepted live repetitions immediately; exclude debug simulation from user statistics.
  • 2026-06-13: Present calories as estimates based on weight, configured intensity, and assumed repetition duration.
  • 2026-06-14: Keep profile and full statistics in a main-menu drawer while retaining a visible daily calorie summary as the quick statistics entry.
  • 2026-06-14: Follow the device language with Russian as the fallback and support English, German, Spanish, French, and Portuguese resources.
  • 2026-06-14: Let players override the device language from settings while retaining the system-language option.
  • 2026-06-15: Prototype inventory and equipment before reward integration; persist equipped slots locally and keep preview bonuses out of combat.
  • 2026-06-15: Prototype three weekly quest categories with local ISO-week progress, battle-condition checks, direct quest encounter setup, and automatic inventory rewards.
  • 2026-06-15: Expand the prototype inventory to 30 items and use code-drawn item-specific icons so the collection can grow without bitmap asset churn.
  • 2026-06-16: Keep weekly quests as three active cards, but source them from a three-week rotation with distinct exercises and rare/epic/legendary rewards.
  • 2026-06-17: Start players with zero artifacts, grant non-quest artifacts from resistant victories, and keep the strongest rewards quest-exclusive.
  • 2026-06-17: Use a custom adaptive launcher icon so APK builds no longer ship the default Android placeholder icon.
  • 2026-06-17: Apply the Android navigation bar inset at the Compose app root so bottom buttons are not covered by system controls.