Suggestion: display elo ratings of opponents in replays

Thanks! Got it. Maybe an offer for a reducing “unintended matches” is to remove all algorithms from match queue which ELO is below 0.
We all start at 1500, if I get it right it is at least 10 matches to lose in a row to get below 0. By that time person probably should begin with another strategy seeing that current is not working well.

Maybe this kind of matches are not that many, max 5% of all, but if it is not too difficult it is an idea.
(I got 5% by roughly estimating my matches with negative ELO algorithms).

These changes look great, but I think there should be a different approach as to how each bot gets selected for a match.

Currently, I’m noticing that sometimes newly uploaded bots will play a quick session of 5 games before going into “1 or two an hour, if lucky” mode. It doesn’t happen all the time, and I’m not sure if it’s intended, but I think this “placement match” idea should be expanded on.

For instance, a newly uploaded bot would differ from older bots in a couple of key ways.

Firstly, their elo changes are more volatile. Winning the first several matches should give it a significant boost, compared to an older bot of the same elo that has an established record of “I belong here.” This decays over the course of several matches, making elo changes a little less susceptible to a win or loss, apart from the difference in elo in the match.

Secondly, new bots, with volatile elos, would be the ones initiating the matches. As the challenger, it’s primarily looking to challenge a bot with higher elo (bad bots would start to challenge down as it becomes apparent they’re over-elo). The amount of challenges, as with how volatile elo changes are, decays over time, and less games are played, particularly as the challenger.

By comparison, older bots play very few matches as the challenger and don’t move in elo as much. They still play games regularly as the challenged, but overall less games than a new bot would play.

In a broader sense, this would fix some of the design issues laid out:

  • Lower level players reach their elo quicker, as they had more to lose in the beginning. It doesn’t take too many matches for them to clearly be at a lower level, and priority for their matches can be tuned down.
  • Server time playing games with little consequence is avoided, as most matches have a challenger with something to gain (more matches to the newer bots), even if the challenged bot has little to lose (fairly stable elo)
  • High levels gain mobility, particularly for newer bots that show dominance over older ones
  • Fairer for top players. Although older bots don’t have much to gain in a given match, this is actually desired. Instead of the top bot continuously gaining elo from old matches until its elo is too high for new bots to reach, top players gain the advantage of putting down a newer bot that has more susceptible elo, helping to reaffirm their top status. On the other hand, newer bots upsetting older ones would be able to surpass the older bot’s elo, without the older bot losing too much elo. This keeps the “top bar” from creeping too high, while still enabling newer bots to reach that top bar.

Downsides:

  • Top players still have little to “gain” in a match, but as detailed above, I don’t think that is desirable.
  • Bots with “unlucky” early matches or even “very lucky” early matches can get placed out of their actual elo, and this can take a long time to adjust, particularly since the bots play less matches over time.

Other things to note are that new bots uploaded by high ranked players don’t have to start at 1500 elo. Or if they do, they don’t need to start with the same elo gains per match. Note that reducing elo gains from a player who historically has uploaded low elo bots would give them an undesirable disadvantage, so this would be done specifically to help the servers place bots that are probably high elo into high elo in fewer games.

Edit: Regarding rematches, this helps reduce their necessity as well. Because the bots in a match don’t have the same amount of elo to gain/lose, it makes the deterministic match significantly less dependent on what elo the challenger was when they played their one match against a given bot. Although you would still want high gains for higher differences in elo, as well as higher losses for significant differences the other way, it is more a factor of how volatile the challenger’s elo is, as most matches would challenge up a fairly consistent amount.

I also seemed to have neglected the factor by which how “volatile” an elo is changes. I wouldn’t know for sure how to implement this, as making it based solely on the number of games makes the higher elos less reachable (assuming each bot starts from 1500). Another idea, besides not starting each bot the same, would be to stabilize the elo as win ratio approaches 50/50. As long as a bot’s on a consistent win streak (or lose streak, for bad bots), the bot’s elo remains volatile.

1 Like

This is great input. Firstly, you’re right, when you first upload an algo it gets prioritized for 5 matches so you can get immediate feedback. However, its not too useful right now because you have to start back at 1500 ELO and may get matched with algos that have extremely low or high ELOs.

We were thinking of something similar to your idea, having new algos you upload start with the ELO of the highest ELO algo you’ve had.

There are some issues with this, most obvious is simply ELO inflation. There are also probably a few ways to game the system, keep reuploading the same bot until you get matches with algos you happen to counter for example. But in the long run ELO should even out and it would be easier to assess modifications to your algo because it would play against more competitive algos close to your previous algos ELO.

Having your first few matches have exponentially higher ELO changes could also help. Additionally, I know some games have it so that win or lose streaks exponentially increase how much your ELO changes. For example if a user “smurfs” (makes a new account even though they are an experienced player), they will win many games in a row since they will be matched with other new players at first. With exponential ELO changes for win streaks, it would only take a few matches for the system to realize the player is a “smurf” and will set the account to have a high ELO even though its a new account.

In general though I believe the fundamental problem with our current match making system is it prioritizes having a fair distribution of quantity of matches over having a close ELO high quality match. Essentially we prioritize minimizing the time between matches a bit too much. When your algo is looking for a match the system will choose an algo that hasn’t played a match in awhile over an algo close to your ELO. Though we also have some unintended behavior in our code that once fixed might solve some of these issues too.

We are still discussing what the best approaches are and what to prioritize so your feedback is welcome!

3 Likes

Thanks, I guess I should clarify that’s not my idea so much as my observations from the Halite competition, which had a very successful elo system (although, the game map was randomized so rematches were necessary and not avoided, which made the above system easier to implement).

Gaming the system certain wants to be avoided, and I can attest the above system has minor gimmicks. One of those pitfalls, “unlucky” starts, could be avoided by just taking down the unlucky bot and reuploading it until it got a “good” start. However, this just helped expedite getting the bot to its appropriate elo and getting feedback on how it’s doing, not necessarily changing its final outcome.

Elo inflation can be avoided by starting at a “fraction” of where the previous left off, or by multiplying the initial elo gains by a factor of the distance from 1500 and starting each bot at 1500. This makes each bot have to “prove” it belongs where its predecessor is, or higher, while still having the means of getting there with larger initial gains (or losses).

Increasing the volatility by win streaks/lose streaks is not something I’d recommend. Volatile elo is something that should be maintained by streaks, not gained. Otherwise inflation is inevitable by random circumstance if the gains don’t significantly taper off at the top (which reintroduces mobility problems at the top).

I agree that the primary concern should be with “fair distribution of matches” that’s introducing a lot of issues, but when that’s fixed there will still be room for improvement on the turnaround time of getting an algorithm to an appropriate elo.

Any updates on first improvement?

I mentioned it in another thread, but we will likely not be deploying these changes until next week. We are currently prioritizing features and fixes relating to our UMich event this weekend for business reasons.

1 Like