# Elo System for AW match-making - maybe not as hard as you think

I posted (what I hope) is a fair approach to calculating AW matchmaking.
I will not repeat it here - it is linked below.

It boils down to a form of Elo system, but factors in players’ individual scores in AW instead of just the alliance as a whole. This is to increase the data points and make the Elo system more responsive.

Some criticisms have been raised (I’ll link to them in separate posts below)… but the main one I would like to address is the perception that it would be hard to calculate and a lot of effort to develop.

I disagree. While it would certainly be non-trivial, I really don’t think it would prove OVER Complicated.
I spent about 20min of my time coming up with an approach where this can be calculated and stored without the need for big, complicated batch jobs, etc. It boils down to giving the client the job of calculating and storing the Elo while it is busy doing work that it would already be doing in managing the alliance battle or war results.

It is outlined below.
If it took me 20min to flesh out the basic algorithm, I can’t see it being OVER complicated to implement. (Yes, using simple metrics like Titan score or Alliance score is easier… but really does have several fundamental problems).

NOTE:
I don’t know if it’s worth spending time trying to correct every detail of my algorithm. The main reason for my post is to indicate that it actually shouldn’t be all that hard to code it. Obviously SG would spend a lot more than 20min ironing out the detail and checking for logical flaws… we don’t have to do ALL of their work for them.

The approach:

In the client:

When Player has completed attack in AW

• If first attack of war then [Battle Count in war] := 0

• [Power Elo] := Score based on difference between his team power and the opponent.
If victory then big +ve if player power < opponent power or small +ve otherwise.
If defeat then big -ve if player power < opponent power, otherwise small -ve

• Add to [running total of health taken] from enemies.
If Flags is zero, [Health Elo] := score on the final [running total of health taken]

• Increment [Battle count in war]

