4.3 KiB
Benchmark-informed sample histories
All users, names, receipts, and histories are synthetic. No private Roblox analytics or real player records are imported. The game IDs and Roblox experience IDs are demo identifiers, not claims about those games' performance.
Public references checked 3 November 2026
- GameAnalytics 2026 Roblox Benchmark Report: its sample covers 500+ large titles with at least 1 million monthly active users. Median exact-day retention is D1 10.3%, D7 1.6%, D30 0.5%. Average game session length is 9.8 minutes at the median, 7.3 at p25, and 14.7 at p90. These are benchmarks for established games, not a representative census of new releases. The report also describes strongly concentrated payer spending; its USD figures are not converted into Robux in this prototype.
- Roblox retention documentation: D1, D7, and D30 refer to returning on the exact day, not cumulative return. New cohorts need complete observation windows.
- A creator's report of high session length and low retention: 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: 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
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 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.
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.
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.
Rebuild only the bundled sample games
.venv/Scripts/python.exe mockups/manage_database.py reset-sample
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.
Run the validation report and tests:
.venv/Scripts/python.exe mockups/sample_report.py
.venv/Scripts/python.exe -m unittest discover -s mockups/tests -v