Check out Symmetric Chess, our featured variant for March, 2024.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Latest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Comments/Ratings for a Single Item

LatestLater Reverse Order EarlierEarliest
ChessVA computer program
. Program for playing numerous Chess variants against your PC.[All Comments] [Add Comment or Rating]
📝Greg Strong wrote on Fri, Aug 6, 2021 01:33 AM UTC in reply to Robert Mate from Thu Aug 5 01:41 PM:

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.

 


Robert Mate wrote on Thu, Aug 5, 2021 04:22 PM UTC in reply to Robert Mate from 01:41 PM:

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.


Robert Mate wrote on Thu, Aug 5, 2021 01:41 PM UTC in reply to Robert Mate from 12:28 PM:

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.


📝Greg Strong wrote on Sun, Jun 27, 2021 11:57 PM UTC in reply to Daniel Zacharias from 11:29 PM:

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.


Daniel Zacharias wrote on Sun, Jun 27, 2021 11:29 PM UTC:

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?


Aurelian Florea wrote on Sat, May 15, 2021 04:59 AM UTC in reply to Aurelian Florea from 04:23 AM:

I could not reproduce the situation. It was probably a tactical move I have not seen deep enough.


Aurelian Florea wrote on Sat, May 15, 2021 04:23 AM UTC in reply to Greg Strong from Fri May 14 06:52 PM:

Oh, I had forgotten. I am sorry!


📝Greg Strong wrote on Fri, May 14, 2021 06:52 PM UTC in reply to Aurelian Florea from 06:30 PM:

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...


Aurelian Florea wrote on Fri, May 14, 2021 06:30 PM UTC in reply to Greg Strong from 04:37 PM:

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.


📝Greg Strong wrote on Fri, May 14, 2021 04:37 PM UTC in reply to Aurelian Florea from 04:30 PM:

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.


Aurelian Florea wrote on Fri, May 14, 2021 04:30 PM UTC in reply to Greg Strong from 03:59 PM:

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.


📝Greg Strong wrote on Fri, May 14, 2021 03:59 PM UTC in reply to Greg Strong from Thu Apr 8 08:28 PM:

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!


B.E. Dolata wrote on Mon, May 10, 2021 03:17 PM UTC:

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)

📝Greg Strong wrote on Thu, May 6, 2021 11:23 PM UTC in reply to B.E. Dolata from Fri Apr 30 01:14 PM:

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.


Aurelian Florea wrote on Thu, May 6, 2021 09:10 AM UTC in reply to Greg Strong from Fri Apr 30 04:58 PM:

Hello Greg, Any hope for the latest ChessV version this weekend? I hope to share it with my friends.


📝Greg Strong wrote on Fri, Apr 30, 2021 04:58 PM UTC in reply to B.E. Dolata from 01:14 PM:

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!


B.E. Dolata wrote on Fri, Apr 30, 2021 01:14 PM UTC:

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

r1h1kh1r/ppp1pppp/3p4/8/4n1c1/3PPN2/PPP1K1PP/RNH5 b ha - 2 10

I had just moved my Nightrider from g1 to f3.


Christine Bagley-Jones wrote on Mon, Apr 26, 2021 04:02 AM UTC in reply to Greg Strong from Sat Apr 10 02:41 PM:

Yes, I clicked on that link and it downloaded ChessV2.3RC1.zip.

Sorry, been away for a bit.


📝Greg Strong wrote on Fri, Apr 23, 2021 04:01 PM UTC in reply to Aurelian Florea from 08:32 AM:

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.


Aurelian Florea wrote on Fri, Apr 23, 2021 08:32 AM UTC in reply to Aurelian Florea from Thu Apr 22 05:05 PM:

I really like the piece description that appears when right clicking a piece.


Aurelian Florea wrote on Thu, Apr 22, 2021 05:05 PM UTC in reply to Greg Strong from Thu Apr 15 01:24 PM:

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?


Aurelian Florea wrote on Thu, Apr 15, 2021 01:59 PM UTC in reply to Greg Strong from 01:24 PM:

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.


📝Greg Strong wrote on Thu, Apr 15, 2021 01:24 PM UTC:

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.


Aurelian Florea wrote on Thu, Apr 15, 2021 12:12 PM UTC:

Duplex chess is a clerver game!


Aurelian Florea wrote on Thu, Apr 15, 2021 12:05 PM UTC:

Greg, What is chess with jokers supposed to be? To me it looks like regular chess!


25 comments displayed

LatestLater Reverse Order EarlierEarliest

Permalink to the exact comments currently displayed.