Roller chess

Roller is a fun little javascript chess program that only knows the rules (except 3-fold repetition).  It has no semantic knowledge like piece values etc.  It plays by performing thousands of random rollouts from the current root position.  No search strategy at all.  In effect it’s a “pure” MCTS algorithm.  Wins, losses and draws are scored 1, -1, 0 and it simply chooses the root move with the highest net score.  Obviously at the start of a game this is mostly just random play but it can avoid mate and give mate when they are clearly in sight.  You can play Roller here:-

The “kr/s” figure is showing thousands of complete rollouts (random games) per second.

Interestingly when pitted against a true random mover version of itself (called rollerRandom), Roller wins all of the games other than sometimes accidentally falling into 3-fold repetition.

Roller can be used in Arena etc like Lozza.

Roller source is here:-

If rollouts last longer than 450 ply, a draw is assumed, as some crazy games can last longer than 1000 ply.  This does kinda of compromise the no-knowledge (or “zero”) element, but I can live with it.

It does not terminate at known draws like KK for example, because that is  definitely feeding in knowledge; however tempting it is to do so in the name of kr/s.


Leave a Reply