Skip to content

Arcade computed stats

Derived Arcade metrics, attached as the always-on computed property of the raw stats block: whenever player.stats.arcade is present, player.stats.arcade.computed is an ArcadeComputed built by computeArcade(raw) from src/computed/modes/arcade.ts. All inputs are fields of the raw ArcadeStats block and its per-game sub-blocks (zombies, miniWalls, galaxyWars, dropper, hideAndSeek, bountyHunters, throwOut, farmHunt, soccer, pixelParty, disasters, blockingDead).

Conventions used below:

  • Ratios are bare (not percentages), rounded to 2 decimals. When the denominator is 0 the numerator is returned as-is (K/D convention).
  • *Share fields are percentages from 0 to 100, rounded to 2 decimals; a zero whole yields 0.
  • *ForNext* fields are the additional amount of the numerator stat needed to reach the next whole ratio (floor(num / den) + 1); 0 when the denominator is 0.
  • Oscillating (monthly/weekly) fields pick the live A or B bucket for the current date at compute time. Monthly: bucket A when now.getMonth() % 2 === 1 (February, April, June, August, October, December), otherwise bucket B. Weekly: whole weeks elapsed since epoch 1417237200000; bucket A when that count is odd, otherwise B.

ArcadeComputed

The top-level object at player.stats.arcade.computed.

ts
export interface ArcadeComputed {
  readonly monthlyTokens: number;
  readonly weeklyTokens: number;
  readonly zombies: ArcadeZombiesComputed;
  readonly miniWalls: ArcadeMiniWallsComputed;
  readonly galaxyWars: ArcadeGalaxyWarsComputed;
  readonly dropper: ArcadeDropperComputed;
  readonly hideAndSeek: ArcadeHideAndSeekComputed;
  readonly bountyHunters: ArcadeBountyHuntersComputed;
  readonly throwOut: ArcadeThrowOutComputed;
  readonly farmHunt: ArcadeFarmHuntComputed;
  readonly soccer: ArcadeSoccerComputed;
  readonly pixelParty: ArcadePixelPartyComputed;
  readonly disasters: ArcadeDisastersComputed;
  readonly blockingDead: ArcadeBlockingDeadComputed;
}
FieldFormulaMeaning
monthlyTokensmonthlyValue(raw.monthlyTokensA, raw.monthlyTokensB, now)Arcade coins earned this month, from the live monthly oscillation bucket
weeklyTokensweeklyValue(raw.weeklyTokensA, raw.weeklyTokensB, now)Arcade coins earned this week, from the live weekly oscillation bucket
zombiessee ArcadeZombiesComputedDerived Zombies metrics and per-map best times
miniWallssee ArcadeMiniWallsComputedDerived Mini Walls metrics
galaxyWarssee ArcadeGalaxyWarsComputedDerived Galaxy Wars metrics
droppersee ArcadeDropperComputedDerived Dropper metrics
hideAndSeeksee ArcadeHideAndSeekComputedDerived Hide and Seek metrics
bountyHunterssee ArcadeBountyHuntersComputedDerived Bounty Hunters metrics
throwOutsee ArcadeThrowOutComputedDerived Throw Out metrics
farmHuntsee ArcadeFarmHuntComputedDerived Farm Hunt metrics
soccersee ArcadeSoccerComputedDerived Soccer metrics
pixelPartysee ArcadePixelPartyComputedDerived Pixel Party metrics
disasterssee ArcadeDisastersComputedDerived Disasters metrics
blockingDeadsee ArcadeBlockingDeadComputedDerived Blocking Dead metrics

ArcadeZombiesComputed

ts
export interface ArcadeZombiesComputed {
  readonly bulletAccuracy: number;
  readonly headshotRate: number;
  readonly reviveReliability: number;
  readonly killsPerRound: number;
  readonly badBlood: ArcadeZombiesMapTimesComputed;
  readonly deadEnd: ArcadeZombiesMapTimesComputed;
  readonly prison: ArcadeZombiesMapTimesComputed;
}
FieldFormulaMeaning
bulletAccuracyzombies.bulletsHit / zombies.bulletsShotFraction of bullets fired that hit (bare ratio, not a percentage)
headshotRatezombies.headshots / zombies.bulletsHitFraction of landed bullets that were headshots (bare ratio)
reviveReliabilityzombies.playersRevived / zombies.timesKnockedDownTeammates revived per time the player was knocked down
killsPerRoundzombies.zombieKills / zombies.totalRoundsSurvivedAverage zombie kills per round survived
badBloodmapTimes(zombies.badBlood)Best round times on Bad Blood; see ArcadeZombiesMapTimesComputed
deadEndmapTimes(zombies.deadEnd)Best round times on Dead End; see ArcadeZombiesMapTimesComputed
prisonmapTimes(zombies.prison)Best round times on Prison; see ArcadeZombiesMapTimesComputed

ArcadeZombiesMapTimesComputed

Per-map best times. Each field takes the fastest strictly positive time across that map's three difficulties (normal, hard, rip); 0 means no recorded time on any difficulty.

ts
export interface ArcadeZombiesMapTimesComputed {
  readonly fastestTime10: number;
  readonly fastestTime20: number;
  readonly fastestTime30: number;
}
FieldFormulaMeaning
fastestTime10minPositive([map.normal.fastestTime10, map.hard.fastestTime10, map.rip.fastestTime10])Best time to reach round 10 across all difficulties
fastestTime20minPositive([map.normal.fastestTime20, map.hard.fastestTime20, map.rip.fastestTime20])Best time to reach round 20 across all difficulties
fastestTime30minPositive([map.normal.fastestTime30, map.hard.fastestTime30, map.rip.fastestTime30])Best time to reach round 30 across all difficulties

