Comments/Ratings for a Single Item
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.
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.
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.
I'm trying to describe Expanded Chess for ChessV but I'm having trouble with the Osprey. I used this:
AddPieceType( "Osprey", "O", 500, 500, "Bird");
Osprey.XBetza = "DmpafyafsW;
but apparently everything before the y in the xbetza description is ignored, so it's interpreted as equivalent to DyafsW. Is that intended, and is there another way to describe that piece for ChessV?
I could not reproduce the situation. It was probably a tactical move I have not seen deep enough.
Oh, I had forgotten. I am sorry!
I don't think that I can check the piece values to either apothecary chess game without the source code.
Sure you can. Right-click on a piece and select "properties". You recently commented that you liked the information it showed you there...
I had only seen some weird exchanges in a game. I definitely could be wrong. I'll try to reproduce it. By the way I don't think that I can check the piece values to either apothecary chess game without the source code.
Are we looking at the same thing? The Wizard has midgame, endgame values of (460, 460) and the Griffin has values of (800, 900) so not very close.
That is probably nitpicking but the wizard and griffin in apothecary chess modern seem to be evaluated in close value. The are most definitely not. I have some evaluations made earlier in the development of the 2 games. Would them be useful. I can send a full list of piece values.
ChessV 2.3 Release Candidate 2
This is a pre-release of upcoming version 2.3. It corrects a few issues reported with Release Candidate 1. It also adds support for a new movement capability for bent riders: the ability for a piece to slide followed by a manditory step in a different direction. As such, Renniassance Chess is now fully supported.
Since it is not an official release, there is no installation program. Just unzip to a new directory and run ChessV.exe. The official release will contain an install program.
Download here:
/programs.dir/ChessV2.3RC2.zip
Please let me know if you run into any issues. Enjoy!
Hi Greg, I received an error while playing Do-Or-Die Chess.
This is the log
Do-or-Die Chess Player(White) = Human Player(Black) = ChessV Moves = { d2d3 c4c3 f2f3 g4f3 e2f3 e4e3 d1e2 c3b2 c1b2 a4a3 b2c1 b5c3 b1c3 b4c3 g1h3 } Exception type: System.IndexOutOfRangeException Message: Index was outside the bounds of the array. Source: ChessV.Base Stack Trace: at ChessV.Board.SquareToLocation(Int32 square) at ChessV.GUI.BoardPresentation.Render(Boolean highlightComputerMove, Boolean rotateBoard, Piece piece, Boolean endgame)
Hi Greg, Thanks for the updated version. I received an exception while playing Tripunch chess
Thanks again for finding this. I've found the issue. The next version will resolve this problem in Tripunch and be more resistant to this issue in general. But, in the meantime, you can fix this by going into the ChessV include directory and editing the Tripunch Chess.cvc file in a text editor. Inside the SetGameVariables function, add the following line:
DeduplicateMoves = true;
Then restart ChessV and you should be good.
Hello Greg, Any hope for the latest ChessV version this weekend? I hope to share it with my friends.
Thank you for the detailed bug report. This should be what I need to reproduce. I'm travelling at the moment, but will take a look this weekend. Thanks!
Hi Greg, Thanks for the updated version. I received an exception while playing Tripunch chess
ChessV.Exceptions.ChessVException: An item with the same key has already been added. ---> System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at ChessV.Game.SearchRoot(Int32 alpha, Int32 beta, Int32 depth, List`1 movesToExclude)
at ChessV.Game.Think(TimeControl timeControl, Int32 multiPV)
--- End of inner exception stack trace ---
at ChessV.Game.Think(TimeControl timeControl, Int32 multiPV)
at ChessV.InternalEngine.startThinking()
at ChessV.Match.OnMoveMade(Player sender, List`1 moves)
at ChessV.MoveMadeEventHandler.Invoke(Player sender, List`1 moves)
at ChessV.Player.emitMove(List`1 moves)
at ChessV.GUI.BoardControl.tryMoveToLocation(Location location)
at ChessV.GUI.BoardControl.BoardControl_MouseUp(Object sender, MouseEventArgs e)
at System.Windows.Forms.Control.OnMouseUp(MouseEventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.UserControl.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
The final board state was
I had just moved my Nightrider from g1 to f3.
Yes, I clicked on that link and it downloaded ChessV2.3RC1.zip.
Sorry, been away for a bit.
I just wanted to ask, because it would be very difficult, if this version implements all the endgame conditions for apothecary. I doubt it because the AI is hard to reprogram for this. Have you given them any thoughts though?
If you mean the way a game can have additional outcomes, such as 3/4 - 1/4, that is not something that I know how to do. And, even if there is a way, I would not alter the core AI to do it.
I really like the piece description that appears when right clicking a piece.
Thank you. I'm rather proud of this. ChessV definitely makes the most sophisticated movement diagrams that I have seen, offering good support for showing multi-path moves and bent rider moves.
I really like the piece description that appears when right clicking a piece.
I just wanted to ask, because it would be very difficult, if this version implements all the endgame conditions for apothecary. I doubt it because the AI is hard to reprogram for this. Have you given them any thoughts though?
Impressive work, Greg!
I really appreciate implementing my 2 games: Apothecary chess classic and Apothecary chess modern as they were quite a challenge. I can hardly wait for the source code once you post everything from the official release.
In Chess with Jokers, the queen piece is a joker. I used this for developing and testing the joker piece. It seems I never updated the graphic used. I'll fix that now.
Thanks, Duplex Chess is a very good game that I need to get posted. It is my attempt to make a double-move variant that isn't too overwhelming. No piece moves farther than two spaces. A few notes: the same piece cannot be moved on both moves - except for the king. He can make two moves, including two captures, making him the most dangerous piece. But, if you lose him, the game is over. Also, there are three ways to win: capture your opponent's king, capture all your opponent's pawns, or move your king to the last rank.
Greg, What is chess with jokers supposed to be? To me it looks like regular chess!
25 comments displayed
Permalink to the exact comments currently displayed.
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:
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%.
Yup. Thank you for the easily reproducable bug report. I will fix this.