Single player Elo - propose your ideal version

keithburgun

Administrator
Staff member
#1
Hey so I have a couple of new games coming out, maybe more like three or four, and I need a good single player Elo solution for all of them. I have learned a lot of important things from Auro, which was the first time such a thing had been implemented.

Takeaways from Auro:
- There weren't enough ranks, which meant that players would often be sort of "between ranks" and constantly playing matches that were much too easy, or much too hard (like bouncing between rank 9 and 10 or something).
- It feels bad to "rank down"
- The engine of "watching the bar climb up" works for awhile, and then basically stops working at some point.

My current best solution:
- More ranks, maybe 30 is an okay number to start with.
- We no longer show players the bar and the specific amount of points they have to the next level. Instead we have an XP bar that goes up every time you play (more from wins) and is tied to some light unlocks stuff, and maybe an "account level" (that's similar to "level" in League)
- We tell the player when they are close to ranking up "Win the next two games to rank up!" or "You ranked up!", and we also let the player see what rank they are in some little "Rank 15" text maybe in gameplay but certainly in between matches.
- You can't rank down.

Also:
- When you first start, the game will ask you "are you totally new to this, have you played a little, or played a lot" and the game will zip you to ranks 1, 10, and 20 respectively. You can also manually set your rank at any time from the options to one of those.

The good news is, I feel like almost any solutions we implement in the future will be better than Auro's, and Auro's wasn't even that bad at most levels of play.

(Right now I am only interested in solutions that deal with binary goals, so if you object to binary goals this isn't the thread for that discussion!)
 

vivafringe

Moderator
Staff member
#2
IMO the “lots of ranks” approach has already been implemented by @BrickRoadDX. It works ok but definitely has some drawbacks:
After a while ranks become so arbitrarily high that going +1 rank no longer feels like an accomplishment. Going from rank 52 to 53 isn’t very interesting.
I gets to be a grind sometimes when you know you could be winning at rank 70, but you’re at rank 50 and need to plow through 20 ranks to get there.

In Auro I lost interest because of the issues Keith described. In Solar Settlers I had a different issue, where I just stopped caring about the game’s fundamental extrinsic goal, gaining ranks.

The main motivation I have in strategy games is to see a “mountain” that I need to scale. This is a massive, difficult challenge that looks formidable when I start, and feels rewarding if and when I finally scale it. Then, when I climb it, hopefully there’s another mountain over the horizon to scale that looks just as formidable and challenging.

Things that are strongly demotivating are if:
A. I have to climb a mountain I’ve already scaled, which is what happened in Auro
B. There are no mountains, just a steadily increasing slope of tiny bumps

Anyway, my favorite rank system would be:
  • *Even fewer* ranks than Auro. Slay the Spire only has 15 total and it feels like maybe too many. Who cares if you are Ascension 12 or Ascension 13? I might try 10.
  • Once you ranked up, you wouldn’t be able to derank.
  • Difficulty might steadily creep up as you leveled up within a rank, somewhat decoupling the idea of “rank” and “difficulty”
  • In other words, it would embrace the idea of rank as an extrinsic reward, and try to provide meaningful goals to the player to pursue.
  • It would be tuned so that a 50% winrate would climb. If you set 50% winrate to be “maintain same rank”, in practice people will win too much, since almost no one is ever “maintaining rank”; almost everyone plays until they stop climbing, and then they quit. As people play, their skills naturally increase, and thus their winrates will be significantly over 50% as they climb through the ranks. Axes and Acres ranks you up if you win a game, and down if you lose 2 games in a row. This feels about right to me.
  • Game length is a big factor in determining how many games it takes to rank up. Ideally you’d want a 50% player to be able to rank up in 1-2 hours. This feels like an achievement but also isn’t burdensome.
 
#3
If exact progress is hidden, I'd simply add a tolerance window to rank changes - you don't gain progress from a win unless you've won 7 out of your last 10, and you don't lose progress from a loss unless you've lost 7 of the last 10. The game could even give vague feedback based on when you're in the 7/10 state, so long as it isn't explicit that the bar isn't moving otherwise.
 

BrickRoadDX

Maker of BrainGoodGames
Staff member
#4
What about big chunky ranks + winstreak 3 being a rank up and no deranks as the simplest implementation of that idea @vivafringe

Also, thinking about this more, one problem I have with playing 1p ladder games (and ranked multiplayer games) sometimes is that it can feel like when I come back to play again, I'm expected to play as well as I ever have! It sort of feels like it'd be nice to have a system that naturally starts a little easier at the start of a multi-match session and then by the end I see if I can pass my all time high. Something like, slightly too easy, my rank, and can you do this?
 
Last edited:
#5
If you set 50% winrate to be “maintain same rank”, in practice people will win too much, since almost no one is ever “maintaining rank”; almost everyone plays until they stop climbing, and then they quit. As people play, their skills naturally increase, and thus their winrates will be significantly over 50% as they climb through the ranks.
This is a well studied problem in control theory. In most applications the solution is usually to use an integral term to help determine the value of your control variable. In the context of game difficulty that means that the amount you adjust the difficulty by after each match is not only determined by whether or not the player won the match (the error term. A win gives error = 1 - 0.5 and a loss gives error = 0 - 0.5), but also by the sum of all their lifetime errors. You combine the two terms as follows: Δ difficulty = c*Error + d*Integral where c and d are constants determined by tuning. That way, if the player has been winning too much then the sum of their lifetime errors will become large and positive, causing the difficulty to increase faster.

If you want to keep the player at a different win-rate then you just replace the 0.5 in the error calculation by the desired win-rate.

I'm not saying this is necessarily the best setup for an elo, but if you care about keeping the player at the correct difficulty even as they improve then I think this is a good bet.
 
Last edited:

keithburgun

Administrator
Staff member
#6
Also, thinking about this more, one problem I have with playing 1p ladder games (and ranked multiplayer games) sometimes is that it can feel like when I come back to play again, I'm expected to play as well as I ever have! It sort of feels like it'd be nice to have a system that naturally starts a little easier at the start of a multi-match session and then by the end I see if I can pass my all time high. Something like, slightly too easy, my rank, and can you do this?
Hmm. Weirdly enough I feel like I never really lost much skill taking breaks from Auro. But maybe if I was at a much higher skill level that would start becoming the case.
 
#7
Are we allowed to suggest player-chosen difficulty here?! I'd like that, but with the game tracking results, offering nice statistics and charts, and recommending a difficulty. I'd also have a 'mastery level' which is separate to the more dynamic recommended difficulty and never goes down, like if you become a chess grandmaster, you are one for life.

And because these things are just information and don't have to be in some way mathematically correct to fit some idea of a mathematically ideal metagame progression, I don't think the exact rules for how they change matter a huge amount, except that they're simple. Something like 3 or 5 wins/losses in a row to make it suggest a different level. And the permanent mastery levels maybe something like reaching +30 aggregate win/loss over any run of 50 matches (40/10 or better). And no restriction on which you play so you can go straight to grandmaster in 50 matches if you like. With nice detailed stats and charts, maybe the player can sort of invent their own metagame then based on them.

Another thing I think I prefer is few levels, about 10 as Vivafringe and Brickroad said. A few reasons:

One is, as someone was saying on discord the other day, that different players can then feel like they're playing exactly the same game as each other when discussing strategy. "I play in grandmaster level" - "yeah me too" etc.

Another is that fewer levels mean the difficulty adjustments can be made in clearly understandable ways, like "in this level you start with an extra ball" etc. With lots of tiny difficulty increments it'll be "gold output increased from 51% to 51.5%" or something. Not only is that likely to lead to game with mathy mechanics (some like such games, some don't), but also how meaningfully can we make 50 distinct difficulty levels relative to how much randomness there might be.

A final weird thought actually is that if the difficulty were changed in an interesting and distinct way instead of just some numerical tweak, perhaps the different levels could be made not only increasing in difficulty, but also having some interesting quirks of their own that would be fun to play with. Like if Auro had 5 spells on the lower levels and went down to 4 for the harder ones, that kind of thing. That's more of a speculative thing though - probably hard to find enough things to change like that and for it still to be recognizably the same game at the end of it all.
 
#8
Ill try my best to express my thought, please take them with a grain of salt.


There is one thing which is essential to me:
  • Having fun while playing the game, being in the flow.
For this i understand the Elo system as a tool. It gives me my personal optimal level of challenge.

I don't care for the exact rank. I don't want to see the rank.
A Keith wrote, climbing up the ladder loses fast its motivation power. To get ranked down leaves me with a negative feeling.
Ill like to see it hidden. For me the rank number itself is a extrinsic goal i don't like. Fighting against myself to beat my high score. Although every rank provides a new experience.

I propose more variety. Not difficulty (Nevertheless some more ranks would be good to better find my optimal level).
More different enemy's and levels (and whatever other mechanics) i can play on my rank.
The scale should not only go up and down, but to right and left.

In other word: Elo gives me my personal height to play "from left to right". It shouldn't be so much about climbing up the rank ladder.
Maybe you don't have to spend so much effort for providing harder and more harder content ("squeezing" more parts in the same space). But more about different content (exchanging parts in the same space, or even changing the space).
Does "more interesting / learning new things" always means harder?

Not the best, but maybe a good understandable example: Think of a Zelda game with a Elo system.
I'd like to play Zelda not on a absolute level of difficulty, but on relative, my personal one.



Not so much about the topic here but close to it:
I'd like to see the idea of the Elo system, an adaptive difficulty, in every game. Even in shooters.
I don't want to choose from a menu what difficulty i want to play, the game should provide me my personal difficulty the way the game designer intended it.
Difficulty is different for every person. But the designer wants (?) to have them all the same personal experience with his game.


Even if this doesn't make too much sense to you, it hopefully inspires you to new ideas. :)
 
Last edited:
#9
I would like to see an ELO system that quantifies a non-binary goal. For instance, a traditional roguelike (not that we necessarily need more of those) where you get up to 5 ELO points based on how much loot you get, but you lose 3 points if you die before making it out of the dungeon... so the player can get more than just binary feedback, and can have some really epic wins (that make them quickly rank up if the difficulty is too low). (When at a good rank for them, a player would probably get about 2-4 points worth of loot and then die, earning +/- 1 points... but occasionally make it out and earn 4-5 points, or be too greedy early-on and lose 2 or 3 points.)


I'd want there to be no technical maximum rank, but for there to be a nice stopping point (like the legend rank in Hearthstone) somewhere around the 100-hour mark for a skilled player. I don't really want to be playing a certain single-player game my whole life, I would rather play it until I'm quite good at it and then quit when I reach rank 10 or whatever. (This is one of the few things I like about Slay the Spire, it gives you a nice stopping point after 45 progressively more difficult wins.)