Heiaha / asyncLio-bot

A bridge between UCI chess engines and Lichess.
GNU Affero General Public License v3.0
5 stars 1 forks source link

PerfType specific min_games, even better use rating_deviation? #18

Closed lucasart closed 10 months ago

lucasart commented 10 months ago

This code in in matchmaker.py

if other.total_games < CONFIG["matchmaking"]["min_games"]

is looking at the total number of games, across all PerfType.

I don't think this is a good idea. Most bots are only capable of specific PerfType. For example, many bots only accept bullet and blitz, but not rapid (or classical, or chess960, etc.). So, when you look for rapid games, your challenges will be declined by such bots, wasting challenges (which are limited by lichess). It would therefore make more sense for the verification to be done for the specific PerfType being requested for the challenge.

In fact, making the condition rely on rating deviation would make more sense than using number of games. Suppose a bot used to play rapid, but then the owner changed the settings to only accept bullet and blitz. As a result, the number of games in rapid will remain constant, but the rating_deviation will decay, so eventually you can stop sending wasteful rapid challenges to such bots without having to code more complicated rules.

Heiaha commented 10 months ago

I don't want to do rating deviation only because even though it is theoretically simple/sound for the issue you've described, it is more opaque for most people when deciding which threshold to choose.

I chose total number of games rather than by PerfType so that if a bot had played a threshold number of games across all Standard time controls, it would still trigger. I think doing PerfType with a lower threshold would work well too, but since I think most people who host bots have them play Standard chess across non-correspondence time controls, this solution is simple and works pretty well.