Elemental Fracture 6.3.6 – Patch Notes
Relaunch your launcher, let it pull 6.3.6, and play.
This one is about fair fights. Until now, the matchmaker built Dominion, Team Deathmatch and Team Clash teams in the order people joined, so whether you got a close game or a stomp came down to luck. Balancing teams by skill was the next thing I wanted to pursue, and 6.3.6 is the first version of it.
Teams are balanced by skill
When the matchmaker forms a Dominion, Team Deathmatch or Team Clash lobby, it now splits the players into two sides using a hidden team rating instead of join order.
- Parties always stay together. The matchmaker only decides which side each party goes on; it never breaks one up.
- Even sides come first. A 5v5 always beats a 6v4, whatever the ratings say, because being a player down matters more than any rating gap.
- Then the closest match. Among the even splits, it picks the one where the two sides’ average ratings are closest.
- The rating is hidden. You won’t see a number anywhere in game or on the site. It exists only to build fair teams. Staff can see it so we can keep an eye on how it behaves.
I checked it against every team match played so far. For each one, I compared the teams we actually got with the teams the balancer would have made, using only the ratings that existed before that match:
- The average rating gap between the two sides drops from 105 to 78.
- In lobbies of four or more players, where there is more than one way to split the players, the gap shrinks by 92%. In lobbies of six or more it shrinks by 98%.
- There were no lobbies where the balancer would have done worse.
- The rating also picks the winner 62% of the time, against 50% for a coin flip.
Two limits worth knowing: balancing applies to lobbies the matchmaker forms from the queue, so players who join a match already in progress still fill whichever side has room. And Custom Match and Free for all are never balanced. You pick your own team in Custom Match, and Free for all has no teams.
Parties, uneven teams and 2v1s
Because parties are never split, the party sizes in a lobby decide what splits are possible. Here is what the matchmaker does in the common cases, run through the same code the servers use:
| Who is in the lobby | Teams |
|---|---|
| 8 solo players | 4v4 |
| A party of 3 and 5 solo players | 4v4: the party plus one solo, against four solos |
| Two parties of 3 and 2 solo players | 4v4: each party gets one solo |
| A party of 3 and a party of 5 | 5v3: the only split that keeps both parties whole |
| 3 solo players | 2v1: someone has to be alone |
| A party of 2 and 1 solo player | 2v1: the solo plays alone against the party |
Can you ask for a 3v5? Not through the queue. The matchmaker always goes for the evenest teams it can, so a group of 8 made of solos or small parties becomes 4v4. You only get a 3v5 from the queue if a party of 3 and a party of 5 end up as the only two groups in a lobby, and nobody can arrange that. If you want a lopsided game on purpose, make a Custom Match and pick teams there: the host’s picks are never changed and no balancing runs. Custom Match doesn’t give XP or count toward stats, so it’s the place for games played just for fun.
Who plays alone in a 2v1? With three solo players, the matchmaker picks whoever makes the two sides’ average ratings closest. For example, with players rated 864, 1074 and 1096:
| Player alone | Their rating | The pair’s average | Gap |
|---|---|---|---|
| Player A | 864 | 1085 | 221 |
| Player C | 1096 | 969 | 127 |
| Player B (chosen) | 1074 | 980 | 94 |
With a party of 2 and one solo, there is only one possible split: the solo is alone, whatever the ratings.
One thing it doesn’t do yet: it doesn’t give the smaller side any credit for being short a player. In a 2v1 the fairest choice is usually the strongest player alone. In the example above the pick happened to be the second strongest, but with different ratings it could leave a weaker player on their own.
A 2v1 can still become a 2v2. Dominion, Team Deathmatch and Team Clash start their countdown once two players are in. Anyone who joins before the join cutoff goes to the side with fewer players, so a fourth player turns a 2v1 into a 2v2. If nobody else arrives, it stays 2v1 for the whole match.
Uneven games count for less. A 2v1 moves everyone’s rating half as much as an even game (see Uneven teams below). The player who was alone loses half as much for being outnumbered, and the pair gains half as much for winning a fight they were expected to win.
How the rating works
Here is the whole formula. The rating is Glicko-2, the same family of system chess and many team games use. On top of that there is a small performance bonus, a correction for uneven teams, and a starting rating for existing players.
Everyone starts at 1000
A brand new account starts at 1000, with a small nudge for Mage Rank and Class Mastery:
$$r_{\text{start}} = 1000 + 75\,\bigl(0.6\,m + 0.4\,c\bigr)$$
$$m = \min\!\left(1,\ \frac{\text{Mage Rank} - 1}{29}\right) \qquad c = \min\!\left(1,\ \frac{\text{best Class Mastery} - 1}{9}\right)$$
The nudge is at most +75, and it can only go up. Levels measure time played, not skill, so they are only allowed to suggest a starting point.
Every rating also carries an uncertainty (RD). A new account starts at the maximum, 200, which means the system doesn’t know you yet and your first matches move your rating a lot. As you play, RD shrinks toward 85. At that point an even match moves you about ±20. A rating counts as provisional until 8 rated team matches.
Players who were already here
Existing players didn’t have to start from zero: accounts with history get a starting rating built from what they have already played. Four signals go in. Each is pulled toward neutral the less evidence there is behind it:
$$\hat{s} = \operatorname{clamp}(s,\,-1,\,1)\cdot\frac{n}{n + k}$$
where $n$ is the number of matches behind the signal, and:
| Signal | What it measures | $k$ |
|---|---|---|
$\hat{s}_{\text{wl}}$ | team-mode win rate against 50% | 6 |
$\hat{s}_{\text{impact}}$ | team-mode performance (see below) | 6 |
$\hat{s}_{\text{br}}$ | share of real players outlasted in Battle Royale | 8 |
$\hat{s}_{\text{prog}}$ | the Mage Rank / Class Mastery factor above | (none) |
$$x = 0.40\,\hat{s}_{\text{wl}} + 0.35\,\hat{s}_{\text{impact}} + 0.10\,\hat{s}_{\text{br}} + 0.15\,\hat{s}_{\text{prog}}$$
$$r_{\text{seed}} = 1000 + 75\,\tanh(2x)$$
A seed can never move you more than 75 from 1000. In practice the widest was about +45. Seeded players still start at the full uncertainty of 200, so the seed only chooses where you start. It never makes the system confident about you.
Battle Royale contributes through one signal only: how many other real players you outlasted. It ignores exiles and damage, because most Battle Royale exiles are bots.
After every team match
Each player is rated against the other team as a whole, reduced to one opponent:
$$r_{\text{opp}} = \frac{1}{N}\sum_{j=1}^{N} r_j \qquad RD_{\text{opp}} = \sqrt{\frac{1}{N}\sum_{j=1}^{N} RD_j^{2}}$$
where the sums run over the $N$ players on the other team.
Then comes the standard Glicko-2 update. Ratings are first moved onto Glicko’s internal scale:
$$\mu = \frac{r - 1000}{173.7178} \qquad \phi = \frac{RD}{173.7178}$$
$$g(\phi) = \frac{1}{\sqrt{1 + 3\phi^{2}/\pi^{2}}}$$
The chance you were expected to win:
$$E = \frac{1}{1 + \exp\!\bigl(-g(\phi_{\text{opp}})\,(\mu - \mu_{\text{opp}})\bigr)}$$
And the update, where $S = 1$ for a win and $0$ for a loss:
$$\mu^{\prime} = \mu + \left(\phi^{\prime}\right)^{2}\,g(\phi_{\text{opp}})\,(S - E)$$
$\phi^{\prime}$ is your updated uncertainty from the Glicko-2 steps, with volatility starting at 0.06, kept between 85 and 200 RD. The effect: beating a stronger team moves you further than beating a weaker one, and a loss you were expected to take costs little.
The performance bonus
On top of the win or loss, you get a small bonus or penalty for how much you contributed, capped at ±5. First, your impact, measured against the average player in that same match:
$$I = 0.45\,\frac{\text{exiles}}{\overline{\text{exiles}}} + 0.25\,\frac{\text{assists}}{\overline{\text{assists}}} + 0.15\,v + 0.15\,\frac{\text{damage}}{\overline{\text{damage}}}$$
Each bar is the average for that match, so $I = 1$ means “average in this match”. Survival $v$ counts in reverse, so being exiled less scores higher:
$$v = \operatorname{clamp}\!\left(2 - \frac{\text{times exiled}}{\overline{\text{times exiled}}},\ 0,\ 2\right)$$
Never exiled scores 2, twice the average scores 0. Then it is measured against what your rating says you should contribute, where $\bar{r}$ is the lobby’s average rating:
$$I_{\text{exp}} = \operatorname{clamp}\!\left(1 + 0.5\,\frac{r - \bar{r}}{400},\ 0.4,\ 2.0\right)$$
$$b = \operatorname{clamp}\!\bigl(10\,(I - I_{\text{exp}}),\ -5,\ 5\bigr)$$
So a lower-rated player who carries harder than expected gains a little even in a loss, and topping the scoreboard in a lobby you already outrate earns nothing extra. The bonus only counts in matches where the stats are player against player. Bot exiles never feed it.
Uneven teams
If one team is short, because someone left or a match started uneven, the result tells us less about skill. So the whole change is scaled down:
$$w = \frac{\min(n_{\text{yours}},\ n_{\text{theirs}})}{\max(n_{\text{yours}},\ n_{\text{theirs}})}$$
So a 3v3 counts fully ($w = 1$), a 3v2 counts $\tfrac{2}{3}$ and a 2v1 counts $\tfrac{1}{2}$:
$$r^{\prime} = r + w\,\bigl(\Delta_{\text{Glicko}} + b\bigr)$$
Being outnumbered no longer costs you a full loss, and the bigger team isn’t paid in full for winning a fight it should win.
Taking a break
If you stop playing, your uncertainty slowly grows back, so the system re-checks you when you return instead of trusting an old number:
$$RD^{\prime} = \min\!\left(200,\ \sqrt{RD^{2} + 34^{2}\cdot t}\right)$$
where $t$ is the number of weeks since your last team match.
Your old arena results are back
While building this I found that a lot of Dominion and Team Clash results never reached your stats. The scoreboard at the end of each match arrived fine, but it was filed under the wrong match, so the match kept only its roster: no teams, no wins or losses, no exiles. 110 results were affected. The server now puts each result on the match it belongs to, and the old ones are recovered automatically.
Your match history, win/loss record and hi-scores for those modes will fill in with results you already earned. For the rating, this raised the number of usable team matches from 42 to 128, which is what made the balancing numbers above possible.
Fixes
- Spectating no longer muffles your audio. Spectating a teammate who had been downed could leave their downed sound playing forever, and it muffled everything else until you restarted. It is stopped when that player dies.
- RECENT TEAMMATES shows everyone. The list only ever showed one player at a time. It now keeps up to 20 of the people you’ve played with.
- Team Deathmatch gives you time to pick a loadout. You get at least 25 seconds before the first spawn to choose one, plus a 15 second window after spawning to change it.
Getting started
Already playing? Relaunch the launcher. It pulls 6.3.6 and updates the game and the mods.
New here? Grab the launcher from elefrac.com, make an account with an email and password, sign in, press Play.
See you in the arena. ⚡