Daily Seed and Leaderboard
In short
The DAILY CHALLENGE gives everyone the same run seed for a UTC date, which picks the map (any map, even a locked one) and the innings and pitches, always on Normal. It pays points and XP but unlocks nothing. Scores go to a local leaderboard on this machine: an all-time board and one board per day. There is no online leaderboard yet.
How it works
Daily run (RunManager.StartDailyRun):
- Seed =
DailySeed.Today, the UTC date as a number (yyyyMMdd, e.g. 20261022). - Map =
ballparks[Derive(Today, 0xDA11) % ballparks.Count], from all run maps, unlocked or not. - Difficulty = Normal. Batter = your selected batter.
- The run is marked
IsDaily. At the end it skipsRecordMap, so no map unlocks and no map best; it still pays meta points and XP and can set your overall best score. - The results card shows a DAILY RUN pill, and RUN IT BACK starts the same daily again.
The title screen’s daily card shows TODAY, DAILY CHALLENGE and SEED yyyy-MM-dd and starts the run on click, skipping map select.
Leaderboards (ILeaderboardService, implemented by LocalLeaderboardService):
- Every solo run that ends (won, lost or abandoned) submits a
LeaderboardEntry(player name, score, batter id, date) to the boardall-time. A daily run also submits todaily-yyyy-MM-dd. - Entries live in
SaveData.leaderboard. After each submit, only the top 20 of that board are kept. - The title screen shows the top 5 of TODAY’S DAILY and ALL-TIME, each row with a medal number, the batter’s name and the score. An empty board says “No scores yet - be the first!”
Numbers
| What | Value | Where to tune |
|---|---|---|
| Daily seed | UTC date as yyyyMMdd | DailySeed.Today |
| Daily date key | yyyy-MM-dd (UTC) | DailySeed.DateKey |
| Daily map stream id | 0xDA11 | RunManager.DailyParkStream |
| Daily difficulty | Normal | RunManager.StartDailyRun |
| Entries kept per board | 20 | LocalLeaderboardService.MaxEntriesPerBoard |
| Rows shown per board | 5 | MainMenuView.DrawBoard |
| Board names | all-time, daily-<date> | Boards |
In the code
| File | What it does |
|---|---|
Assets/_Project/Scripts/Progression/DailySeed.cs | Today (seed) and DateKey |
Assets/_Project/Scripts/Progression/Leaderboard.cs | Boards, ILeaderboardService, LocalLeaderboardService (Submit, GetTop) |
Assets/_Project/Scripts/Run/RunManager.cs | StartDailyRun, DailyPark, leaderboard submits in EndRun |
Assets/_Project/Scripts/UI/MainMenuView.cs | Daily card and the two boards |
Assets/_Project/Scripts/Progression/SaveData.cs | LeaderboardEntry, SaveData.leaderboard, playerName (default “You”) |
Gotchas
- “Same run for everyone” covers the map, pitchers, goals and pitches. Shop offers come from the same seed but are drawn from each player’s unlocked upgrades, and each player uses their own batter, levels and perks, so builds can differ.
- The daily can be replayed any number of times on the same day; every attempt is posted.
- A daily checkpoint can only be resumed on its own UTC day; after midnight UTC it is deleted.
- The leaderboard rows show the batter, not the player name, even though the name is stored.
- Co-op runs never post to the leaderboard.
- The daily run plays the match intro and the end-of-game cutscenes like any solo run (Cutscenes). The leaderboard entry is already posted when the outro starts.
- Every run map now has its own inning-9 boss, so the seed-picked map also decides the final boss (Run Structure).
- Losses and abandoned runs are posted too, so the all-time board is “best runs”, not “best wins”.
- Friends or online leaderboards would be a new
ILeaderboardServicecreated inGameRoot. Not built.
Online leaderboard
Only the local service exists. The README lists a friends leaderboard as not started.
Related
- Seeds and Determinism: why the same seed gives the same pitches
- Run Structure: what the seed builds
- Meta Progression: what the daily still pays
- Save System: where entries are stored