5

I'm working on an engine that implements the UCI protocol that is intended to play against other engines. Since the UCI protocol has no commands for offering or accepting draws, how does this work when games run into the 50-move or threefold repetition rules? Do engines just never offer a draw? Then, would it not be possible for the game to just never end because there is no way to force a mate and neither engine will offer a draw?

Rewan Demontay
  • 16,942
  • 4
  • 65
  • 109
mclaassen
  • 151
  • 2

2 Answers2

3

Your engine doesn't need to offer a draw. This is the responsibility for GUI. A good GUI should stop the game for 50 moves or three-repetition.

If you want to run game matches, try: https://github.com/cutechess/cutechess

ABCD
  • 22,419
  • 2
  • 43
  • 82
  • So if I am playing another engine and using a GUI just to adapt my engine to FICS protocol on for example freechess.org the GUI will just automatically claim a draw after 50 move or three repetition rule on behalf of my engine? – mclaassen Dec 07 '17 at 22:53
  • @mclaassen Which GUI do you want to use? The FICS server will certainly know 50 move draw and three repetition rule. – ABCD Dec 07 '17 at 23:00
  • 2
    Xboard. From what I understand though the 50 move and three repetition rules just give players the option to claim a draw, it is not an automatic draw. So if both engines do not have any way to claim a draw, what happens? – mclaassen Dec 07 '17 at 23:05
  • @mclaassen I believe they are automatic drawing. It's like stalemate. – ABCD Dec 07 '17 at 23:05
3

Drawing is usually done by the hosting application / GUI. Stockfish even has a nasty bug producing totally ridiculous moves if you play on after move 50. BTW, UCI does not specify offering a draw, this is only provided by the Winboard protocol.

Jens
  • 246
  • 2
  • 4