unserializable / monchester

Monchester, chess engine for CECP interfaces and console
GNU General Public License v3.0
4 stars 1 forks source link

Force slight score randomization on default compile for CECP interfaces/bridges that do not send 'random' #3

Closed unserializable closed 3 years ago

unserializable commented 3 years ago

Some CECP interfaces or interfaces pretending to be CECP interfaces do not act as XBoard / (Winboard) in the regard that after new command they do not send "random" command as part of initialization string.

For example, this causes Monchester to play deterministically when running under lichess-bot.

Since this 1.0 branch of undead code is meant as fun scholastic engine, not the boring one to beat with once-discovered winning line(s), it is desirable to have the slight score randomization in effect at all times.

Will add a feature define in FEATURE_FORCE_SCORE_RANDOMIZATION in features.h, ON by default. This feature is actually conflicting with DISABLE_SCORE_RANDOMIZATION compile-time define, so give compile-time error, if they are both set at the same time. Completely removing non-deterministic play compile option is not desired, as deterministic behaviour compiles can be useful for testing purposes.

Problem at lichess was reported by Vambo, who perfected beating Monchester 1.0 at Lichess, in its deterministically preferred Nimzowitsch Defense: Woodchuck Variation

[Event "Rated Blitz game"]
[Site "https://lichess.org/nEq7Hwqs"]
[Date "2020.11.20"]
[White "vambo"]
[Black "monchester"]
[Result "1-0"]
[UTCDate "2020.11.20"]
[UTCTime "07:51:15"]
[WhiteElo "1689"]
[BlackElo "1684"]
[BlackTitle "BOT"]
[Variant "Standard"]
[TimeControl "300+3"]
[ECO "B00"]
[Opening "Nimzowitsch Defense: Woodchuck Variation"]
[Termination "Normal"]

1. e4 a6 2. d4 Nc6 3. d5 Ne5 4. Bf4 Ng6 5. Be3 Ne5 6. Nf3 Nxf3+ 7. Qxf3 c6
8. Nc3 b6 9. O-O-O cxd5 10. Nxd5 Bb7 11. Bxb6 Qc8 12. Nc7+ Qxc7 13. Bxc7 e6
14. Bc4 Bc6 15. a3 Bb7 16. Qd3 d6 17. Bxd6 Bxd6 18. Qxd6 Bxe4 19. f3 Bxf3
20. gxf3 Ne7 21. Bxa6 f6 22. Bb5+ Kf7 23. Bc4 Nd5 24. Bxd5 Ra7
25. Qxe6+ Kf8 26. Qc8+ Ke7 27. Qxh8 Kd6 28. Qb8+ Rc7 29. Qb6+ Kd7
30. Ba8+ Kc8 31. Qd6 Kb8 32. Qd8+ Rc8 33. Qd6+ Kxa8 34. Qa6+ Kb8
35. Rd7 Rxc2+ 36. Kxc2 f5 37. Qb7# 1-0
[Event "Rated Blitz game"]
[Site "https://lichess.org/2ELoe2Fq"]
[Date "2020.11.19"]
[White "vambo"]
[Black "monchester"]
[Result "1-0"]
[UTCDate "2020.11.19"]
[UTCTime "15:37:44"]
[WhiteElo "1619"]
[BlackElo "1654"]
[WhiteRatingDiff "+43"]
[BlackRatingDiff "-13"]
[BlackTitle "BOT"]
[Variant "Standard"]
[TimeControl "300+3"]
[ECO "B00"]
[Opening "Nimzowitsch Defense: Woodchuck Variation"]
[Termination "Normal"]

1. e4 a6 2. d4 Nc6 3. d5 Ne5 4. Bf4 Ng6 5. Be3 Ne5 6. Nf3 Nxf3+ 7. Qxf3 c6
8. Nc3 b6 9. O-O-O cxd5 10. Nxd5 Bb7 11. Bxb6 Qc8 12. Nc7+ Qxc7 13. Bxc7 e6
14. Qd3 Bc8 15. f4 Nf6 16. h3 Ng8 17. g4 f6 18. f5 Nh6 19. fxe6 d6 20. Qc4 Ra7
21. Qc6+ Ke7 22. Bxd6+ Kd8 23. Bc7+ Ke7 24. Bd8# 1-0