OSIRIS Combat Dashboard
Combat-difficulty analytics from real runs. Every non-release build of OSIRIS — editor sessions and external playtests alike — reports its combat telemetry to the backend it is signed in to, so pick a backend below. Runs are kept for six weeks and then deleted.
Wave Lifelines — where runs die
One row per run, one column per wave. Cell color = damage taken that wave. Hover any cell for the full wave detail.
Wave Difficulty Curve
Observed pain per wave vs. the enemy-scaling ramp the level was authored with. Where the bars pull away from the dashed line, that wave is hitting harder than designed.
Run Ledger
Click a column header to sortAbility Draft — offered vs picked
Every level-up shows a 3-card slate (rarity is rolled once per slate, like the real roller). Pick rate = times picked ÷ times shown. Win rate is across runs that picked the ability; small samples are grayed out rather than colored. Toggle heroes to scope the stats to runs whose squad included all of them.
Where this data comes from
CombatTelemetry
- Compiled out of release builds entirely. Non-release builds, including external playtests, all report.
- Authed sessions only: a build, or an editor started from
InitialLoad. Booting straight into a gameplay scene sends nothing. - Buffered and flushed at room seams, so a 20-wave run costs about a dozen calls rather than one per event.
- Fire-and-forget. A lost batch leaves a gap in a run rather than failing a match, which is why a wave can be missing from the grid.
What each run carries
match_started— mission, squad power, hero ids, changeset,balanceHash, device, revives available.wave_completed— per wave: room, wave-in-room, time, damage taken, damage dealt per hero, squad level, revive, cleared/wiped.ability_draft— the whole slate, not just the pick: per card the perk UID, slot, deck, deck hero and the deck tag that was rolled. Offers are what make offered-vs-picked rates possible.match_ended— result, wipe wave, duration, totals, final squad level.
Self-describing runs
- The dashed reference line is the authored multiplier the game actually applied to that wave, recorded per run — so an old run stays honest after a rebalance instead of being re-scored against today’s config.
- Perk names, rarities and deck origin are recorded per run for the same reason. Deck membership and tuning both change between check-ins.
- The catalog file only supplies perk icons and hero classes — the two things a run cannot carry. A stale export shows a stale icon, never a wrong label.
combat_runs
- One document per run per environment, keyed by match id. Waves and drafts are maps keyed by index, so a duplicated or out-of-order batch is a no-op.
- Account id, player id, nickname and device model. Nothing else about the person.
- Deleted after six weeks by a Firestore TTL policy.
Loading…