Players

The other pages ask whether the data is sound. This page asks what a player would ask: who scored most, how fast, how many at once, how far did the run get. The event ring answers four of the six, and nothing published had read it before.

Every number here is the result of a query, and its SQL syntax sits above its result for transparency. There are no hardcoded values typed into the text.

Every number here is the result of a query. The queries are hidden in this view. Switch to Engineering, top right, to read the SQL above each result.

1. Who scored most, and how fast?

run_scorecard is one row per run with every figure a leaderboard needs. It ranks on the HUD counter, which is the number printed beside it. Section 4 puts that counter against the event ring.

SELECT rank_by_kills,
       run_id,
       character_key,
       outcome,
       maps_visited::INTEGER AS maps,
       kills::INTEGER        AS kills,
       kill_events           AS kill_events,
       kills_per_min,
       sim_active_s,
       duration_s,
       t_first_kill_s,
       t_50_kills_s
FROM run_scorecard
ORDER BY rank_by_kills

The sample is rows, and the chart plots each of them.

2. What did the run look like, second by second?

run_pulse is one row per second of every run. It has existed since the gold layer landed and nothing on the site drew it. One panel per run that scored a kill, kills on a 0 to 100 scale every panel shares, hp on 0 to 9 beneath it. The time scale is per run, so a 337 second run and an 84 second run each fill their own width.

SELECT p.run_id,
       p.state,
       p.kills::INTEGER AS kills,
       p.hp::INTEGER    AS hp,
       round((p.srv - f.started_srv) / 1000.0, 1) AS t_s
FROM run_pulse p
JOIN fact_run f USING (run_id)
WHERE f.kills > 0
ORDER BY p.run_id, p.srv
SELECT run_id,
       character_key,
       kills::INTEGER        AS kills,
       maps_visited::INTEGER AS maps,
       duration_s,
       outcome
FROM fact_run
WHERE kills > 0
ORDER BY kills DESC, sim_active_s

The two runs that reached 99 made most of those kills inside the boss fight. That is the shaded band on the right of the first two panels. hp drains in steps rather than a slide, because a hit costs a whole point.

3. How many at once?

A burst is kills that land within 50 ms of each other, which is one hit. A streak chains kills within a second. Both come out of one window over the same stream, and the gap is the only thing that differs.

SELECT run_id, character_key, kills::INTEGER AS kills,
       span_ms::INTEGER AS span_ms, started_ts
FROM kill_bursts
ORDER BY kills DESC, span_ms
SELECT run_id, character_key, kills::INTEGER AS kills,
       span_ms::INTEGER AS span_ms
FROM kill_streaks
ORDER BY kills DESC

Single kills are the tallest column and still a minority of all kills. The columns on the right are single casts.

The wizard averages the most kills per hit and the archer the fewest, which is the character design showing up in the telemetry.

4. Do the counter and the events agree?

The recorder counts kills twice: the HUD counter on every pulse, and kill events in the event ring. A leaderboard would have to choose one. They agree on runs and disagree on . The runs that disagree are the only ones that walked into a second map.

SELECT run_id,
       character_key,
       maps_visited::INTEGER AS maps,
       counter_kills::INTEGER        AS counter_kills,
       event_kills,
       events_minus_counter::INTEGER AS events_minus_counter,
       agrees
FROM kill_reconciliation
ORDER BY event_kills DESC

The counter stays published as a claim. fact_run carries kill_events beside it and character_combat counts events. The leaderboard above still ranks the counter, so the rank and the number next to it come from one source.

5. How far do runs get?

A funnel over states the reference dimension documents. A renamed state would show up in app_state_history before it broke this chart.

SELECT step, step_seq, runs
FROM run_funnel
ORDER BY step_seq

win is a documented state nobody has reached. The zero is the honest end of the funnel, and the funnel is the right place to show it.

SELECT e.run_id,
       e.character_key,
       e.kills_during::INTEGER AS kills_in_fight,
       f.kills::INTEGER        AS run_kills,
       e.sim_active_s          AS fight_s,
       e.outcome
FROM fact_boss_encounter e
JOIN fact_run f USING (run_id)
WHERE e.boss_key = 'crowking'
ORDER BY e.kills_during DESC

Most of a run's kills happen inside the Crow King fight. then is the state that followed the fight, not a result. The recorder emits no defeat event, so no column here claims a defeat.

6. How does each character fight?

Shots fired, arrows missed, hits taken and pickups, all from the event ring and all per second with the clock running. kills here counts events, which is the rule section 4 exists to justify.

SELECT character_key,
       runs,
       sim_s,
       shots,
       misses,
       kills,
       kills_per_shot,
       kills_per_min,
       hits_taken_per_min,
       pickups,
       boss_hits
FROM character_combat
ORDER BY character_key

A cast has no miss event in the wire format, so kills per shot is not comparable across all three characters without saying so. Three characters and eight runs is a shape, not a verdict.