Comments/Ratings for a Single Item
Silverman and Microchess cvc files. Microchess is playable between humans, but crashes the ChessV engine. Not sure why.
https://www.dropbox.com/sh/8t14o11x6lq5294/AACVwG8aPAtAswr-LUd0EqZDa?dl=0
EDIT: I'm slowly adding small chess variants here.
I just noticed a bug. If all I do is start a game, make one move, and then take back the move while the computer is thinking.. it crashes. This happens in 2.2 and the new update.
Microchess is playable between humans, but crashes the ChessV engine. Not sure why.
This is interesting. It is happening because the number of pieces is so small. Quick fix - the problem is with the default (sudden death) time control. Use a different time control and you should be fine.
More detailed explaination ... At the start of each move, the computer decides how much time it would like to commit to the current move. You could use some fixed percentage of the remaining time always, and you will use less and less for each concurrent move without running out. But that isn't very good. It would be better if we had some idea of how many moves the game likely to go on before being "decided" (doesn't need to be actually over if you are so far ahead you can continue to win without requiring much thought.) This is already an interesting problem in Chess. It's an even more difficult problem for a variant engine such as ChessV... I make the basic assumption that games with more pieces are likely to last longer...
So, here's my current formula. Using four variables: Number of player 1's pieces at the start of the game (P1s), number of player 2's pieces at the start of the game (P2s), number of player 1's peices still remaining (P1r), and number of player 2's pieces still remaining (P2r). With sudden death time control, the targettime allocated for a move is:
timeRemaining / min( P1s + P2s - 10, P1r + P2r + 6 )
This crashes Microchess since it starts with 10 pieces so it tries to allocate 0% and divides by zero. Obviously this formula was designed for larger games. And, in general, ChessV was designed to play the common variants which are typically 8x8 or larger. I'm sure lots of things are not optimized for tiny variants. The obvious fix here is to always allocate at least a minimum amount (maybe 1%). Probably, you would never want to allocate less than 1% of remaining time... But how many moves does an average game of Microchess last? Maybe for some games the assumption that length of game is related to number of pieces is not valid. Perhaps the lower bound should be a configurable game variable with a default of 1%.
I just noticed a bug. If all I do is start a game, make one move, and then take back the move while the computer is thinking.. it crashes. This happens in 2.2 and the new update.
Yup. Thank you for the easily reproducable bug report. I will fix this.
Is there a typo in the Duke of Rutlands Chess include file in RC2?
Should
be
The CPU seemed willing to trade the Concubine for a Bishop when I played.
Correct. Thank you. Good catch!
The Rhino in Grand Betza Chess appears to display the incorrect moves when one right clicks to get to properties. It shows the moves of a Wazir for me.
The Rhino in Grand Betza Chess appears to display the incorrect moves when one right clicks to get to properties. It shows the moves of a Wazir for me.
That's right. The Rhino's move is not supported by the internal move generator. It is implemented with custom code so the diagram display can't show it. I need to add an override that suppresses the diagram and instead displays a description of the move.
Pocket Knight Crash: For the first move, pick up the pocket knight and then put in back in the same place.
Pocket Knight Crash: For the first move, pick up the pocket knight and then put in back in the same place.
Good catch! I fixed it. Thanks!
For the future, have you considered implementing NNUE? https://en.wikipedia.org/wiki/Efficiently_updatable_neural_network
It would be a solution for piece drop games, and you'd be the only one doing this with large variants in mind.
Not sure if it's a bug, but for example, fairy-max should be able to play Los Alamos but can't. I've seen keywords "losalamos" and "los-alamos". Perhaps better access to the keywords?
Hello Greg, I have written you a few mails a while ago. I'm not sure if you got them or if you had answered. Please say something about this.
I'm trying to test a game with ChessV, and I get an error saying "Not enough Zobrist keys" when I try to start it. What does it mean?
I'm trying to test a game with ChessV, and I get an error saying "Not enough Zobrist keys" when I try to start it. What does it mean?
You must be using a very large number of piece types on a large board. There is an upper limit on #Players * #Piece Types * #Squares, although it can be increased if I add more random numbers to the list of keys. How large is what you are trying to do?
I am, unfortunately. I have 144 squares and 21 piece types. What is the limit?
It looks like this should not be over the limit. Can you send me the include file so I can give it a try?
Not sure if it's a bug, but for example, fairy-max should be able to play Los Alamos but can't. I've seen keywords "losalamos" and "los-alamos". Perhaps better access to the keywords?
Thanks for pointing this out. For now, you can get it to work by editing the Los Alamos Chess include file. Open it with a text editor and add the following line in the first section, where Invented and InventedBy are defined:
XBoardName = "los-alamos";
Greg, could you indulge me over this weekend?
Greg, could you indulge me over this weekend?
With what?
Greg, Actually a while ago I have sent an email. But I had solved the problem on my own. But there is still the issue of a bug I had found. When trying to change the appearance of the "white" squares, it does not work. Can you send me again the source files you currently are confident they work. I want to try some things with the joker. I'm not sure if my email is fine. It probably is and I had missed the previous mail, when you did just that.
It seems we have email problems. I think you are getting most of my emails, but when I include a hyperlink it seems you don't receive it.
Here is a link to a recent set of source code. You will probably need to cut & paste this link - don't click on it - or it probably won't open since my site is not https:
http://chessv.org/downloads/ChessV2_2021-08-29.zip
Open with Visual Studio 2019. The free Community Edition is fine.
Regarding square colors, I need more information. There must be an unusual circumstance since the code that handles that hasn't changed in a long time and no one has ever reported a problem with that.
Unfortuneatly, I could not reproduce the bug, but I'll tell you if I find it again!
I think I found another problem. I've tried giving a piece the xbetza move pB, but even though it can only move by jumping, it can still capture like a bishop.
Also, I have a question about promotion rules. Is it possible to have pieces promote only when making a capture in a certain area of the board, and only if the promoting player has no pieces on the board of the type being promoted to?
25 comments displayed
Permalink to the exact comments currently displayed.

If you use the 'y' operator, it can only handle one step before (you can't have an 'a' before the 'y'.) It only interprets that which the internal move generator can handle. In this case, the internal move generator could handle it because the 'mp' really just joins the two steps into a single leap, but it's not smart enough to figure that out.
But, yes, this piece can be done, just not with XBetza. Actually, I've already written the include file for Expanded Chess, which will be included in the next release. I will email it to you now. But for reference, here's how you do the Osprey:
AddPieceType( "Osprey", "O", 750, 750, "Bird" );
Osprey.Step( <2, 0> ).SlideAfterStep( <1, 1> );
Osprey.Step( <2, 0> ).SlideAfterStep( <1, -1> ).MinSteps = 2;
Osprey.Step( <-2, 0> ).SlideAfterStep( <-1, 1> );
Osprey.Step( <-2, 0> ).SlideAfterStep( <-1, -1> ).MinSteps = 2;
Osprey.Step( <0, 2> ).SlideAfterStep( <1, 1> );
Osprey.Step( <0, 2> ).SlideAfterStep( <-1, 1> ).MinSteps = 2;
Osprey.Step( <0, -2> ).SlideAfterStep( <1, -1> );
Osprey.Step( <0, -2> ).SlideAfterStep( <-1, -1> ).MinSteps = 2;
In case you're wondering about the MinSteps = 2 on every other move path, that is to prevent the moves for the (0, 2) leaps from being generated twice.