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.
- 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.