• Add battle score to [score tracking array]. If no. of elements in [score tracking array] is now more than max_tracked_elements, remove the first element. (To track rolling average)
[Avg Points Elo] = Average(all elements in [score tracking array]

• Store these variables with player record in an array - 1 per battle.

• Calculate [Defence Elo] for the DEFENDING PLAYER using similar concept to [Power Elo]
Store [Defence Elo] for the DEFENDING PLAYER

When collating final count of all players stats after war:

• if [Battle count in war] < 6 then add (6 - [Battle count in war]) 0s to [score tracking array] and remove (elements([score tracking array]) - max_tracked_elements) from the start of [score tracking array].
(i.e. recording the battles the user failed to fight).
• Calculate [Player’s_Cumulative_Elo_Current_Battle] score using average of [Power Elo]; [Health Elo]; [Avg Points Elo] and the current player’s stored [Defence Elo] for each battle as inputs, with weightings as appropriate.
(If the player didn’t take part, but has a defence, his Elo score is zero and will influence the Alliance Elo down. If he didn’t set a defence, his Elo is not factored in)
• Calculate [Player’s Overall Elo] by adding or subtracting to it based on [Player’s_Cumulative_Elo_Current_Battle] relative to [Player’s Overall Elo]
(i.e. lift the [Player’s Overall Elo] by some factor if [Player’s_Cumulative_Elo_Current_Battle] is greater than it, otherwise drop it by some factor
• Store [Player’s Overall Elo]
• When all [Player’s Overall Elo] scores are done…
Calculate [Current War Players’ Average Elo] across all who registered a defence (i.e. who opted to take part).
Calculate [Alliance Overall Elo] as follows:
* +ve boost for Victory or -ve boost for defeat. Amount of boost is dependent on current [Alliance Overall Elo] versus the opposing alliance’s [Alliance Overall Elo]
* +ve boost if [Stored Players’ Average Elo] exceeds [Current War Player’s Average Elo]. -ve boost otherwise. (Size of boost dependent on the size in difference in scores).
• Store [Current War Players’ Average Elo] as [Stored Players’ Average Elo]
• Store the calculated [Alliance Overall Elo]

You can add a number of other performance metrics to above without greatly impacting the algorithm - the principle remains the same… just more data points to store.

Job done. Wasn’t that hard, was it?

1 Like

As promised…

A link to some of the concerns raised about the Elo Approach.

1 Like

And now to address some of @Brobb’s points raised in the link in the post above…

You’d still be collecting relatively few data points to base an individual rating on, so it would be very noisy.

True… but the algorithm makes the scoring more granular. You are making up for low rate of AW encounters with more detail per encounter which gives you more data for a better / more accurate balance.
Besides, think of it in the chess context… it works there, and chess players are playing in competitions less often on average than we’ll be partaking in AW.

The Point #2 you admitted is not specific to the mechanic of this matchmaking system (which I agree) so will not cover it here.

It would be opaque, or at least very complicated, and in each war round 50% of alliances would still lose. Losing players would still complain that they were being mismatched. The difference would be that they would not be able to explain why. (So they’d invent crazy theories based on victimisation.)

An excellent point… but I don’t think “The players may complain because they don’t understand it” is a basis to block it. On that basis the entire game would not have been developed given SG’s proven lack of transparency on how the mechanics work. Really it will only be a problem if it is producing rediculous match-ups… and I feel the way it’s designed that it is less likely to do so than the current systems employed.
(Edit)
And a simple solution: Improve transparency. In Raids ‘cups’ are really the Elo Score. So you’d do similar for AW and represent the player’s individual Elo Score in their stats, as well as the Alliance Elo Score as a whole. Call it ‘Alliance War Trophies’ or whatnot.

It would require a lot of development resources even to beat together a beta, and I presume there would be more than a few teething problems to iron out before it was workable.

Addressed in my original post. The development would be non-trivial, but I don’t feel so complicated as to be a massive barrier. Guess SG would need to assess this if they are interested. I fundamentally agree with your point, however, that it’s not worth doing if it does prove over-expensive in time… after all it would really just be to address the perception of ‘fairness’ in the system and to cut down on some of the complaints / noise.

2 Likes

It’s a sensible algorithm, based on reading it through only once. I like the general principles. But as always, the death is in the details, which is where most of the effort is usually expended, and you don’t have much by way of details.

• Units seem to be implied for Health Elo, which is measured in health points, and Avg Points Elo, measured in battle points. These units are, obviously, different and not well suited for combination.

• No units even seem to be implied for Power Elo or Defence Elo (presumably they’d be the same).

• Related: Player Elo is an average of each individual component Elo, “with weightings as appropriate”. Seems like an implicit recognition that scaling is an issue that will need to be addressed. That is likely to take a lot of fiddling.

• There is obviously a similar issue for Total Alliance Elo, where you propose a “+ve boost” for victory - unit and scale issues loom.

So I don’t think the job is done. You’ve made a start (a start that I find really appealing) but it’s just a start. I look at the algorithm and see a day the two of us spend together at a table with a whiteboard and a couple of laptops figuring out the details, then all the coding, then weeks of messing about just to fine tune it in beta.

There would also be something of an issue with player understanding. One of the advantages of using Alliance Score or just Titan Score (bleh) for matching is that everyone can see what is happening. This sort of layered process would be totally opaque. I can’t see players liking that.

Having said all of that, and remaining deeply sceptical about the resources required to implement it all, I would love to see SG try this - I think it would work.

Is it the best use of their resources, though? Match using Alliance Score, or Titan Score if you must, I say, and devote those development days (Weeks? Months?) to Season 2.

1 Like

We can’t call this an ‘Elo type’ system any more, btw. It’s no longer even a distant cousin. (Doesn’t mean it’s bad, it’s just not Elo.)

1 Like

Well, semi-Elo in as much as it uses your score against the opponent’s to modify your score based on the result - at least at the Alliance level. Even the original Elo score for chess actually factors in aspects outside of just the plain outcome.

Whatever… we digress - don’t want to turn this in to an academic argument about Elo. It needs a name to call it so let’s just stick with the current one in the interim… accurate or not.

I won’t get into addressing your individual points about the algorithm outside of just saying “it’s a high level algorithm… the devil is in the detail”. The point about health, however… the health points taken are the basis of calculation of the score. So really the score would be based on the amount of health taken from the enemy as compared to some form of norm or baseline.

I address your point about transparency in my subsequent answer to your issues. You won’t get total transparency, but you can alleviate it by exposing the calculate per-player and per-alliance scores as a basis for players to decide if they were ‘fairly’ matched by being able to compare theirs with other alliances and players of known quality. If the system is producing fair match-ups then this won’t be too much of a problem I feel.

I feel we should leave it out there for SG to assess and determine in terms of detail… but if anyone can think of a MAJOR gotcha as to why it won’t work at all as a concept then it bears discussion.

1 Like

This is a good point. I think you’ve mitigated my concerns here.

We agree. But that seems like a pretty good argument for sticking with the status quo (Alliance Score) which seemed to be working fine.

That’s a good idea that I like. But the problem remains: how ‘Alliance War Trophies’ were calculated would continue to be opaque, and the source of much moaning and complaining. I guess you could make the algorithm public. I don’t think that would help with understanding.

I can get over, around or through everything else: this is really the only deal breaking issue I have with what I think is a really great idea you have developed.

1 Like

I have no idea what an ELO system is ( and probably would not understand it anyway), but if it allows individual players to opt out of AW before the matchmaking is done, then it just might be a good thing

1 Like

I would like to say that this Elo System for AW match-making does seem like a good idea, as opposed to the past systems based on alliance score and the current system based on titan score. I do agree, after some further thought, that the current metric used for matchmaking based on titan score is inherently flawed as it attempts to assess someone’s performance in one aspect of the game completely unrelated to another aspect of the game. The way I see it now:

1. The titan score component of alliance score is based on the alliances historical ability to defeat titans of a certain strength and is used to help match a titan of appropriate strength to the capabilities of the alliance.

2. The individual players’ number of cups is based on their historical ability to defeat other opponents of a certain strength (who have also proved themselves) and is used to help match another player of an appropriate strength to the capabilities of the player who raids.

So, I am basically thinking why shouldn’t alliance wars be the same way? There should be a score that is reflective of an alliance’s historical ability to defeat other alliances of a certain strength (who have also proved themselves) that can be used to match different groups together. Although I see the need to address several issues at once such as mercing, alliances splitting, multiple alliances that share their members, etc., I disagree that simply storing more performance metrics is a necessary solution to make a good Elo system.

Instead, I am proposing here for the introduction of an Elo system that evolves from as close of a matchup that can possibly be made using other performance metrics already available in the game. Here is my idea:

A) Take a survey of members in the alliance who would like to participate in an alliance war
B) Use the survey results and add take the average trophy score of these members
C) The average trophy score represents (as accurately as I can come up with) the initial Elo score for AW
D) Let the alliance partake in a single war with another one who has the same number of willing alliance war participants and a very similar average trophy score calculated in B).
E) Let the Elo score respond to victories and losses accordingly, just like with raids. The difference here is that each time, the Elo point ratio will be +x/-x for every war, and never with an uneven points distribution. Never perform future matchmaking based on steps A)-D) after an alliance has had its first war.
F) Stay the hell away from average trophy score after this point (since its continued use has detrimental consequences on future matchmaking as explored in past threads) and let the alliances find their appropriate positions on the Elo leader board based on their past historical performance while also continuing to allow for the ability of members to opt out (remove their war defense teams from the battlefield).

