Skip to main content

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.

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

This is an officer surface (R5, R4 and web admins) and a Pro feature. Free alliances see it locked with an upgrade prompt rather than hidden.

Try it

// LIVE DEMO · SAMPLE DATA
Raw turnout
59%
Attended ÷ assigned
Adjusted
70%
When they could make it
Benefited
5
Had matches excused
Tracked
8
over 12 matches
Aurora_M100%
raw 100%12/12 made
VexNova89%
raw 67%8/9 made3 excused
IrisStorm75%
raw 75%9/12 made
KadeOnline63%
raw 42%5/8 made4 excused
Lumi_4260%
raw 50%6/10 made2 excused
PaxBlackline91%
raw 83%10/11 made1 excused
JunoXNo TZ25%
raw 25%3/12 made
Orin_HQ57%
raw 33%4/7 made5 excused
The real attendance grid on sample data — search members and compare the raw and adjusted rates. Members with excused night-window matches read higher on the adjusted rate; JunoX has no time zone set, so nothing is excused.

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

A member with no time zone set carries a No TZ flag. Without it the platform can't tell which matches fell in their night, so it can't excuse anything — their adjusted rate is just their raw rate. Get those members to set a time zone and their numbers become fair.

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.