petersn / AtaxxZero

Simple AlphaZero style engine for Ataxx.
4 stars 0 forks source link

protocol #1

Open ghost opened 5 years ago

ghost commented 5 years ago

Hi,

Wouldn't it be great if AtaxxZero could battle against other Ataxx programs? There's a protocol for that now; UAI, based on UCI (chess interfacing protocol). For more info, see https://www.ataxx.org

petersn commented 5 years ago

Thanks so much for commenting this, I didn't realize that this community had become lively! I actually wrote this program originally at the suggestion of the author of TikTaxx. Maybe this weekend I'll try getting my program compliant with UAI so I can try running it against other folks, and I'll upload my best model weights, so other folks can run my engine as well.

I have one question, has the community settled on any rules changes to make Ataxx games always terminate? I ran into the problem that an engine in a losing position would simply force a repetition, and without a rule to cause a draw this would just loop forever. Maybe a year or two ago the author of TikTaxx and I discussed adding a threefold repetition rule like in chess, and also testing our programs under randomized opening books, like how folks compare chess engines.

Personally, I'd be in favor of the community adding the following rule to Ataxx:

A player may not make a two-space move if the last twenty plies have all been two-space moves.

This rule has a bunch of really nice properties:

ghost commented 5 years ago

Thanks so much for commenting this, I didn't realize that this community had become lively!

No problem!

I actually wrote this program originally at the suggestion of the author of TikTaxx. Maybe this weekend I'll try getting my program compliant with UAI so I can try running it against other folks, and I'll upload my best model weights, so other folks can run my engine as well.

Would be very cool! I'm very eager to list it on ataxx.org as it is very noteworthy. Ataxx.org is not really the main source on Ataxx but I'm hoping it'll become that.

I have one question, has the community settled on any rules changes to make Ataxx games always terminate? I ran into the problem that an engine in a losing position would simply force a repetition, and without a rule to cause a draw this would just loop forever. Maybe a year or two ago the author of TikTaxx and I discussed adding a threefold repetition rule like in chess, and also testing our programs under randomized opening books, like how folks compare chess engines.

Personally, I'd be in favor of the community adding the following rule to Ataxx:

A player may not make a two-space move if the last twenty plies have all been two-space moves. This rule has a bunch of really nice properties:

  • Every 21 plies must contain at least one one-space move, meaning that a game must resolve in at most 861 plies (assuming four blocked spaces).
  • It barely changes the dynamics of the game, much like how adding the fifty-move draw rule to chess barely changes the dynamics of the endgame, but makes all games terminate pretty quickly.
  • It avoids a bunch of the problems with a threefold repetition rule, for example draws are still impossible, and you don't need to track any game history. FEN strings are still sufficient to describe the exact game state, if we add a "two-space moves in a row" counter to the end.

We currently have a 50 moves-rule that gets resetted after a capture. Unfortunately this could still trigger infinite loops. I showed your message to Twipply and I hope is going to reply as well about this. He is pondering about resetting the counter when a single move is done which would be mostly the same (?) as your suggestion(?).

regards

-- www.vanheusden.com www.slimwinnen.nl www.winnenmetbitcoin.nl

www.hackerspace-gouda.nl www.slimmetvalutahandelen.nl

kz04px commented 5 years ago

I have one question, has the community settled on any rules changes to make Ataxx games always terminate?

I made an attempt that involved a 50 move counter being reset upon a one-space or a capturing move being played, but it turns out infinite loops still exist. Resetting the counter upon a one-space move instead was my immediate thought, but isn't yet implemented as this only happened a few days ago.

If you show up in ##chessprogramming on freenode.net I'd like to see you.