-
Notifications
You must be signed in to change notification settings - Fork 29
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
Implement engine parameters UCI_Variant and Threads #6
Conversation
Nice, thank you! I should be able to look into this more closely sometime next week. A thought: Right now, chess-annotator determines if a move needs an annotation via calculations in But I've noticed that stockfish's evaluations of crazyhouse games tend to swing a lot more than they do for chess. I don't know if that's because crazyhouse positions are inherently "sharper" than they are in chess, or if there's some other property of stockfish-zh that I don't understand that makes it that way. Anyway, I'm anticipating that unless something changes, chess-annotator will be much more verbose about annotating crazyhouse games. (I'm not very skilled at other variants, so I know much less about them, but I imagine something similar might obtain in antichess.) I'd be interested in hearing your thoughts on that. Do you think |
I'm unsure why Stockfish's evaluations of crazyhouse games fluctuate so much, but considering it just won the Computer Crazyhouse Championship it must be doing something right! I do like your idea of parameterizing (command line switching) "winning chances delta" thresholds for each category of mistake (blunder, mistake, inaccuracy, ...?); maybe even allowing variant-specific thresholds? |
Congrats! It seems we're on the same page. I'll look into adding options like that after this PR is merged. On that topic:
|
Ah, I wasn't using the variant stockfish. Rookie mistake. Now it gets further, but it still died:
I'm not sure if this is a bug with chess-annotator or python-chess. I'll try to dig into it with a debugger when I get a chance. |
I didn't attempt to perform opening classification for variants, although I believe a wealth of opening theory exists for crazyhouse, atomic, and antichess. That seems like a nice-to-have feature (although I'm curious why the And thanks! I'm looking forward to letting Lichess users know about this game annotator; maybe in the future I'll find a way to integrate it with Lichess studies |
I reached out to Niklas to see if he has any feedback on that KeyError exception. Some more test results:
I think that's everything? I don't have a pgn viewer that can handle these variants, which complicates testing since it's a bit of a pain to verify that the engine variations are appropriate to the variant type. Lichess can import pgn of variant games, but it strips the annotations and variations, diminishing its value. |
@ddugovic Do you know how I can push commits to this PR? Or would I have to be a maintainer of your fork? |
@rpdelaney I think it is possible even without being a maintainer (as I have "Allow edits from [upstream] maintainers" selected). I assume this is how it works:
|
For my future reference, since I mucked this up a few times, I had to do this:
Chess 960 seems to work with the last commit. Also, the KeyError I observed above is the result of a bug in my code that is now fixed in the master branch. I'm going to do a little bit more testing but this should be ready to merge in soon. |
The board().uci_variant object is always populated, because in non- variant games the uci_variant is "chess". Therefore, we should check that the uci_variant is not "chess" before passing UCI_Variant options to the engine.
board().variant will be "chess" if the game is 960, so a separate check is required for 960 games.
We don't have anything like ECO for variant games, so an ECO classification of a variant game is very likely to be meaningless.
Thanks again! |
No description provided.