← laloloops.com

MR Ventures — Production Readiness Final Report

Consolidated analysis from two independent audit sessions, with gap analysis, unified roadmap, and detailed PRDs for every pending work item
Generated 2026-05-14 · Branch analysys_roadmap_for_completion · Godot 4.6.1-stable · .NET 9.0.203 · 622/622 C# tests passing

1. Executive Summary

~75%
Core Game Mechanics Complete
~35%
Production Shell Ready
16
Ship-Critical Work Items
2
Source Audits Consolidated
Bottom line: The core gameplay loop (generators, upgrades, missions, chests, staff, executive actions, market, rank progression) is functionally solid with 622 passing C# tests and clean GDScript validation. However, the game lacks the production shell (splash, loading, FTUE, tutorial, progressive unlocks, settings, analytics, monetization) required for a shippable product. Both independent audits converge on the same core gaps.

What Works Well

What Is Missing for Shipping

2. Source Report Comparison & Gap Analysis

Two independent audits were conducted using the same codebase snapshot. This section identifies where they agree, where they diverge, and what each uniquely discovered.

Areas of Full Agreement

AreaShared FindingSeverity
Splash/LoadingCompletely missing — no branded launch experienceP1
Welcome/FTUENo first-time user flow; players see full game immediatelyP1
Progressive UnlocksAll tabs (HQ, Execs, Market, Staff, Store) visible at start; should be gatedP1
Tutorial SystemTutorialManager exists but only 2 tutorial resources wired; most first-session moments missingP1
Tab IndicatorsOnly EA/deal completion dots exist; missing mission, staff, store, upgrade, and next-best-action indicatorsP2
Settings ScreenNo user-facing settings (audio, locale, tutorial replay, support, credits)P1
AnalyticsDomainEventBus exists for testing; no production telemetry sinkP1
Monetization/IAPStore UI and offer catalog exist; purchase provider is intentionally unavailableP1
Audio/MusicNo sound system implementedP2
Competitive Pattern ViolationsMR Ventures violates 6 of 8 common idle-game patterns for first-session UXP1

Divergent Findings & Unique Contributions

FindingSourceDetailsSeverity
19 case-mismatch file paths Audit 1 Identified specific file paths with case mismatches that will break on Linux/Android (case-sensitive filesystems) P0
First-time user state machine (10 states) Audit 2 Comprehensive state machine covering fresh install, returning, corrupted, cloud conflict, no-network, app update, new scenario, progress reset P1
Save system hardening Audit 2 Corrupted-save quarantine UI, cloud adapter interface, conflict-resolution flow, migration verification P1
Analytics event schema Audit 2 Detailed 19-event minimum launch schema with payload definitions P1
CI gate promotion Audit 2 GDScript, publish settings, resource validation, smoke test, export gates should be promoted from advisory to required; Godot version mismatch (CI uses 4.5.1, project declares 4.6) P1
Market card state model expansion Audit 2 Cards should show slot-capped, cash-short, buyable, newly unlocked, and owned states P2
Gem speedup implementation Audit 1 Use gems to speed up EA timers and generator cycles; critical for gem sink economy P2
Celebration animations Audit 1 Rank-up, evolution, milestone, generator acquisition celebration sequences P2
Financial education popups Audit 1 Contextual educational moments at key first-time actions P2
Finley mascot guide system Audit 1 Speech bubble guide character for tutorials and tips P3
A/B testing & remote config Audit 1 Framework for testing FTUE variants, economy tuning, and monetization placement P3
Device matrix & export verification Audit 2 Verified export stripping of test autoloads, safe-area layout, device compatibility matrix P1
Scenario resource validation CLI Audit 2 Automated validation of all scenario data resources across environments P2
Privacy/legal compliance Audit 2 Privacy consent flow, COPPA/GDPR considerations for analytics and ads P1
Accessibility improvements Audit 1 Screen reader support, color-blind modes, text scaling P3

3. Current State Snapshot

