Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
unserializable opened this issue Nov 21, 2020 · 0 comments
Assignees
Labels
1.0 1.0 branch 1.0.2 Present in release bundle 1.0.2 enhancement New feature or request
Projects

Comments

@unserializable
Copy link
Owner

unserializable commented Nov 21, 2020

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
@unserializable unserializable self-assigned this Nov 21, 2020
@unserializable unserializable added 1.0 1.0 branch enhancement New feature or request labels Nov 21, 2020
unserializable added a commit that referenced this issue Nov 21, 2020
as ome 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.

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.

Completely removing non-deterministic play compile option was not desired,
as deterministic behaviour compiles can be useful for testing purposes.
@unserializable unserializable added the 1.0.2 Present in release bundle 1.0.2 label Jan 24, 2021
@unserializable unserializable added this to Done in 1.0.2 Feb 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.0 1.0 branch 1.0.2 Present in release bundle 1.0.2 enhancement New feature or request
Projects
1.0.2
Done
Development

No branches or pull requests

1 participant