Based on this system, matches might be initially unfair, but the continued ability of the system to respond to alliance victories/losses and use past historical performance data to determine future matchups is better for the long term. I will try to address as best I can possible ways this system could be abused in a different post; in particular, B) and C) can be problematic with respect to Elo responsivity if an experienced alliance that wars for the first time under this new matchmaking system intentionally tanks cups or if its members intentionally exclude themselves from the initial matchmaking while including themselves all at once suddenly in subsequent matches.

1 Like

I appreciate the support and the counter-proposal @Mezbot9754

I like the concept of seeding the initial Elo starting point with Cup ratings (as a one-off starting point) and the thought behind the survey… but from there it looks like it’s a straight results-driven Elo system.

My concerns with this are:

• You probably won’t get the participation in the initial survey to make it anywhere close to representative… unless of course you mandate it for AW entry I suppose.
• The system I devised is designed to allow the concept of individual player opt-out as well as individual player migration between alliances without prejudicing the old or new alliance’s matchings in the war. Running a traditional Elo system as you propose makes it vulnerable to this. It will balance after a time, sure, but there will be constant ‘churn’ due to aspects such as mercing and normal coming-and-going of members (in teamed alliances, etc) that I fear the Elo score for such will remain unstable.
• My original fear is that you won’t have sufficient granularity given the number of encounters to allow it to be properly responsive, so alliances may find themselves with essentially uneven match-ups for quite a while in real time before it balances.