ArcadeMiniWallsComputed

ts
export interface ArcadeMiniWallsComputed {
  readonly kdr: number;
  readonly killsForNextKdr: number;
  readonly arrowAccuracy: number;
  readonly finalKillRate: number;
}
FieldFormulaMeaning
kdr(miniWalls.kills + miniWalls.finalKills) / miniWalls.deathsKill/death ratio counting final kills as kills
killsForNextKdrneededForNextWholeRatio(miniWalls.kills + miniWalls.finalKills, miniWalls.deaths)Combined kills still needed to reach the next whole-number KDR
arrowAccuracyminiWalls.arrowsHit / miniWalls.arrowsShotFraction of arrows shot that hit (bare ratio)
finalKillRateminiWalls.finalKills / (miniWalls.kills + miniWalls.finalKills)Fraction of all kills that were final kills (bare ratio)

ArcadeGalaxyWarsComputed

ts
export interface ArcadeGalaxyWarsComputed {
  readonly kdr: number;
  readonly killsForNextKdr: number;
  readonly empireKillShare: number;
  readonly shotsPerKill: number;
  readonly monthlyKills: number;
  readonly weeklyKills: number;
}
FieldFormulaMeaning
kdrgalaxyWars.kills / galaxyWars.deathsKill/death ratio in Galaxy Wars
killsForNextKdrneededForNextWholeRatio(galaxyWars.kills, galaxyWars.deaths)Kills still needed to reach the next whole-number KDR
empireKillShare100 * galaxyWars.empireKills / (galaxyWars.empireKills + galaxyWars.rebelKills)Percentage of faction kills scored as the Empire (0-100)
shotsPerKillgalaxyWars.shotsFired / galaxyWars.killsAverage shots fired per kill
monthlyKillsmonthlyValue(galaxyWars.monthlyKillsA, galaxyWars.monthlyKillsB, now)Kills this month, from the live monthly oscillation bucket
weeklyKillsweeklyValue(galaxyWars.weeklyKillsA, galaxyWars.weeklyKillsB, now)Kills this week, from the live weekly oscillation bucket

ArcadeDropperComputed

ts
export interface ArcadeDropperComputed {
  readonly flawlessRate: number;
  readonly failsPerGame: number;
}
FieldFormulaMeaning
flawlessRatedropper.flawlessGames / dropper.gamesFinishedFraction of finished games completed without a fail (bare ratio)
failsPerGamedropper.fails / dropper.gamesPlayedAverage fails per game played

ArcadeHideAndSeekComputed

Uses the combined total hideAndSeekWins = hiderWins + seekerWins + propHuntHiderWins + propHuntSeekerWins + partyPooperHiderWins + partyPooperSeekerWins.

ts
export interface ArcadeHideAndSeekComputed {
  readonly totalWins: number;
  readonly hiderWinShare: number;
}
FieldFormulaMeaning
totalWinshideAndSeekWins (sum of all six win counters)Total wins across both roles of all three Hide and Seek variants
hiderWinShare100 * (hideAndSeek.hiderWins + hideAndSeek.propHuntHiderWins + hideAndSeek.partyPooperHiderWins) / hideAndSeekWinsPercentage of all Hide and Seek wins earned as a hider (0-100)

ArcadeBountyHuntersComputed

ts
export interface ArcadeBountyHuntersComputed {
  readonly kdr: number;
  readonly bowKillShare: number;
}
FieldFormulaMeaning
kdrbountyHunters.kills / bountyHunters.deathsKill/death ratio in Bounty Hunters
bowKillShare100 * bountyHunters.bowKills / bountyHunters.killsPercentage of kills scored with the bow (0-100)

ArcadeThrowOutComputed

ts
export interface ArcadeThrowOutComputed {
  readonly kdr: number;
}
FieldFormulaMeaning
kdrthrowOut.kills / throwOut.deathsKill/death ratio in Throw Out

ArcadeFarmHuntComputed

ts
export interface ArcadeFarmHuntComputed {
  readonly hunterWinShare: number;
}
FieldFormulaMeaning
hunterWinShare100 * farmHunt.hunterWins / farmHunt.winsPercentage of Farm Hunt wins earned as a hunter (0-100)

ArcadeSoccerComputed

ts
export interface ArcadeSoccerComputed {
  readonly goalsPerKick: number;
}
FieldFormulaMeaning
goalsPerKicksoccer.goals / soccer.kicksGoals scored per kick

ArcadePixelPartyComputed

ts
export interface ArcadePixelPartyComputed {
  readonly winRate: number;
}
FieldFormulaMeaning
winRatepixelParty.wins / pixelParty.gamesPlayedFraction of Pixel Party games won (bare ratio, not a percentage)

ArcadeDisastersComputed

ts
export interface ArcadeDisastersComputed {
  readonly winRate: number;
}
FieldFormulaMeaning
winRatedisasters.wins / disasters.gamesPlayedFraction of Disasters games won (bare ratio, not a percentage)

ArcadeBlockingDeadComputed

ts
export interface ArcadeBlockingDeadComputed {
  readonly headshotsPerKill: number;
}
FieldFormulaMeaning
headshotsPerKillblockingDead.headshots / blockingDead.killsAverage headshots per kill in Blocking Dead

Released under the MIT License.