Local match manager available (unofficial)


I’ve updated my match manager from Halite II to run this latest game:

It can be used to run endless games between local bots, producing a ranking table as it goes.

The conversion has been very quick and simple, there may be (probably are) issues which I haven’t identified yet.

I haven’t yet got the official visualizer+gym working, so I don’t know if this offers anything not offered there. I may or may not update it any further, but am making it available now in case it’s useful to someone.


Thanks, @Akarabesu! A link to this tool will show up under Community Tools Downloads after our next deploy.


I seem to be missing the match id’s when running, are they printed anywhere?
Using -V ### I don’t know what numbers to use.


You can get the match ID numbers with the -R flag for Results:
python3 manager.py -R 0

The zero is the offset, meaning it will fetch results from the most recent matches. Increasing this number will fetch older matches.

Unfortunately it seems the Fluorine visualizer doesn’t accept the replay filename as a command line argument and I haven’t successfully run the official one, so I haven’t actually got the visualizer part of the manager working (it’s left over from previous contests). If you do get it working with one of the available visualizers I’d be interested to know. :slight_smile:

The Results table will also show you the visualizer filename, so you can open it manually as a workaround.


Thanks. I’ve been using fluorine with it just fine. I forked on gitlab, you can check out my changes there. I installed electron ‘locally’.


What’s the lowest sigma anybody can get when running manager.py? I had 50,000 matches and sigma never goes below 0.7.


Yes, that’s about what I normally see. In my current ranking table the lowest is 0.6922 from a bot with 1161 matches. There are other bots with more than 2000 matches and a sigma over 0.8 because their results are even less predictable. Other ranking tables have had bots with over 10,000 matches and still nothing with a sigma much below 0.7.

Other trueskill implementations may give lower sigma scores from the same result set, but I haven’t really looked into them. I believe there are a few other Python implementations available though.


TrueSkill has a constant that is essentially the lowest possible sigma. Trueskill was originally designed for human players, with skill levels that change overtime. Because of that, default TrueSkill avoids completely locking in a rating.

You can change this if you want to monkey with the match manager code

In master/match.py, after the line game_info = ...

Add a line game_info.dynamics_factor = 0


I’ve made a few changes to the match manager:

  • Error logs and replays are now stored in a separate directory (“error_replays” by default)
  • The player with the highest sigma who has played fewer than 1024 games is always selected for matches.
  • It can launch the Fluorine visualizer if you have it installed (default directory is “…/fluorine”)

They are not necessary to have, but the first one in particular I think is quite useful.