Add sample scenario data and reporting updates
This commit is contained in:
1 parent
aa0028e7e0
commit
133bc6ce3f
15 files changed
+444
-238
No files matched your search
+29
-5
@@ -9,15 +9,36 @@ All users, names, receipts, and histories are synthetic. No private Roblox analy
|
||||
- [A creator's report of high session length and low retention](https://devforum.roblox.com/t/high-session-length-but-low-retention-rate/1752184): approximately 20-minute sessions with 12% D1 retention. This is self-reported, not audited or a platform benchmark. It illustrates that long sessions and strong retention are separate properties.
|
||||
- [A creator's report of weak onboarding](https://devforum.roblox.com/t/how-do-i-improve-average-playtime-and-day-1-retention/4565940): approximately 5.4-minute sessions with 0.58% D1 retention over a week. Another self-reported example; it establishes possible variation rather than a calibration target for all games.
|
||||
|
||||
## Model assumptions
|
||||
## Current scenarios (sample version 3)
|
||||
|
||||
`realistic_seed.py` uses a fixed random seed and the current UTC time. Each game gets 6,000 players acquired over 90 days, with gradual growth, weekend lifts, an acquisition campaign, and an update bump. Orbit has shorter sessions and lower returns; Dungeon has longer sessions and stronger returns; Willow sits between them. These genre differences are illustrative assumptions, not measured claims about named games.
|
||||
The generator is `scenario_seed.py`, with configuration and personality traits in `sample_scenarios.py`; `realistic_seed.py` retains shared COPY/reset helpers. It uses fixed per-game random seeds and the current UTC time. The three games preserve their internal IDs and have different actual catalogs, events, activities, player fields, and acquisition curves:
|
||||
|
||||
The latent population includes 55% one-visit players, 32% casual players, 12.7% regular players, and 0.3% high-spending candidates. Casual return probability decays quickly; regular players have a longer tail; heavy spenders have a persistent but diminishing return probability. Some players skip several days and return. Observed exact-day retention can fluctuate between adjacent days or small cohorts; it is not forced into an artificially monotonic chart.
|
||||
| Game | Genre | Trajectory | Players |
|
||||
| --- | --- | --- | ---: |
|
||||
| Willow's Park | Social hangout and collecting | Stable acquisition and returning core, weekend variation | 8,000 |
|
||||
| Orbit Racers | Round-based competitive racing | Acquisition and returning activity decline after the middle of the window; later sessions shorten, checkpoint completion falls, automatic offers increase, and currency rewards outpace sinks | 9,000 |
|
||||
| Dungeon Workshop | Co-op dungeon RPG and crafting | Small earlier audience, then an accelerating Home-recommendation acquisition wave over the last four complete days; the new audience has more one-visit newcomers | 16,000 |
|
||||
|
||||
Session durations are skewed rather than uniform: many short first visits, longer repeat visits, and occasional long sessions. Mobile/desktop/tablet proportions, payer propensity, spending intensity, and catalog prices are simulation assumptions. Most players never buy. Purchases occur within actual sessions; heavy spenders buy more frequently and favor larger bundles. A promotion changes historical prices without rewriting catalog prices. Gamepass observations are correlated with actual spending; some passes were previously owned or gifted, so ownership does not imply a receipt within this window.
|
||||
These are deliberately fictional scenarios, not claims about real Roblox rankings. `acquisitionSource=home_recommendation` is simulated provenance, not data fetched from the Roblox discovery algorithm. Stable does not mean perfectly flat: natural daily/weekday variation and payer bursts remain. The current UTC day is partial and is excluded from the daily/weekly reports.
|
||||
|
||||
Snapshots track progression and cumulative recorded purchases. Sessions, activity stages, events, product receipts, daily visits, and hourly CCU share the same histories. CCU counts intervals at each hourly sample; unended sessions use a short observation window for the synthetic CCU report while stored session duration remains unknown. Rare missing fields, missing pass checks, and missing end reports exercise N/A handling. The current UTC day is partial; its totals should be lower than full days.
|
||||
Eight latent personalities have different session duration, return frequency, soft-currency spending, progression, purchase intent, budget, and product preference. Their weights and labels differ per genre:
|
||||
|
||||
- Tourists/newcomers visit once and usually leave quickly.
|
||||
- Social regulars spend longer with other players, progress more slowly, and rarely pay.
|
||||
- Collectors accumulate sets/cosmetics and show more deliberate shopping.
|
||||
- Competitors have stronger race results and more repeat rounds; spending is independent of their skill.
|
||||
- Free-to-play grinders accumulate time, progression, and currency while recording zero Robux spend.
|
||||
- Budget buyers favor low-price purchases and have a finite lifetime budget.
|
||||
- Impulse buyers can spend during a short visit without becoming regular players.
|
||||
- Rare whales spend in bursts with much larger budgets and a preference for bigger products; cozy-game cosmetic whales and racing/RPG power spenders have different budgets and behavior.
|
||||
|
||||
The Players table includes Playstyle by default, a Behavior column template, and genre-specific fields. Profiles display the playstyle tag. Text fields remain sortable/displayable but are excluded from numeric graphs and Hall of Fame selectors. Labels are simulation ground truth for the mockup, not an implemented behavioral classifier for production.
|
||||
|
||||
Prompt source is selected before the outcome. Product, source, persona intent, remaining budget, and the current scenario affect the outcome. Each bought prompt links to one real synthetic receipt at the same time; closed and unresolved interactions have no invented receipt. Prompt timings stay inside the parent session. Activity runs have their own ordered progression and never stand in for product-prompt records.
|
||||
|
||||
Player snapshots preserve full copies, including cash-earned/spent balance identity, exact cumulative receipt totals, and meaningful per-genre values. CCU is counted from the same simulated session intervals. Missing reports/checks are rare and remain in the Settings diagnostic log. Known zeros remain zero; absent data displays N/A.
|
||||
|
||||
`sample_report.py` validates the resulting stable/declining/surge trajectories against the preceding seven complete days, eight personalities per game, free-to-play spending, no session overlaps, sale timing, snapshot balances/receipt totals, and descending mature retention. Do this before generating the final reports.
|
||||
|
||||
## Rebuild only the bundled sample games
|
||||
|
||||
@@ -27,9 +48,12 @@ Snapshots track progression and cumulative recorded purchases. Sessions, activit
|
||||
|
||||
This deletes and replaces child datasets only for `willow-v1`, `orbit-v1`, and `dungeon-v1`, in one transaction. Internal game IDs are preserved, unrelated games are untouched, and ordinary `init`/`seed` calls keep existing data. Player and record IDs change, so old player-detail links may no longer resolve.
|
||||
|
||||
After rebuilding, validate first, then refresh reports, and finally start the dashboard. Stop an existing dashboard worker while replacing the samples so it cannot cache a half-finished scenario. Rebuilding is transactional, preserves internal game IDs, and clears sample report caches.
|
||||
|
||||
Run the validation report and tests:
|
||||
|
||||
```powershell
|
||||
.venv/Scripts/python.exe mockups/sample_report.py
|
||||
.venv/Scripts/python.exe mockups/manage_database.py refresh-reports
|
||||
.venv/Scripts/python.exe -m unittest discover -s mockups/tests -v
|
||||
```
|
||||
Reference in new issue
Block a user