As such I proposed the ‘modified’ Elo in tracking individual players’ performance as well as that of the alliance as a whole, to allow some players to opt out from time to time, or move to other alliances temporarily or otherwise, and their performance will exit or move with them, thus modifying the Elo score of the the old and/or new alliance and making it more responsive.

It may well be, however, that the simpler system you propose would be good enough… but I feel some thought may need to go in to people movement and/or opting out. This is the main difference between an individual Elo (such as for Chess, or Raids) that is only sensitive to a single person versus an Alliance-based Elo that has a lot more ‘moving parts’ that determine the performance of that alliance.

It really is a non-trivial subject this… I suspect few would have realised just how deep it could go if you wanted to make it a truly ‘fair’ system.

1 Like

What is wrong with the cups system used for raiding? Can’t this be used for alliance wars as well? Let’s have a rating count for alliances that is not tied to titans or trophies. Have this as a third rating system for the leaderboards.

Give everyone some score today (maybe start with the titan kill score). Then, adjust the score based on each war win/loss. If you win, you gain score, if you lose, you lose score. If you beat someone with a much higher score, then their adjustment is bigger (like with trophies). That way, people who keep winning will ultimately be matched against someone who is their level. People who keep losing will be matched down with a better matchup.

There are many factors that affect an alliance’s performance in wars- roster depth, player participation, team coordination…let the people who try hard fight other people who try hard. And let the casual people fight wars against other players who are not hardcore.

1 Like

I literally just proposed that in Little Infinity’s Elo thread. Check it out and let me know what you think:

Elo System for AW match-making - maybe not as hard as you think

I disagree that you said the same thing. The ELO thread, including your post, is suggesting a more complex system tied to individual players’ performance combined. I’m suggesting that the scores should be tied to alliance. The option to “opt out” of a war would be unnecessary since that person who opts out would always opt out and the war performance would reflect that.

I don’t think people will abuse this system.

The current system is NOT being intentionally abused. It’s just not accurately accounting for alliance strength.

Okay, sure not EXACTLY the same thing, but we do share this idea:

In my case, I am saying maybe start with the average trophy score and the count of members who are interested in participating instead of the titan score.

The olther thread is about ELO System matchmaking, as per its title. I think both threads can coexist.

EDIT: Errrr nope, @Mezbot9754 made good arguments. Merged it is!

2 Likes

Looks to me like the ideas between @Mezbot9754 and @goldensurfer779 are sufficiently close.

Your call as to whether the threads stand alone… but I did post some concerns about the proposed system (that surprise surprise applies to both) in the other thread… so guess we’ll just have to link between them.

My rebuttal and/or reasons for not proposing a straight overall alliance Elo system as is suggest here and by Mezbot are linked below. (Believe it or not, I did give it some thought and settled on the more granular system I proposed. I’m also convinced it can be implemented without massive resource… it took me all of 15min to come up with the high-level algorithm / approach).

To answer the initial question: cups should not be used in any matchmaking system because players can fluctuate cup numbers at will.

If we want a fair system to match players up for war, these combatants should NOT be able to effect any significant changes on their own score that are outside the game-controlled system.

EDIT: Nonexistent “War Cups”, maybe.

2 Likes

That’s not quite what OP was asking… OP is asking for a cup (like) system to match groups in AW; these “war cups” would definitely not be the same as raid cups. Alliances would have a certain number of “war points/cups” used as criteria to determine future matchups. This falls under the idea of an Elo system, already being discussed in other threads, which is why I suggested closing the thread in the first place.

Yeah, no kidding, but certainly worth all the discussions that are taking place.

1 Like