MetricValue
C# Files253
GDScript Files101
Scenes (.tscn)58
C# Unit Tests622 passed, 0 failed
Bridge Tests21 passed
GDScript ValidationPassed
Publish SettingsAll checks passed
Build Warnings495 (C# build)
Generators (prod)8 generators, 48 chapter resources
EAs/Deals (prod)696 resources
Staff (prod)48 members, 56 staff-slot resources
LocalizationEN + ES, two CSV files
Godot Version4.6.1-stable
.NET Version9.0.203

System Readiness Matrix

SystemStatusNotes
Generator EconomyDONEFormula-driven, clamp systems, cost snapshotting
Rank ProgressionDONE30 ranks, 5 chapters, RP-driven
MissionsDONEDynamic + scenario, chest rewards
Chests & DropsDONETier gating, pity system, first-rare/epic guarantees
Staff SystemDONE48 staff, assignment, XP, milestones
Executive ActionsDONETimer, rewards, RP, cost snapshotting
MarketDONEVentures + research, acquisition flow
HQ UpgradesDONEGem-based upgrades with rank gating
Store/OffersPARTIALUI + catalog exist; no purchase provider
Offline EarningsDONE30% rate, 12h cap, popup exists
Save/LoadPARTIALWorks for local; no cloud, no corruption recovery UI
LocalizationDONEEN/ES with content pipeline
Splash/LoadingMISSINGNo splash, loading, or welcome screen
FTUE/TutorialMISSINGTutorialManager exists; only 2 resources wired
Progressive UnlocksMISSINGAll tabs visible at start
Tab IndicatorsPARTIALOnly EA/deal completion dots
SettingsMISSINGNo settings screen at all
AnalyticsMISSINGDomain events for testing; no prod sink
IAP/AdsMISSINGProvider interface exists; no platform integration
Audio/MusicMISSINGNo implementation
Cloud SaveMISSINGNo cloud provider
CelebrationsPARTIALBasic popups exist; no animated sequences

4. Unified Roadmap

This roadmap merges findings from both audit sources into a single prioritized list. Items are ordered by shipping criticality, not effort.

P0 — Blockers (Before Any Playable Release)

WI-001: Fix case-mismatch file paths
19 file path case mismatches that will break on Linux/Android case-sensitive filesystems. App will crash or show missing textures on target platforms.
XS Audit 1
WI-002: Required clean-launch smoke test
Automate a test that verifies the game can reach first playable gameplay from a fresh state without runtime errors.
S Audit 2

P1 — Ship-Critical (Before Production Launch)

WI-003: Splash & loading screen
Branded splash scene, loading progress bar with tips, failure fallback. Prevents blank app launch.
S Both PRD →
WI-004: Welcome / FTUE flow
Welcome screen introducing the game fantasy, scenario context, and guided first session from first tap to first mission complete.
M Both PRD →
WI-005: Progressive feature unlocks
Centralized FeatureVisibilityService controlling tab/section visibility based on rank, state flags, and scenario progress.
M Both PRD →
WI-006: Tutorial system activation
Wire TutorialManager to 12+ first-session game events. Create tutorial resources for first generator, upgrade, mission, chest, EA, deal, staff, rank-up, market, staff assignment.
M Both PRD →
WI-007: First-session mission sequence
Ensure first missions are completable within target pacing (2-4 minutes), rewarding, and clearly connected to the progression loop.
S Audit 1
WI-008: Settings screen
Gear icon accessible from all states. Audio toggle, locale selector, tutorial replay, support link, credits, version info, progress reset.
S Both PRD →
WI-009: Save system hardening
Corrupted-save quarantine UI, versioned migration verification, save integrity checks, recovery/reset dialog.
L Audit 2 PRD →
WI-010: Analytics foundation
AnalyticsService adapter with minimum 19-event launch schema. First-launch, tutorial, economy, monetization, retention, and error events.
M Both PRD →
WI-011: IAP integration / purchase provider
Wire platform purchase/ad providers behind existing interfaces. Sandbox testing for purchase, restore, failure, and ad availability flows.
XL Both PRD →
WI-012: CI gate promotion
Promote GDScript, publish settings, resource validation, smoke launch, and export build from advisory to required CI checks. Fix Godot version mismatch (CI 4.5.1 vs project 4.6).
M Audit 2 PRD →
WI-013: App icon, export configuration, and mobile readiness
Production export dry-run, test autoload stripping, safe-area layout verification, device matrix QA.
L Both PRD →
WI-014: Privacy and legal compliance
Privacy consent flow for analytics and ads. COPPA/GDPR/CCPA considerations. Privacy policy URL.
M Audit 2

P2 — Important (Before Retention-Ready Launch)

WI-015: Tab notification badges
Priority-ranked badge system for all 5 tabs plus generator cards. Triggers include completed EA, mission chest, staff assignable, affordable upgrade, store offer.
M Both PRD →
WI-016: Next-best-action indicators
Global arbitration service that determines the single most impactful action for idle players. Shows contextual indicator after 10+ seconds idle.
M Audit 1
WI-017: Market card state model expansion
Market venture cards show slot-capped, cash-short, buyable, newly unlocked, and owned states with distinct visual treatment.
M Audit 2 PRD →
WI-018: Gem speedup implementation
Spend gems to skip/accelerate EA timers and generator production cycles. Critical gem sink for F2P economy balance.
M Audit 1 PRD →
WI-019: Celebration animations
Animated sequences for rank-up, generator evolution, milestone achievements, and generator acquisition.
M Audit 1 PRD →
WI-020: Sound & music system
Background music, SFX for actions/rewards, haptic feedback on key moments. Mute setting respected from first frame.
L Audit 1
WI-021: Financial education popups
Contextual educational moments at first cash, first upgrade, first deal, first staff, first offline return.
M Both PRD →
WI-022: Scenario resource validation CLI
Automated validation of all scenario data resources across dev/prod environments. Reports missing, invalid, or orphaned resources.
M Audit 2
WI-023: Progression probes
Reports for first 5-minute pacing and G3-G8 unlock timing to verify economy bands in live play.
S Audit 2
WI-024: Staff onboarding polish
First staff drop, first assignment, and empty staff-tab states polished for clarity.
S Both
WI-025: Offline earnings rate explanation
Show the offline rate (30%), earning calculation, and time cap (12h) in the offline popup.
XS Audit 1
WI-026: Empty state guidance
When tabs have no actionable content, show guidance text instead of empty space (e.g., Staff tab with no staff).
S Audit 1

P3 — Post-Launch Polish

WI-027: Cloud save
Cloud save adapter, conflict resolution UI, cross-device sync.
L Both PRD →
WI-028: Finley mascot / guide character
Animated speech bubble guide for tutorials, tips, and celebrations. Market Research portrait already exists.
L Audit 1
WI-029: A/B testing framework
Test FTUE variants, economy tuning, monetization placement, and feature rollout.
M Audit 1
WI-030: Remote config / LiveOps
Server-side economy tuning, feature flags, event scheduling.
L Both
WI-031: Rewarded ad hooks
Ad-double offline earnings, ad-boost production, ad-skip EA timer. Frequency caps.
M Audit 1
WI-032: Premium chest purchase
Buy higher-rarity chests with gems or IAP.
M Audit 1
WI-033: Accessibility improvements
Screen reader support, color-blind modes, text scaling, touch target sizing.
M Audit 1
WI-034: Additional locales
Beyond EN/ES: PT, FR, DE, IT, JA, KO, ZH based on target market data.
S per locale Audit 1
WI-035: Visual polish pass
Consistent theming, animation quality, visual regression snapshots for mobile viewports.
M Both

5. PRD: Splash & Loading Screen

WI-003: Splash & Loading Screen

P1 S Sources: Both audits

Problem: The app currently launches directly into the full gameplay dashboard with no branded transition. This feels unprofessional and prevents proper resource loading.

Goal: Display a branded splash followed by a loading screen with progress indication before any gameplay UI appears.

Requirements

  1. Engine splash — Configure project.godot boot splash with MR Ventures branding (logo + background color). Auto-advance after 1.5s.
  2. Game splash scene — MR Ventures logo animation (simple fade/scale), studio mark (optional). Transitions to loading.
  3. Loading scene — Progress bar or progress indicator, rotating business-themed tip text (localized), failure fallback with retry/exit options.
  4. Responsive on slow loads — Loading screen must remain interactive (no frozen frame). Inject-able delay for testing.
  5. Transition — Smooth transition to Welcome (first launch) or Gameplay (returning player).

Content/Assets Required

AssetOwnerStatus
Game logo (high-res)ArtApp icon exists; splash logo needed
Studio markArtNot found; optional
Splash backgroundArtBrand-appropriate gradient or image
Loading tip strings (EN/ES)Content5-8 rotating tips, localized

Technical Notes

  • Scenes: scenes/ui/splash.tscn, scenes/ui/loading.tscn
  • Loading scene uses Godot's ResourceLoader async loading with progress callback
  • Route: MainNode decides next scene based on save state (fresh vs returning vs corrupted)

Definition of Done

  • Branded splash displays before any gameplay
  • Loading screen shows progress and does not appear frozen
  • Failure during load shows retry/fallback, not crash
  • Returning players skip welcome, go to gameplay after loading
  • Tip text is localized (EN/ES)

Test Cases

  • Fresh install → splash → loading → welcome
  • Returning player → splash → loading → gameplay
  • Injected 10s delay → loading remains responsive
  • Failed resource load → error/retry shown, no crash

6. PRD: First-Time User Experience (FTUE)

WI-004: Welcome & FTUE Flow

P1 M Sources: Both audits

Problem: New players see the full game at once with no guidance. Competitive analysis shows all successful idle games start with 1-2 visible systems and a guided first 5 minutes.

Goal: Guide new players through their first session so they understand the core loop (earn → upgrade → mission → chest → rank) within 5 minutes.

Welcome Flow (One-Time)

StepScreenPlayer SeesPlayer ActionPurposeSkip?Save Flag
1WelcomeFinley + "Welcome to MR Ventures" + taglineTap "Begin Your Journey"Establish game fantasyNowelcome_seen
2Scenario Intro"You start with a small investment and a big dream..."Tap "Let's Go"Set narrative contextNoscenario_intro_seen
3First GeneratorDashboard with G1 spotlighted, dimmed backgroundTap generator to produceTeach tap-to-earnNofirst_tap_done
4First CashCash counter animates up, brief celebrationContinue tappingPositive reinforcementSoftfirst_earn_done
5First UpgradeUpgrade button glows when affordableTap upgradeTeach reinvestmentNofirst_upgrade_done
6Mission IntroductionMission bar highlightedAcknowledgeIntroduce goal structureSoftmission_intro_done
7First Mission CompleteMission completion + chest popupClaim chestTeach reward loopNofirst_chest_done
8First Staff (if earned)Staff tab spotlightView earned staffIntroduce collectionSoftstaff_intro_done
9First Rank-UpRank-up celebration, HQ tab unlocksExplore HQCelebrate milestoneSoftrank_up_intro_done
10Market IntroductionMarket tab + available venturesBrowse marketPortfolio expansionSoftmarket_intro_done
11First EAExecs tab spotlightStart first EAStrategic investmentSoftea_intro_done
12Staff AssignmentGenerator detail Team tabAssign staffTeach bonusesSoftstaff_assign_done

First-Time User State Machine

StateFirst ScreenSave BehaviorTutorial Behavior
Fresh install, no saveSplash → Loading → WelcomeCreate save after first playableRun full FTUE
Fresh install, cloud save foundCloud restore choiceNo local save until choice resolvedUse restored flags or FTUE
Returning local saveSplash → Loading → GameplayLoad save, calculate offlineSkip completed tutorials
Returning, cloud conflictConflict resolverPreserve both until choiceSuppress during resolution
Corrupted saveRecovery dialogQuarantine bad savePreserve flags if recoverable
After app updateLoading → migrationRun versioned migrationsShow only new-feature tutorials
Long offline returnGameplay + offline popupCalculate once, mark claimedFirst offline tutorial only once
New scenarioScenario introNew scenario file, global preservedScenario intro, not full FTUE
Progress resetConfirm → fresh welcomeDelete after confirmationRestart tutorials
No networkLocal gameplayLocal save, queue syncNo forced change

Definition of Done

  • New player sees welcome and understands first goal within one screen
  • Core loop (earn → upgrade → mission → reward) demonstrated within 5 minutes
  • All tutorial save flags persist across restarts
  • Returning players never repeat completed tutorials
  • Skip/replay accessible from Settings
  • All text localized (EN/ES)

7. PRD: Progressive Feature Unlocks

WI-005: Progressive Feature Visibility

P1 M Sources: Both audits

Problem: All 5 tabs and all systems are visible from the start. This overwhelms new players and violates the universal idle-game pattern of progressive disclosure.

Feature Visibility Schedule

SystemRecommended StateCurrent StateUnlock Trigger
Dashboard / GeneratorsOPEN AT STARTOpenAlways visible
Upgrade ButtonOPEN AT STARTOpenAlways visible
Mission BarOPEN AT STARTOpenAlways visible
Rank DisplayOPEN AT STARTOpenAlways visible (simplified)
HQ TabVISIBLE BUT LOCKEDOpenRank 2 or first EA complete
Execs TabHIDDEN UNTIL UNLOCKOpenFirst generator at GC1 or first EA available
Market TabVISIBLE BUT LOCKEDOpenG2 visible as preview; active at Rank 3
Market ResearchHIDDEN UNTIL UNLOCKLock icon shown2 generators + 120s runtime
Staff TabHIDDEN UNTIL UNLOCKOpen (48 locked roster)First staff earned from chest
Store TabHIDDEN UNTIL UNLOCKVisible, content locked at Rank 4Rank 4 + gem value taught
SettingsALWAYS ACCESSIBLEMissingGear icon, always visible
Offline ReturnAFTER FIRST RETURNWorksFirst meaningful return
Gem SpeedupHIDDEN UNTIL UNLOCKMissingAfter Rank 2 gem grant

Technical Approach

  • Create FeatureVisibilityService (pure C#) that evaluates visibility rules against player state
  • Rules use min_rank, save flags, and state conditions (like "has_staff" or "gems_earned")
  • Bottom navigation bar reads visibility state from the service on state change events
  • Tab animations for unlock moments (slide-in, glow, one-time celebration)

Definition of Done

  • Fresh player sees only Dashboard + Mission Bar + Rank at start
  • Each tab unlocks individually with visual announcement
  • Unlock triggers match the table above
  • Visibility state persists across restarts
  • No tab shows empty or useless content when first unlocked

8. PRD: Tutorial System Activation

WI-006: Tutorial System Activation

P1 M

Current State: TutorialManager autoload exists with priority sorting, ShowOnce logic, and save-backed shown IDs. Only 2 tutorial resources are wired (Market Research, HQ Upgrades).

Required Tutorial Resources

Tutorial IDTrigger EventTarget UIBlocking?Priority
tutorial_welcomeFirst launch, no saveWelcome screenYes100
tutorial_first_generatorDashboard loaded first timeG1 card spotlightSoft90
tutorial_first_upgradeCash reaches upgrade costUpgrade button glowNo80
tutorial_missionsFirst mission visibleMission barNo70
tutorial_first_chestFirst mission completeChest popupYes90
tutorial_staff_introFirst staff earnedStaff tabNo70
tutorial_rank_upRank 2 reachedRank-up popup + HQNo80
tutorial_marketMarket tab unlocksMarket tabNo70
tutorial_market_researchMR conditions metResearch tabYes (existing)80
tutorial_first_eaFirst EA availableGenerator detail OpsNo70
tutorial_staff_assignStaff + empty slot availableGenerator detail TeamNo60
tutorial_hq_upgradesHQ tab first openHQ section (existing)No60
tutorial_offline_returnFirst meaningful returnOffline popupNo50
tutorial_storeStore tab unlocksStore sectionNo40

Definition of Done

  • All listed tutorial resources created as .tres files
  • DomainEventBus subscriptions in TutorialManager for each trigger
  • ShowOnce flag persists and prevents repeats
  • Tutorial replay option accessible from Settings
  • Tutorial skip option for advanced players
  • All tutorial text localized (EN/ES)

9. PRD: Tab Badges & Attention Indicators

WI-015: Tab Badges & Attention Indicators

P2 M

Indicator Priority System

PriorityIndicatorsRule
P0 CriticalFirst affordable upgrade, completed required EA/deal, completed scenario mission, rank-up pendingOnly one P0 active at a time
P1 HighMission chest ready, G2 buyable after slot unlock, staff assignable to open slot, Market Research unlockedVisible but suppressible if P0 exists
P2 ReminderOffline return ready, HQ upgrade affordable, newly unlocked contentNon-urgent reminders
P3 PromoStore offer, rewarded ad multiplier, optional premium chestNever during first 5 minutes

Tab Badge Triggers

Tab / SurfaceShow WhenClear When
Market tabEA or Deal completes (reward ready)Reward collected
HQ tabEnough gems for available upgradeUpgrades purchased or gems below threshold
Execs tabEA completes, reward ready to claimAll completed EA rewards claimed
Staff tabNew staff earned and not viewed, or unassigned staff with available slotsStaff tab opened + staff viewed, or staff assigned
Store tabNew offer unlocked at current rankStore tab opened and offers viewed
Generator cardEA/Deal reward ready for this generatorReward collected
Mission barMission progress reaches 80%+Mission completed and claimed
Upgrade buttonPlayer has enough cash to upgradeGenerator upgraded or cash drops

Definition of Done

  • Red dot indicator on each applicable tab/surface
  • Priority arbitration prevents indicator overload
  • Indicators clear correctly after action taken
  • No stale indicators after app restart

10. PRD: Settings Screen

WI-008: Settings Screen

P1 S

Required Settings

SettingTypeDefaultPersisted
Music VolumeSlider 0-100100Yes (user prefs)
SFX VolumeSlider 0-100100Yes
Haptic FeedbackToggleOnYes
LanguageDropdown (EN/ES)System localeYes
Replay TutorialButtonN/AResets tutorial flags
Support / ContactLinkN/AN/A
CreditsLink/screenN/AN/A
Privacy PolicyLinkN/AN/A
Version InfoLabelN/AN/A
Reset ProgressButton (confirm dialog)N/ADeletes save

Access

  • Gear icon in top-right of dashboard, always visible
  • Opens as popup/overlay, not a full screen transition
  • Audio settings respected from first frame (including splash)

11. PRD: Save System Hardening

WI-009: Save System Hardening

P1 L Source: Audit 2

Current State: SaveService loads local JSON saves and handles version migration. No user-facing recovery UI for corrupted saves. No cloud support.

Requirements

  1. Corrupted Save Detection — JSON parse failure, missing required fields, invalid version all trigger recovery path
  2. Recovery Dialog — When corruption detected, show user-facing dialog: "Save data appears corrupted" with options: Retry, Restore from Backup, Start Fresh
  3. Backup Strategy — Auto-backup save file on each successful save (keep last 3 backups). Backup in separate directory from primary save.
  4. Quarantine — Move corrupted file to quarantine directory (don't delete). Include timestamp and error reason.
  5. Migration Verification — After running versioned migration, validate result before overwriting. Rollback on validation failure.
  6. Integrity Hash — Optional SHA256 checksum stored alongside save to detect file tampering/corruption.

Test Cases

  • Write invalid JSON to global_profile.json → recovery dialog shown
  • Delete required save field → migration or recovery triggered
  • App closed during save write → backup auto-restores
  • Version migration from older save → data preserved, no loss
  • Successful save → 3 recent backups maintained

12. PRD: Analytics Foundation

WI-010: Analytics Foundation

P1 M

Current State: DomainEventBus and EventRecorder exist for MCP-based testing. No production telemetry sink, schema validation, or analytics SDK.

Architecture

  • AnalyticsService (pure C#) — accepts events, validates schema, dispatches to sink
  • AnalyticsSink interface — implemented by production SDK adapter (Firebase, Amplitude, etc.) and debug logger
  • Leverage existing DomainEventBus subscriptions in EventRecorder as reference
  • Every event includes: player_id, session_id, app_version, platform, scenario_id, global_rank, save_state, tutorial_state, elapsed_time_since_launch

Minimum Launch Event Schema

EventTriggerExtra Data
app_launch_startedApp entry pointlaunch_type (fresh/return/update)
splash_screen_shownSplash displayed
loading_startedLoading begins
loading_completedLoading finishesduration_ms
loading_failedLoading errorerror_type
new_player_detectedNo save found
returning_player_detectedValid save foundoffline_duration
welcome_screen_shownWelcome displayed
welcome_continue_clickedPlayer taps continue
tutorial_startedTutorial beginstutorial_id
tutorial_step_completedStep finishedtutorial_id, step_index
tutorial_skippedPlayer skipstutorial_id, step_index
first_generator_seenG1 visible
first_cash_earnedFirst productionamount
first_upgrade_completedFirst upgradegenerator_id, level
first_mission_completedFirst mission donemission_id
first_chest_earnedFirst chest openedrarity, staff_id
rank_increasedRank upold_rank, new_rank
first_session_endedFirst session closeduration, rank, generators

Dependencies

  • Analytics provider selection (Firebase Analytics, Amplitude, or custom)
  • Privacy consent flow (WI-014)

13. PRD: Monetization & IAP Integration

WI-011: IAP Integration / Purchase Provider

P1 XL

Current State: Store UI, offer catalog, and StorePurchaseProviders.cs interface exist. Active provider is UnavailableStorePurchaseProvider. No rewarded ad SDK, receipt validation, purchase restore, or platform credentials.

Requirements

  1. Platform IAP Provider — Implement Apple StoreKit / Google Play Billing behind existing IStorePurchaseProvider interface
  2. Receipt Validation — Server-side or client-side receipt verification
  3. Purchase Restore — Restore previously purchased non-consumables on reinstall
  4. Failure Handling — Graceful handling of: cancelled, failed, network error, already owned
  5. Rewarded Ads — Interface + provider for rewarded video ads (offline earnings double, production boost)
  6. Ad Caps — Frequency limits to prevent ad fatigue
  7. Non-Gating — No progression path requires purchase. All store items are accelerants.
  8. Store Hidden Before Value — Store tab hidden until Rank 4 + gem value taught (per progressive unlock schedule)

MVP Decision Point

If IAP/ad integration is not ready for MVP launch, the Store tab should remain hidden and monetization disabled. The game should be fully playable F2P.

Test Cases

  • Sandbox IAP purchase → item granted, receipt valid
  • Restore purchase on fresh install → items restored
  • Purchase failure (cancelled, network) → graceful error, no item granted
  • Rewarded ad unavailable → button hidden/disabled, no crash
  • Ad cap reached → ad button disabled with cooldown
  • Store unlock timing → not visible before Rank 4

14. PRD: CI/QA Gate Promotion

WI-012: CI Gate Promotion

P1 M Source: Audit 2

Current State: C# lint, build, and test are required. GDScript lint and test are advisory (continue-on-error). No Godot import, resource validation, publish settings, smoke test, or export build in CI. CI uses Godot 4.5.1 while project declares 4.6.

Required CI Status Checks (promote to blocking)

CheckCurrent StatusTarget Status
C# lint + build + testRequiredRequired
GDScript lintAdvisoryRequired
GDScript tests (GUT)AdvisoryRequired
Godot import (4.6)MissingRequired
Resource validationMissingRequired
Publish settings checkMissingRequired
Smoke launch testMissingRequired
Export dry-runMissingRequired

Actions

  1. Update CI Godot version from 4.5.1 to 4.6.x
  2. Remove continue-on-error from GDScript jobs
  3. Add Godot headless import step before GUT
  4. Add validate-publish-settings.sh as CI step
  5. Add resource validation job (scenario data, localization keys)
  6. Add export dry-run for Android/iOS

15. PRD: Export & Mobile Readiness

WI-013: Export & Mobile Readiness

P1 L

Requirements

  1. Test autoload stripping — Verify tools/strip-test-autoloads.sh removes MR Ventures Test Bridge, Godot MCP, and TestStateQuery from release exports
  2. Safe-area layout — All UI respects notch/home indicator safe areas on iPhone X+, Android punch-hole displays
  3. App icon — Production icon for all required sizes (Android adaptive, iOS all sizes)
  4. Export presets — Verify export_presets.cfg excludes development saves, test fixtures, docs
  5. Signed builds — APK signing for Android, provisioning for iOS
  6. Device matrix — Test on: iPhone SE (small), iPhone 15 (standard), iPad (tablet), Android low-end (720p), Android mid-range

Definition of Done

  • Signed test builds launch on all device matrix targets
  • No debug/test autoloads in release builds
  • Safe-area respected on all tested devices
  • No missing resource errors in device logs
  • Stable 60fps performance on mid-range devices

16. PRD: Celebration Animations & Audio

WI-019: Celebration Animations

P2 M Source: Audit 1

Celebration Moments

MomentCurrent StateTarget
Rank-upBasic popupAnimated celebration with rank badge reveal, particles, sound
Generator EvolutionBasic popupVisual transformation sequence, new appearance reveal
Generator AcquisitionCelebration popup existsPolish: confetti, card flip reveal, sound
Milestone AchievementToast notificationBrief celebration overlay with milestone icon
First Staff EarnedChest popupSpecial first-staff reveal with character art highlight
Chest OpeningPopup existsChest opening animation, rarity glow, reveal sequence

17. PRD: Content & Education Polish

WI-021: Financial Education Popups

P2 M

Current State: Content is reality-anchored with professional business themes. No educational moments implemented in the FTUE.

Education Moment Map

MomentFinancial ConceptPlacement
First Cash EarnedRevenue generationAfter first production cycle
First UpgradeReinvestment / compound growthAfter first upgrade
First DealStrategic partnershipsAfter first deal complete
First StaffHuman capital investmentAfter first staff earned
First Offline ReturnPassive incomeOffline earnings popup
Market ResearchMarket analysis / due diligenceResearch unlock
Generator EvolutionBusiness scaling / growth stagesEvolution celebration

Content Requirements

  • Each moment: one concise sentence (localized EN/ES)
  • Optional Finley speech bubble for delivery
  • Tone: reality-anchored, optimistic, professional (per CONTENT_AUTHORING_GUIDELINES.md)
  • Never blocks gameplay, always contextual

18. PRD: Market Card State Model

WI-017: Market Card State Model Expansion

P2 M Source: Audit 2

Card States

StateVisualInteraction
LOCKED (rank required)Greyed out, "Unlock at Rank X" badgeTap shows rank requirement detail
SLOT_CAPPEDVisible but dimmed, "Generator slot available at Rank X"Tap shows slot unlock path
CASH_SHORTFull art, price in red, "Need X more"Tap shows cost breakdown
BUYABLEFull art, glowing CTA, price visibleTap to purchase
NEWLY_UNLOCKEDFull art with "NEW" badge, subtle animationBadge clears after first view
OWNEDFull art, "OWNED" overlay, level shownTap navigates to generator detail

19. PRD: Gem Speedup System

WI-018: Gem Speedup System

P2 M Source: Audit 1

Context: By Rank 30, F2P players earn ~670 deterministic gems. HQ upgrades cost ~720 total. A gem speedup system creates an additional meaningful gem sink and decision point.

Speedup Targets

TargetMechanicGem Cost
EA Timer SkipInstantly complete a running EAScaled by remaining time (e.g., 1 gem per 30s remaining)
EA Instant StartStart and complete EA in one actionFull time equivalent
Production Boost2x production for 30 minutesFixed cost (e.g., 5 gems)

Unlock

  • Hidden until Rank 2 gem grant (after gems have value)
  • Tutorial explains speedup concept with first gem grant
  • Never required for progression — purely accelerant

20. PRD: Cloud Save & Remote Config

WI-027: Cloud Save (Post-Launch)

P3 L

Requirements

  1. Cloud adapter interface — Abstract cloud storage behind interface (supports Google Play Games, Apple Game Center, Firebase, custom)
  2. Conflict resolution UI — When local and cloud saves diverge, show comparison (rank, generators, playtime) and let player choose
  3. Auto-sync — Upload save to cloud on meaningful state changes (rank up, mission complete, app pause)
  4. No-network graceful degradation — Queue sync for later, play locally
  5. No silent overwrite — Never silently replace local or cloud save

WI-030: Remote Config (Post-Launch)

  • Server-side economy parameters (upgrade cost multipliers, chest drop rates, mission cadence)
  • Feature flags for gradual rollout
  • Event scheduling (limited-time scenarios, seasonal content)

21. Consolidated QA Test Plan

Merged from both audit sources, deduplicated, and prioritized.

P0 Critical Path Tests

IDTest NameSetupStepsExpected Result
QA-001 Fresh install to first rank-up Delete save data Launch → complete welcome → tap generator → upgrade → complete mission → claim chest → reach Rank 2 Player progresses to Rank 2 without confusion. Rank-up popup appears. HQ tab unlocks.
QA-002 Generator acquisition from Market Player at Rank where G2 available Open Market → find generator → purchase → observe celebration → return to dashboard Generator purchased, celebration plays, appears on dashboard, functional.
QA-003 Mission + chest + staff Active mission near completion Complete mission → chest popup → open chest → staff granted → new mission appears Full reward chain works. Staff added. Next mission generated.
QA-004 EA start, wait, and claim Player with available EA Start EA → wait for timer → claim reward → verify resources Timer works. Completion dot shows. Reward credited. Slot restored.
QA-005 Staff assignment Player has staff + empty generator slot Navigate to Team tab → assign staff → verify bonus Staff assigned. Generator stats updated. Staff shows assigned state.
QA-006 Save persistence across restart Player with Rank 3+, multiple generators Note state → close app → relaunch → verify All progress restored. Offline earnings calculated.
QA-007 Case-sensitivity / Android export Android APK export Export → install → navigate all tabs → check logs No missing resource errors. All scenes load.

P1 Save/Load & Edge Cases

IDTest NameSetupExpected Result
QA-008Corrupted save recoveryInvalid JSON in saveRecovery dialog shown, not silent data loss
QA-009Offline earnings accuracyNote income rate, close 30minEarnings match 30% * online_rate * time
QA-010Tutorial does not repeatCompleted tutorial saveNo tutorials repeat on relaunch
QA-011App closed during tutorialClose during first upgrade highlightTutorial resumes or restarts coherently
QA-012Tutorial skippedFresh launch, skip tutorialSkip persists, can be reset from Settings
QA-013Cloud save restoreNo local, cloud profile existsCloud restored without duplicate grants
QA-014Cloud conflictDivergent local/cloud savesConflict UI, no silent overwrite
QA-015No network on launchNetwork disabledLocal play works; cloud/store/ads show unavailable
QA-016Slow loadingInject 10s delayLoading screen responsive, communicates progress
QA-017Failed resource loadMissing scenario dataUser-facing fallback, no crash
QA-018App closed during splashClose during splashNo partial save corruption on relaunch
QA-019Save migration from older versionOlder save versionMigration succeeds; relevant tutorials shown

P1 Economy & UI

IDTest NameSetupExpected Result
QA-020Generator upgrade cost scalingGenerator at levels 1/10/25/50/100Costs follow GeneratorStatsCalculator. Player never permanently stuck.
QA-021Gem economy balanceTrack gems Rank 1-15F2P players earn enough for several HQ upgrades
QA-022Tab navigationAll tabs unlockedAll open/close correctly, rapid switching no glitches
QA-023Popup stack behaviorTrigger multiple popupsQueue correctly, none swallowed
QA-024Attention dots clearCompleted EA with dotDot clears after reward collection
QA-025Store offer rank gatingVarious ranksLocked offers show rank requirement. Purchase reflects provider state.
QA-026Pity systemFresh save, known pity stateFirst-rare/epic guarantees fire. Pity counter tracks correctly.
QA-027Generator evolutionGenerator at evolution thresholdEvolution triggers, celebration plays, stats update, save correct
QA-028Insufficient funds handlingLess cash than neededClear feedback, no silent failures, no negative balance
QA-029Spanish locale coverageSwitch to ESAll text in Spanish, no English fallback visible, text fits containers
QA-030Performance under load8 generators, all staff assigned60fps sustained, memory stable, no crashes
QA-031Safe area / screen sizesPhone/tablet aspect fixturesNo clipped text, overlaps, or unsafe-area violations

22. Competitive Benchmark Summary

GameFirst 5 MinutesLocked FeaturesMonetization TimingKey Lesson for MR Ventures
AdVenture Capitalist1 business, fast upgrades, automation laterManagers, angels, regionsAfter angel reset (~30min)Start ultra-simple, tease complexity
Idle Miner Tycoon1 mine, 3 shafts, first manager gifted, forced tutorialContinents, super managersAd boosts from minute 5Force first manager tutorial, progressive unlocks
Egg, Inc.1 farm, tap to earn, research early, dronesPrestige hidden, silos limitedPiggy bank (delayed IAP)Drones create engagement, delayed IAP is clever
Shop TitansCraft item, sell, restock, guided tutorialMarket, guild, workers, questsAfter level 5-10Every new menu appears because player needs it
Cookie ClickerClick, buy cursor, grandmas unlock naturallyGolden cookies random, prestige at ~1MPremium DLC onlyMinimal UI, everything by natural progression
Monopoly GORoll dice, land on properties, tutorial guidedEvents, sticker packsImmediate but non-blockingFamiliar theme reduces learning curve
Idle Theme Park TycoonUpgrade rides, earn idle cashManagers, cards, researchAds after park loopStaff/managers follow proven timing
Idle Bank TycoonUpgrade bank areas, manage flowManagers, new banksAds double productionOffline/ad boosts solve known friction

Universal Patterns MR Ventures Must Follow

MR Ventures currently violates 6 of 8 universal idle-game patterns. These must be fixed before production launch.
  1. Only 1-2 things visible at start — complexity hidden and revealed progressively VIOLATED
  2. Forced/soft tutorial for first 2-5 actions — players guided through core loop VIOLATED
  3. Monetization delayed at least 5-15 minutes — value established first VIOLATED
  4. New features unlock one at a time with celebration VIOLATED
  5. Locked features teased with locks/previews PARTIAL
  6. Tab badges/indicators guide next action VIOLATED
  7. Offline return includes ad-double option PARTIAL
  8. Store hidden/locked until value established VIOLATED

23. Ideal First 5 Minutes

TimePlayer MomentUI ShownTutorial/IndicatorHiddenDesired Feeling
0-5sLaunchLogo splashNoneEverythingPolished
5-10sLoadingLoading screen + tipsProgress barAll systemsIntentional
10-25sWelcomeFinley + brand promiseOne tap continueAll tabsCurious
25-60sFirst generatorG1 dashboard onlySoft upgrade highlightAll tabs, full mission barMomentum
1-1.5mFirst upgradeUpgrade button glowsCelebrationMission appearsRewarded
1.5-2mFirst mission progressMission bar highlightedProgress trackingHQ teasedGoal-driven
2-3mFirst mission completeMission reward + chestChest openingStaff teased if earnedSurprised
3-4mFirst chest openedReward revealStaff intro if applicableStore, most tabsCollecting
4-5mSecond generator previewMarket tab unlocksG2 as aspirationStore, Staff (if no staff yet)Anticipation
Current state: MR Ventures skips steps 1-5 entirely. The player sees the full game at 0 seconds with no guidance, no splash, no welcome, no tutorial, and all tabs visible.

24. Appendix: Specification Conflicts & Resolutions

ConflictResolutionStatus
8 vs 12 generators Pacing Master targets 8. Older docs reference 12. Implementation: 8 generators. RESOLVED
GC naming vs Evolution naming Code uses evolution_order (0-5), docs use "Generator Chapters GC0-GC5". Functionally equivalent. RESOLVED
Staff slots at GC0 Pacing Master says 0 slots at GC0. Implementation correct (no slots until EA rewards). RESOLVED
Deals have no rewards Both Pacing Master and EA Architecture confirm deals grant RP but no item rewards. Implementation matches. RESOLVED
G1 start behavior Pacing Master says G1 owned and running at start. Current save shows 2 generators — may be non-fresh state. NEEDS VERIFICATION
Gem economy balance 670 deterministic gems by Rank 30. HQ upgrades cost 720. Deficit of 50 gems requires 1 purchase or ad reward. Acceptable for soft monetization. RESOLVED

Unresolved Unknowns

Build Verification Data

CommandResult
dotnet --version9.0.203
dotnet test tests/csharp/MR Ventures.Tests.csproj622 passed, 0 failed, 0 skipped
dotnet build "MR Ventures 2025 Godot.csproj"Build succeeded, 0 errors, 495 warnings
./tools/validate-gdscript.shGDScript validation passed
./tools/validate-publish-settings.shAll publish settings checks passed
node --test tools.test.js21/21 passed