Opportunity-adjusted attendance
Raw attendance punishes members for matches they never had a fair chance of making. Opportunity-adjusted attendance fixes that: it credits turnout only against the matches a member could realistically reach given their time zone, so a match that landed at 2am their time is excused rather than counted as a no-show.
// ON THIS PAGE
Why raw attendance is unfair
Desert Storm matches fire at a fixed server time, but your alliance is spread across the world. A match in one member's evening is the middle of the night for another. Judge everyone on raw attendance — matches attended over matches assigned — and you quietly penalise the members in awkward time zones for a clash they never chose.
Opportunity-adjusted attendance is the fair version. It asks a different question for each member: not “how many matches did they attend?” but “how many matches did they attend out of the ones they could realistically make?”
// NOTE
Try it
| Member | Raw | Adjusted | Made | Excused |
|---|---|---|---|---|
| Aurora_M | 100% | 100% | 12/12 | — |
| VexNova | 67% | 89% | 8/9 | 3 |
| IrisStorm | 75% | 75% | 9/12 | — |
| KadeOnline | 42% | 63% | 5/8 | 4 |
| Lumi_42 | 50% | 60% | 6/10 | 2 |
| PaxBlackline | 83% | 91% | 10/11 | 1 |
| JunoXNo TZ | 25% | 25% | 3/12 | — |
| Orin_HQ | 33% | 57% | 4/7 | 5 |
How the adjustment works
For every completed match, the platform works out the local time for each member from their time zone and the alliance's server offset. Matches that fall in a member's night window are marked excused — they drop out of that member's denominator instead of counting as a miss. What's left is their opportunity: the matches they had a genuine chance to reach.
The grid then shows two rates side by side:
- Raw rate — attended divided by every match they were assigned, unadjusted.
- Adjusted rate — attended divided by their opportunity (assigned matches minus the excused night-window ones). This is the fair number, and it's the one to act on.
A member who quietly makes every match in their waking hours reads as a strong contributor on the adjusted rate even if their raw rate looks patchy — the gap between the two is exactly the unsocial-hour matches they were never going to reach.
Reading the grid
Pick a window — 14, 28 or 90 days — and the grid leads with four summary tiles: alliance raw turnout, alliance adjusted turnout, how many members benefited (had at least one match excused), and how many members are tracked over how many matches. Each member row then shows their raw rate, adjusted rate, matches made out of their opportunity, and their excused count.
Rates are colour-coded so the grid scans at a glance — green from 75%, amber from 50%, red below 50%. If no Desert Storm matches ran in the window there's nothing to measure, so the grid points you to record a match or widen the range.
// HEADS UP
What it needs to be accurate
The adjustment is only as good as two pieces of configuration:
- The alliance server offset — so match times can be converted from server time to real time. See Time zones.
- Each member's time zone — set by the member, so the platform knows when their night window is. Members without one are flagged in the grid.
The night window is the same one used elsewhere for unsocial-hour fairness — see Blood Night for how the overnight window is defined. For a simpler, unadjusted read of turnout across every event, the Participation grid covers the whole event calendar rather than just Desert Storm.