Check out Grant Acedrex, our featured variant for April, 2024.


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

Comments/Ratings for a Single Item

EarliestEarlier Reverse Order LaterLatest
ChessVA computer program
. Program for playing numerous Chess variants against your PC.[All Comments] [Add Comment or Rating]
Aurelian Florea wrote on Tue, Jan 14, 2020 12:12 PM UTC:

Sorry guys but I don't see any video.

Kevin, would you consider electing among several eligible initial position, hannibal chess 2  for example(akin to fisher 960 )?! Why choose when you can enrich?

Also I'd really perfer this elephant, but this is probably a matter of taste:

x              x

    x     x

    mEm

    x     x

x              x


Kevin Pacey wrote on Tue, Jan 14, 2020 04:46 PM UTC:

Hi Aurelian

This may belong under the Hannibal Chess thread; I'd consider multiple setup positions for any number of my CV inventions at some point, once I'm sure I know how to get that available to Game Courier (GC) play.

 I think the type of elephant you've diagrammed is known as the lieutenant piece in Spartan Chess (that is, it's a ferfil that also has available to it non-capturing moves one step left or right orthogonally, if I understand the notation right). I've used that piece type already in a CV invention of mine (called Wide Chess, 12x8, hardly played yet - although I played you a game of it long ago). I'm not sure it would make Hannibal Chess (the way it stands) at least as playable, or more popular, in GC play - perhaps the straight ferfils, when in the current setup, are already pretty potent (though I know I mentioned people on the whole seem to prefer adding in powerful pieces, in CVs).

One other thing I concluded about popular CVs on GC from cursory study of the 1200+ GC games played list is that the most popular CVs on GC tend not to have many asymmetric-moving pieces (if any at all) in their setups; IMO, this is in line with Fergus' suggested guidelines for trying to design good CVs. Someone I've chatted with once told me they don't like to 'fight against their own pieces' (as opposed to those of the opponent), though they didn't like even Nightriders (or Waffles [WA]{!}) for that reason. Maybe it was mostly their own viewpoint, as Nightriders seem fairly popular with players, and not too irregular, perhaps.


Carlos Cetina wrote on Thu, Jan 16, 2020 08:01 PM UTC:

Thanks, Greg, for answering. Hopefully soon some mobile apps developer could join and help in your ChessV undertaking.

I'm sorry to tell you that I have found these bugs:

1. In Ministers Chess setup the i-rook and the h-knight from White side are switched.

2. In Sac Chess both kings cannot castle.

3. When rotating the boards the numerical coordinates remain unchanged.

4. In Gross Chess the window size does not fit proportionally to the PC screen.

Aside of that, I'm enjoying immensely your masterpiece!


📝Greg Strong wrote on Fri, Jan 17, 2020 01:24 AM UTC:

Hi, Carlos.  Thank you for finding and reporting these.  Good catches!

I was able to fix numbers 1, 2, and 3 in just a few minutes.

Unfortunately, #4 is not really a bug.  The chess board display does not scale - the resolution of your screen must be large enough to accomodate it.  Perhaps your screen resolution is too low to fit a 12 x 12 board (or you have a zoom setting turned on.)  I want to improve this, part of which will be using the scalable vector graphics that H. G. made.  Currently the piece graphics are bitmaps so they would not scale well.  Some option to shrink would be nice anyway, but it will not make it into this version.

But if you find any other bugs, please let me know :)  I am going out of town for a few days and plan to make an official release of 2.2 when I get back if no new issues have been discovered.


📝Greg Strong wrote on Wed, Jan 22, 2020 08:07 PM UTC:

ChessV 2.2 Released

The newest version of ChessV has finally be released and is available for download here.

New Features

  • About 30 new variants have been added. The total is now over 100.
  • Playing strength has been increased significantly.
  • The engine now has a few configuration options:

    • Variation of Play - When set to "None", ChessV is completely deterministic as it was with previous versions. Options "Small", "Medium", and "Large" use various means to increase the variety. Small should not weaken the playing strength although higher settings probably will.

    • Weakening - A setting from 0 to 15 to reduce the strength of the engine

    • Transposition Table Size - This is now configurable from 16 MB to 4 GB

  • The ChessV engine can now be used separately from the GUI if you wish to use it under a different GUI, such as WinBoard. The separate engine is ChessV.Engine.exe
  • The power of the scripting language has been increased. 23 of the included games are now implemented with the scripting language.
  • Various tools have been included such as a basic facility for running games in batch mode for testing and analysis.
  • Lots of bugs have been fixed. Thanks to all those who helped with testing and reporting issues!

IMPORTANT: If you have a previous version installed you should uninstall it first. (This only applies to versions installed with an installer. If you used one of the test builds by unzipping and running you should be fine.)


Aurelian Florea wrote on Thu, Jan 23, 2020 10:31 AM UTC:

It would be interesting to compare the small and medium variations of play. Greg has told me that it is not possible internally. But I think winboard can accept two *.exe files. It would not care that it is the same engine with diffret parameters. Is that corect?


📝Greg Strong wrote on Thu, Jan 23, 2020 12:41 PM UTC:

That's right, that should work.  And the Variation of Play parameter can be set through the Winboard interface.


Carlos Cetina wrote on Thu, Jan 23, 2020 02:45 PM UTC:

I have already downloaded the new version. Thanks again for your excellent work. I think the released date mentioned on your website has the wrong year.

Watch ChessV acting in all its glory!


Aurelian Florea wrote on Thu, Jan 23, 2020 03:37 PM UTC:

@Greg

Where do I download winboard?


Aurelian Florea wrote on Thu, Jan 23, 2020 03:49 PM UTC:

I have found it Greg!... No trouble! But how do I put things together now?


Aurelian Florea wrote on Fri, Jan 24, 2020 05:52 PM UTC:

@Greg

I'm quite sure I did not made myself clear earlier, so the question was: How would setting up winboard play by 2 ChessV engines, one with small variation anoter with medium work :)? Thaks!...


📝Greg Strong wrote on Fri, Jan 24, 2020 06:04 PM UTC:

I'm not sure, I don't really use WinBoard.  You specify the engines with /fcp and /scp switches (first chess program and second chess program.)  If you don't specify them on the command line, I believe it will ask you.  You don't neeed to make two copies of ChessV - you can point both to the same executable.  Then, somewhere in the user interface, are options to set engine parameters.


📝Greg Strong wrote on Fri, Jan 24, 2020 09:06 PM UTC:

BUG ALERT: Do not set the transposition table size to anything larger than 1 GB.  If you chose a size larger than 1 GB, you will only get 16 MB (no matter how much RAM you actually have.)  This will be fixed in a future release.


James Zuercher wrote on Sat, Jan 25, 2020 04:44 AM UTC:
Greg: I've installed ChessV 2.2 on my Windows 10 computer. When I execute it through either the executable or through the generated icons It seems to start, but never comes up. Has anyone else had this problem. I have not tried compiling the sources yet. Is that a logical next step. NOTE: I uninstalled the older version and re-installed V2.2 and now it works fine. Sorry for the comment.

📝Greg Strong wrote on Sat, Jan 25, 2020 07:55 AM UTC:

Hi James.  Thanks for the post.  If you had the issue, it is likely other will as well.  It is good to know an uninstall is required.  I will edit my annoncement post to add this note.  I wonder if I can modify the installer to do this automatically ...


Aurelian Florea wrote on Sat, Jan 25, 2020 06:11 PM UTC:

@Kevin Pacey

I have noticed the new version (maybe from before) Hannibal Chess & Frog Chess are present but not Waffle Chess.

I have created a script, which is quite easy. If you are curious to adding it into your copy of chessV2.2 there you go:

 


Game 'Waffle Chess' : 'Generic 10x8'
{
Invented = "2017";
InventedBy = "Kevin Pacey";
Symmetry = MirrorSymmetry;

SetGameVariables
{
Array = "rnbwqkwbnr/pppppppppp/10/10/10/10/PPPPPPPPPP/RNBWQKWBNR";
Castling = "Standard";
PawnDoubleMove = true;
EnPassant = true;
PromotionTypes = "QRBNW";
}

AddPieceTypes
{
AddChessPieceTypes();
AddPieceType( Phoenix, "Waffle", "W", 285, 285 );
}
}

 

 

Well I actually don't know the invention year :)!


📝Greg Strong wrote on Sat, Jan 25, 2020 06:23 PM UTC:

Actually, this does not quite work.  Waffle Chess has a unusual castling rule (which is why it was not included.)  I had planned to add support for "Fast Castling" but it didn't make it into this release.  Probably it will be in the next one.


Aurelian Florea wrote on Sat, Jan 25, 2020 06:41 PM UTC:

Ah, I forgot this detail. They don't all have the same castling rules :(!


Aurelian Florea wrote on Sun, Jan 26, 2020 04:30 PM UTC:

I want to try batch mode on Enep to find out which side is better. I'd bet on the side with the extra pawn based on the few games I watched with ChessV 1, but who knows. For that I'm asked for a control file. How do I write one?

 


Aurelian Florea wrote on Sun, Jan 26, 2020 07:44 PM UTC:

I have whatched a few games today, engine vs engine mode, and chessV2.2 is definetly a marvel. Extremelly fun! Big congratilations!


📝Greg Strong wrote on Sun, Jan 26, 2020 08:17 PM UTC:

The control file is a tab-delimited text file.  The first row is the header row identifying what is in each column.  Each row after is a game that will be played.

The required columns are:

Game - the filename of a saved-game file (*.sgf)

Engine1 - the engine playing player 1 ("ChessV", "Fairy-Max", etc.)

Engine2 - the engine playing player 2 ("ChessV", "Fairy-Max", etc.)

Time Control - the time controls (“1:30” would be entire game in 1 minute 30 seconds, “0:10+2” would be a base time of 10 seconds, plus an increment of 2 seconds for each move.)

Other columns are optional:

ID - If you want to identify the games in some special way.  By default they will just be identified by row number.

Variation - The variation of play (“None”, “Small”, “Medium”, or “Large”.  Default is None.)

Player1 and Player2 - How you want the sides identified for purposes of counting up statistics.  By default, it will use the engine names.  Which is reasonable if the purpose of the test is to pit ChessV against Fairy-Max and see which one does better.  For ChessV vs. ChessV, it won’t accomplish much.  In your case, you are testing Augmented Knight vs. Extra Pawn, so name your player accordingly.  Also note this can do variable substitution in the form of #{variable}, so for testing different armies, you would specify #{WhiteArmy} for player 1 and #{BlackArmy} for player two.

For your purposes, let’s say you have two saved game files - WhiteAugmented.sgf and BlackAugmented.sgf.  They don’t need any moves in them unless you want to have multiple files from different start positions.  Given this, your control file could look like this:

Game    Engine1    Engine2    Time Control    Player1    Player2    Variation
WhiteAugmented.sgf    ChessV    ChessV    0:30    Augmented Knight    Extra Pawn    Small
BlackAugmented.sgf    ChessV    ChessV    0:30    Extra Pawn    Augmented Knight    Small

 


Aurelian Florea wrote on Sun, Jan 26, 2020 08:30 PM UTC:

Thanks a lot. What I don't understand how many repeats will there be? Does it involve copy pasting the two lines over and over again?


📝Greg Strong wrote on Sun, Jan 26, 2020 08:40 PM UTC:

That's right.  If your games are all playing from the starting position, you would just paste those two lines over and over again.


Aurelian Florea wrote on Sun, Jan 26, 2020 08:43 PM UTC:

It works. Many thanks Greg!


📝Greg Strong wrote on Sun, Jan 26, 2020 09:14 PM UTC:

Cool.  Let us know the results :)


Aurelian Florea wrote on Mon, Jan 27, 2020 09:53 AM UTC:

The results for enep with time control 1 min and 3 sec/turn, with 20 games played ,are:

Augmented side 9

Extra pawn 11

There were 10 draws

But the program displayed 8-11. For some reason game (victory for the augmented side) 20 did not get counted. A small bug in here Greg. Also if I may a suggestion it would be nice if in the output file the final score is written at the end!...

 


Aurelian Florea wrote on Mon, Jan 27, 2020 01:28 PM UTC:

Another batch of 20 games resulted in:

augmented side 8.5

extra pawn side 11.5

with 7 draws.

The bug appeared again. It seems it does not get the time to increment itself or somethig.


Aurelian Florea wrote on Mon, Jan 27, 2020 04:13 PM UTC:

A third batch of 20 games resulted in:

enhanced knight 7.5

extra pawn 12.5

there were 9 draws.


pallab basu wrote on Mon, Jan 27, 2020 06:34 PM UTC:

I am testing with a modified preset

http://play.chessvariants.com/pbm/play.php?game%3DAssymetric+army%26settings%3DFIDE-Assym1

But whenever I tried to actually play a RR vs FF preset appears, not my modified army. I would appreciate any help.


📝Greg Strong wrote on Mon, Jan 27, 2020 06:44 PM UTC:

Remove all the Game Code and it will work (although with no rule enforcement.)  Apparently the code in the preset doesn't support mixed pieces like that.


pallab basu wrote on Mon, Jan 27, 2020 07:01 PM UTC:

I am wondering why that is so? I don't clearly see anything in the code that precludes mixed pieces.


📝Greg Strong wrote on Mon, Jan 27, 2020 07:47 PM UTC:

Look at the cwda include file:

https://www.chessvariants.com/play/pbm/includes/cwda.txt

Towards the end, the switch #wx and switch #bx are placing the appropriate pieces for each army on the board.  Maybe you can set the values for these to something > 4 before the line that includes this file to get around it.


Aurelian Florea wrote on Tue, Jan 28, 2020 05:08 AM UTC:

The final batch of games is over:

augmented knight 17

extra pawn 23

with 22 draws


Aurelian Florea wrote on Tue, Jan 28, 2020 05:16 AM UTC:

Final results on the enep experiment. There were 100 games at 1 minute + 3 seconds of added time.

 

enhanced knight 42

extra pawn 58

from which draws were 48 games


Aurelian Florea wrote on Tue, Jan 28, 2020 07:38 AM UTC:

I have tried similar experiments for Chess with different armies. It seems the endgame is bad as the computer leaves without reason pieces en prize. Tell me how to help you reproduce this bug. That has probably made results skewed in ENEP games, to!


📝Greg Strong wrote on Tue, Jan 28, 2020 02:47 PM UTC:

I'd need a saved game file to investigate.  You should be able to save even during self-play but you have to catch it before the game ends.  Or I can modify it to save out all games.  What armies were you using?


Aurelian Florea wrote on Tue, Jan 28, 2020 03:06 PM UTC:

It was a FF-CC game (could have been reversed). An option to save all games could come in handy!...


Aurelian Florea wrote on Tue, Jan 28, 2020 04:22 PM UTC:

Actually saving each game could help beacause I can't stare all day at the monitor and the aftergame survelliance could be fun! For know nothing more. Good luck, Greg!


📝Greg Strong wrote on Sat, Feb 15, 2020 03:50 PM UTC:

@HG:

I had a problem.  ChessV sometimes wasn't able to find the mate in KRK (for example), despite the fact that I have a custom endgame eval for this combination (which I'm sure is correct.)  I was able to solve this by no longer returning on TT hits on PV nodes.  This is an acceptable solution since you seldom get a cut-off on a PV node so it does not speed things up much, if at all, and it reports shorter PVs.  But I'd still like to understand the problem in case there is something else wrong.

I only return at a PV node if the TT entry depth >= depth remaining and the entry type is Exact.  I also shift mate scores by the ply before returning, as is typically done.  Do you have any insight why I might be missing mates and stumbling into draws by repetition or 50-moves?  I guess my TT code could have a bug, but I don't think so.


H. G. Muller wrote on Sat, Feb 15, 2020 04:59 PM UTC:

This is very strange. Why do you need custom evaluation for KRK in the first place? Fairy-Max had absolutely no trouble to win KRK on its normal evaluation. (Which has Rooks completely neutral, and use the parabolic centralization table for Kings.) In the latest Fairy-Max version I use what you could call custom evaluation for checkmating a bare King (it just multiplies the centralization bonus for that King by a large factor), but that was only needed for end-games with many centralizing pieces (such as KFFFK in Makruk), because these did not bother to leave the center just for driving a single piece into a corner. Checkmating with Rook is very easy on any size board; you almost need no search depth for it at all. You just shephard the King towards the corner with your Rook, keeping the latter protected from behind by your King.

I suppose you do switch off null move?

The only thing I can think of that causes what you describe is contamination of the hash score with draw scores resulting from repetitions. What happens when you disable repetition detection (accepting PV hash cutoffs)? I don't really understand how a line that makes progress could get draw scores from this, though.

Can you post a game of how it typically plays KRK? (Best would of course be one that it bungles.)

Here is thinking output from a version of Fairy-Max that doesn't use the special bare-king evaluation, for position 8/8/8/5k2/3R4/8/5K2/8 w - 0 1 :

mover viewpoint		fewer / Multi-PV margin = 0 / more
exclude: none best +tail                                          
dep	score	nodes	time	(not shown:  tbhits	knps	seldep)
28	  #12 	121.4M	1:17.65	1. Kf3 Ke5 2. Rd3 Kf6 3. Re3 Kg5 4. Re5 Kg6 5. Kg4 Kf6 6. Re4 Kg6 7. Rf4 Kh6 8. Kf5 Kg7 9. Kg5 Kh7 10. Kf6 Kh8 11. Kf7 Kh7 12. Rh4 
27	  #13 	61.4M  	0:40.03	1. Kf3 Ke5 2. Rd3 Kf6 3. Re3 Kg5 4. Re6 Kf5 5. Re4 
26	  #12 	46.8M  	0:30.38	1. Kf3 Ke5 2. Rd3 Kf6 3. Re3 Kf5 4. Re4 
25	  #12 	28.3M  	0:18.23	1. Kf3 Ke5 2. Rd3 Kf6 3. Re3 Kf5 4. Re4 
24	  #12 	15.6M  	0:09.85	1. Kf3 Ke5 2. Rd3 Kf6 3. Re3 Kf5 4. Kg3 
23	  #12 	10.3M  	0:06.45	1. Kf3 Ke5 2. Rd3 Kf6 3. Re3 Kf5 4. Re4 
22	  #13 	7.44M  	0:04.55	1. Kf3 Ke5 2. Rd3 Kf6 3. Re3 Kf5 4. Re2 Kg5 5. Re5 
21	  #14 	5.88M  	0:03.52	1. Kf3 Ke5 2. Rd3 Kf5 3. Re3 Kg5 4. Re5 Kg6 5. Kg4 Kf6 6. Kf4 
20	  #18 	4.72M  	0:02.74	1. Kf3 Ke5 2. Rd1 Ke6 3. Kf4 Kf6 4. Re1 Kg6 5. Re3 Kf6 6. Re5 Kg6 7. Kg4 
20	  #22 	4.50M  	0:02.59	1. Ke2 Ke6 2. Kf3 Kf6 
20	+4.59 	3.68M  	0:02.07	1. Ke3 Ke5 2. Rd8 Kf5 3. Re8 Kg5 4. Ke4 Kf6 5. Re5 Kg6 
19	+4.57 	2.37M  	0:01.27	1. Ke3 Ke5 2. Re4 Kd5 3. Kd3 Kc6 4. Kd4 Kd6 5. Re5 Kc6 6. Rd5 Kc7 7. Kc5 Kb7 8. Rd6 Kc7 9. Kd5 Kc8 10. Ke4 
18	+4.56 	1.54M  	0:00.81	1. Ke3 Ke5 2. Re4 Kf5 3. Kf3 Kg6 4. Rf4 Kg5 5. Kg3 Kh5 6. Rg4 Kh6 7. Rg8 
17	+4.55 	1.12M  	0:00.57	1. Ke3 Ke5 2. Re4 Kf5 3. Kf3 Kg6 4. Rf4 Kg5 5. Kg3 Kg6 6. Kh4 Kg7 7. Kg5 Kh7 8. Rf7 Kg8 9. Kf6 
16	+4.54 	729185	0:00.35	1. Ke3 Ke5 2. Re4 Kf5 3. Kf3 Kg6 4. Rf4 Kg5 5. Kg3 
15	+4.54 	518699	0:00.25	1. Ke3 Ke5 2. Re4 Kf5 3. Kf3 Kg6 4. Rf4 Kg5 5. Kg3 
14	+4.54 	354924	0:00.15	1. Ke3 Ke5 2. Re4 Kd5 3. Kd3 Kd6 4. Kd4 Kc6 5. Re6 Kc7 6. Kd5 Kd7 7. Ke5 
13	+4.53 	218794	0:00.09	1. Ke3 Ke5 2. Re4 Kd5 3. Kd3 Kd6 4. Kd4 Kc6 5. Re6 Kb5 6. Kd5 Kb4 7. Ke5 
12	+4.53 	150300	0:00.06	1. Ke3 Ke5 2. Re4 Kf5 3. Kf3 Kg5 4. Rf4 Kg6 5. Kg4 Kh6 6. Kf5 Kh5 
11	+4.52 	107753	0:00.04	1. Ke3 Ke5 2. Re4 Kf5 3. Kf3 Kg6 4. Kf4 Kf6 5. Re3 Kg6 6. Ke4 
10	+4.50 	54436  	0:00.01	1. Ke3 Ke5 2. Re4 Kf5 3. Kd4 Kf6 4. Re5 Kg6 5. Ke4 Kf6 
9	+4.52 	36093  	0:00.01	1. Ke3 Ke5 2. Re4 Kf5 3. Kd4 Kf6 4. Re5 Kg6 5. Ke4 
8	+4.51 	20251  	0:00.00	1. Ke3 Ke5 2. Re4 Kf5 3. Kd4 Kf6 4. Re5 Kg6 
7	+4.50 	9192    	0:00.00	1. Ke3 Ke5 2. Re4 Kf5 3. Re8 Kf6 4. Ke4 
6	+4.49 	5719    	0:00.00	1. Ke3 Ke5 2. Re4 Kf5 3. Kd4 Kf6 
5	+4.49 	2747    	0:00.00	1. Ke3 Ke5 2. Re4 Kf5 3. Kd4 
4	+4.48 	559      	0:00.00	1. Ke3 Ke5 2. Re4 Kf5 
3	+4.48 	223      	0:00.00	1. Ke3 Ke5 2. Re4 
2	+4.48 	23        	0:00.00	1. Ke3 Ke5 
1	+4.49 	13        	0:00.00	1. Ke3 

📝Greg Strong wrote on Sun, Feb 16, 2020 12:22 AM UTC:

Thank you for the help.  It is indeed pretty strange.

First, I should clarify a couple of things.  The problem isn't specific to KRK - I know it appeared in other situations as well, but KRK was an easily reproduced and extreme example.  Also, the special endgame code isn't specific to KRK, it is really KxK (King + plenty of material against bare king, probably the same idea as your bare king eval.)  This KxK code comes from Stockfish but adapted to do the right thing on boards of any size.  The other specific endgame evals I have so far are KRKP, KRKB, and KRKN (also from Stockfish.)  There is also some special handling for KPK which overwrites the eval to return draw scores on certain positions that are known to be draws (this is custom code based on Wikipedia's KPK article - the Stockfish KPK code uses a bitbase which doesn't help me given variably sized boards.)

The null move was a good idea, as well as draw scores getting into the TT, but neither of these seem to be the cause.  Null move is disabled with low enough material and disabling draw-by-repetition and/or 50-move rule didn't help.

With a fair amount of expirementation, I found another "solution".  If I change the TT cutoff condition at PV nodes from hash depth >= depth remaining to hash depth > depth remaining that solves the problem entirely and my searches seem totally consistent.  But I have "solution" in quotes because I'm not 100% sure this addresses the real problem either, but I think it probably does.  Somehow something is getting off by one somewhere.  I still need to understand it better because the underlying problem may be affecting non-PV nodes too resulting in weaker play that is not so obvious...


H. G. Muller wrote on Sun, Feb 16, 2020 05:23 AM UTC:

It could be that the new condition just makes hash cuts so rare that the damage they do is not apparent. And can you still solve Fine #70 with this new condition?

Some of these end-games are really difficult (like KBNK), but KRK is not amongst those. If the start position is not extremely unfavorable (like the shown mate-in-12 rather than the worst-case mate-in-16), a fresh search should show you a mate score after a few seconds. Once there is a mate score, it should just start playing from the mating line that is now in the TT. Just walking the winning King to the center should already be enough to get better than mate-in-12.

How long does it take ChessV to get a mate score from the given KRK position, and what depth does it reach? Not being able to act out an already found mate would point to entirely different problems than not finding the mate in the first place.


H. G. Muller wrote on Sun, Feb 16, 2020 02:55 PM UTC:

I presented the position to ChessV 2.2RC1, and after 5 min (the time it reports itself is bogus!) it produced a move at 32 ply:

dep	score	nodes	time	(not shown:  tbhits	knps	seldep)
32	+169.59 	106.2M	8:50:53	f2f3 f5e5 d4d1 e5e6 f3f4 e6f6 d1e1 f6g6 f4g4 g6f6 g4f3
31	+169.59 	45.1M  	3:35:35	f2e3 f5f6 e3e4 f6g5 d4d3
30	+169.58 	28.1M  	2:11:14	f2e3 f5e5 d4d3 e5f5 e3d4 f5f6 d4e4 f6e6 d3d5
29	+169.55 	19.1M  	1:25:46	f2e3 f5e5 d4d1 e5f5 d1d5 f5f6 e3e4 f6e6 d5d2 e6f6 d2a2 f6e7 e4e5 e7d7 e5d5 d7e7 a2a5 e7f7 a5a3 f7f8 a3a7 f8g8 d5d6 g8f8 a7b7 f8g8
28	+169.55 	15.9M  	1:08:52	f2e3 f5e5 d4d1 e5f5 d1d5 f5f6 e3e4 f6e6 d5d2 e6f6
27	+169.55 	13.3M  	56:28.33	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f6 d1d6 f6e7 f4e5 e7f7 e5e4 f7e7
26	+169.55 	11.1M  	46:51.12	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f6 d1d6 f6e7 f4e5 e7f7 e5e4 f7e7
25	+169.55 	8.86M  	37:24.84	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f6 d1d6 f6e7 f4e5 e7f7 e5e4 f7e7
24	+169.55 	6.49M  	27:22.68	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f6 d1d6 f6e7 f4e5 e7f7 e5e4 f7e7 e4d5 e7f8 d6e6 f8f7 e6e1 f7f8
23	+169.55 	5.23M  	22:09.12	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f7 f4f5 f7e7 d1d2 e7f7 d2d8 f7e7 d8d5 e7f8 f5e5 f8f7
22	+169.55 	3.91M  	16:38.40	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f7 f4f5 f7e7 d1d2 e7f7 d2d8 f7e7 d8d5 e7f8 f5e5 f8f7
21	+169.55 	2.79M  	12:06.96	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f7 f4f5 f7e7 d1d2 e7f7 d2d8 f7e7 d8d5 e7f8
20	+169.55 	2.39M  	10:25.56	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f7 f4f5 f7e7 d1d2 e7f8 d2d8 f8f7 d8d5 f7e7 d5d3 e7f8 d3d6 f8f7 d6e6
19	+57.24 	1.85M  	8:09.84	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f7 f4f5 f7e7 d1d2
18	+169.56 	1.42M  	6:22.20	f2e3
17	+169.56 	1.13M  	5:12.00	f2e3
16	+169.56 	895583	4:14.28	f2e3 f5e5 d4d1 e5f6 e3e4 f6e6 e4f4 e6f7 f4f5 f7e7 d1d2 e7f8 d2d8 f8f7 d8d5 f7e7 d5d3
15	+57.24 	696806	3:22.80	f2e3 f5e5 d4d2 e5f6 e3e4 f6e6 d2d5 e6f7 e4f5 f7e7 d5d3
14	+57.04 	435297	2:11.04	f2f3 f5e5 f3e3 e5f6 e3f4 f6e6 d4d3 e6e7 f4f5 e7f7 d3d7 f7e8 f5e6 e8f8 e6d6
13	+56.96 	285881	1:27.36	f2f3 f5e5 d4d3 e5f6 f3f4 f6e6 d3d4 e6e7 f4e5 e7f7 e5f5 f7e7 d4d5
12	+56.88 	187028	0:57.72	f2e3 f5e5 d4d3 e5f6 e3e4 f6e6 e4f4 e6e7 f4e5 e7f7 d3d7 f7g6 e5f4
11	+56.80 	115957	0:34.32	f2f3 f5e5 f3e3 e5f6 e3e4 f6e6 d4d5 e6e7 e4e5 e7e8 e5e6
10	+56.72 	68603  	0:20.28	f2f3 f5e5 f3e3 e5f6 e3e4 f6e6 e4f4 e6e7 f4e5 e7e8
9	+56.72 	39705  	0:12.48	f2f3 f5e5 f3e3 e5f6 e3e4 f6e6 e4f4 e6e7 f4e5
8	+56.64 	23739  	0:07.80	f2f3 f5e5 f3e3 e5f6 e3e4 f6e6 d4c4 e6d6
7	+56.64 	12952  	0:04.68	f2f3 f5e5 f3e3 e5f6 e3e4 f6e6 d4c4
6	+56.64 	5601    	0:03.12	f2f3 f5e5 f3e3 e5e6 e3e4 e6e7
5	+56.64 	2579    	0:01.56	f2f3 f5e5 f3e3 e5e6 e3e4
4	+56.52 	1034    	0:01.56	f2f3 f5e5 f3e3 e5e6
3	+56.56 	418      	0:01.56	f2f3 f5e5 f3e3
2	+56.52 	121      	0:01.56	f2f3 f5e6
1	+56.64 	28        	0:01.56	f2f3
0	#

So like micro-Max it finds a mate score pretty fast; difference is that it seems to be that the pretty slow over-the-horizon mate it finds first isn't improved as much as the depth goes up. Still it is strange that it wouldn't simply play out the mating line it found, and is now in its TT, in the following moves.

[Edit] Umm, I might misinterpret the 169.xx scores as mate scores: when I let ChessV play out this position against itself there do appear standard mate scores at the end. Strange thing is that after the black engine admits to being 'mated-in-1' is its last move, the white engine crashes without performing the checkmate.


📝Greg Strong wrote on Sun, Feb 16, 2020 08:42 PM UTC:

Thank you very much for the help.  I think I've gotten to the bottom it.  It was tricky because there were several things going on.

I think the main problem was indeed with the TT.  Those 169 scores you were seeing were mate positions but those weren't true mate scores.  Amateur mistake here ...  At some point I increased the value I was using to represent INFINITY (CHECKMATE) and I made the value larger than the number of bits I had reserve in my TT entry for storing the score.  So those 169 scores kind of worked - it still prefered them to other things and prefered quicker mate, but other things didn't work.  For example, the mate distance pruning didn't trigger because it didn't consider them mate scores.  I'm sure there are other places in the code with similar issues.

I found this last night but correcting for it did not solve my problem because I had since introduced a new problem since the release of version 2.2.  One of the things I'm doing for 2.3 is streamlining the code for Rules that store state information.  Instead of each Rule-derived class handling this itself, I now derive Rules that store state information from a template class RuleWithState.  Well, in doing that, I broke the DrawByRepetition rule and that was the reason I was still experiencing draws where there should have been wins.

Since things are still needing work on 2.3 and since this is a pretty major problem, I will release a service pack for version 2.2 today or tomorrow.  I will also add the feature for saving the games for games in run in batch mode.


H. G. Muller wrote on Sun, Feb 16, 2020 09:14 PM UTC:

Well, while you are at it, could you also check out why the engine version prints such strange values for the time in CECP Thinking Output? That must be pretty trivial to fix.


📝Greg Strong wrote on Mon, Feb 17, 2020 01:26 AM UTC:

Yup, I've tracked that down too.  Thanks for pointing it out!


📝Greg Strong wrote on Fri, Feb 21, 2020 10:35 PM UTC:

I have posted a patch to bring ChessV2.2 up to Service Pack 1 (SP1).  This is a zip file that just contains replacements for the EXE and DLL files.  Unzip it into your ChessV2 program files directory to overwrite those files.  If you are still on Release Candidate 1 (RC1) that is ok, this will still bring you up to SP1.

Download ChessV2.2 SP1 Patch

This contains everything we discussed below plus a couple of other small fixes.

I will also be updating the regular installer version and source code.  I will post when those are updated, in case you prefer to download the full installer, uninstall, and reinstall.


H. G. Muller wrote on Sat, Feb 29, 2020 12:37 PM UTC:

I am sad to say that there still seems to be a problem with the ChessV.Engine.exe WinBoard engine, which I failed to catch and report before, even though I should have realized something was amiss by the long time it took to load ChessV. When I run this engine from the command line, it nicely prints "feature done=1" at the end of a long list of features (ending with the variants feature), in response to "protover 2". But when I run it under WinBoard it does not do that. So that WinBoard, after a timeout (which fortunately occurs after 10 sec, as ChessV did not start with feature done=0), WinBoard qualifies it as a WB v1 engine, which apparently sets the variants list to just the current variant, 'normal'. (This is arguably a WinBoard bug, but it was a hack to make WB v1 engines dedicated to a specific variant, such as TSCP-G work.)

This doesn't seem just a failure to flush the feature done=1 when running under a GUI; in the WinBoard debug log the "feature done=1" never appears, but after sending the engine a move, before it starts thinking, it resends the option definition for "Weakening" instead.

Btw, the syntax of that option definition is wrong (which causes it to be rejected by WinBoard): the closing quote should be at the very end, not immediately after the option name, like

feature option="Weakening -slider 0 0 15"

[Edit] And from the command line it doesn't seem to respond to the 'quit' command.


Anonymous wrote on Sat, Mar 7, 2020 02:03 AM UTC:

I think it would be nice to add a documentation of .cvc (ChessV Code) so I can understand more of how it works.


📝Greg Strong wrote on Wed, Mar 11, 2020 12:52 AM UTC:

I think it would be nice to add a documentation of .cvc (ChessV Code) so I can understand more of how it works.

Indeed it would but writing documentation is very time-consuming.  That said, I do have a lot of reference material that I need to upload.  It does not explain all the details of the language, but it does at least document all the game classes with the pieces and game variables they expose.  This, combined with the 20 samples in the ChessV include directory should go a long way.  I will try to get this posted this weekend.


elco2 wrote on Fri, Nov 20, 2020 01:02 PM UTC:

Having used a lot of Zillions, I really like this interface, and the fact that a few extra engines come pre-installed. Zillions is all tactics, but I don't think these engines are.

AI never castles, but it probably wouldn't without an opening book, and making 100 opening books seems a bit much :o

Everything I would want in western chess variants, but I hope someday someone will add Asian variants. That someone might be me if I can find enough time.


H. G. Muller wrote on Fri, Nov 20, 2020 04:27 PM UTC in reply to elco2 from 01:02 PM:

There is no reason why an AI should never castle without book. I am pretty sure that the included Fairy-Max and KingSlayer engines would castle very quickly. I don't know about ChessV's intrinsic AI, but if it never castles it means the evaluation can easily be improved. In KingSlayer the castling is driven by a bonus for having a King near a corner behind a Pawn shield.

I guess that conventional chess AIs (i.e. not the alpha-zero type neural networks) are always mostly tactical.


📝Greg Strong wrote on Thu, Nov 26, 2020 01:04 AM UTC in reply to elco2 from Fri Nov 20 01:02 PM:

Hi Elco. Thank you for your interest in ChessV. I'm glad you like it!

Regarding not castling - was with the ChessV engine? And if so, what variants? Almost all variants in ChessV should be using a function to evaluate development, which would reward castling and penalize losing the ability to castle.

Regarding Asian variants - I hope to support these as time goes on. Makruk is currently supported but without the endgame counting rules. This still needs to be done. Xiangqi would not be hard to do, except for the complicated chasing rules. Chu Shogi also isn't too far away. But games with drops are a much bigger challenge.


H. G. Muller wrote on Thu, Nov 26, 2020 10:19 AM UTC:

I found the following search scheme to work quite well in games with drops: you distingush check-drops from other drops, and make a special move generator to selectively generate those (by generating retro moves for all piece types, starting from the King). At d=1 the only drops searched are the check drops; at d>=2 LMR reduces non-captures by 1 ply, and (non-check) drops by 2 ply.

In CrazyWa I used a King Safety evaluation that seemed to work quite well generically across many drop variants. It was kind of unusual by being asymmetric. It awardeds a bonus to the side to move which is the product of the hand value and the number of squares attacked next to the enemy King (the possible drop locations). The latter could be cheaply calculated as side effect of the move generation, while the hand value can be kept track of incrementally. The idea was that in games with drops 'initiative' is all important, and the side that has the initiative typically checks the opponent all the time (mostly through drops, and captures with the slider it just dropped when evasion was an interposition). The side that is in check will never evaluate, but extend for the evasion even at d=0. So the leaves typically have the side on move that has the initiative, and this player usually doesn't have to worry much about his own King Safety.

Xiangqi chasing rules indeed are very annoying; especially the fact that they are based on legal attacks and protects means that you have to search 3 ply ahead to judge them: one to play the attacks that are  chase candidates as a capture, then the possible pseudo-legal recaptures, and finally the potential King captures resulting from these. And you have to do that for every position in the repeat loop. Always for both sides, because they could be mutually chasing, and then it is a draw again.

It can be acceptable to only detect chases for repeats that have a certain minimum search depth left (say 4 ply).


Robert Mate wrote on Thu, Nov 26, 2020 03:48 PM UTC:

Ok I went back and checked on the castling using only the ChessV engine with default settings with me as white. I've been playing mostly standard, gothic, and omega. Of three quick openings/midgames, Omega alone castled. What seems to happen is that the engine will push pawns away from a potential castle position before it gets the chance to castle into it.

On a different note, I tried to get P2P.exe (http://hgm.nubati.net/p2p.html) to work with this to play over the internet, but through no fault of either programmer, it won't work. This is because when you bring up the engine settings there should be a specialized window, but in ChessV there is always the same variation, weakening, etc. I only bring this up bcs there might be an easy fix ;)


📝Greg Strong wrote on Thu, Nov 26, 2020 07:12 PM UTC in reply to Robert Mate from 03:48 PM:

Ok I went back and checked on the castling using only the ChessV engine with default settings with me as white. I've been playing mostly standard, gothic, and omega. Of three quick openings/midgames, Omega alone castled. What seems to happen is that the engine will push pawns away from a potential castle position before it gets the chance to castle into it.

Yes, I did some testing and I see what you mean.  It has no particularly strong desire to castle, so I'm increasing the castling bonus.  I'm also increasing the length of the opening phase.  The development evaluation bonuses/penalties "fade out" as the game progresses.  (By the endgame, it doesn't matter if you've castled or not.)  So some games it just doesn't get around to castling before the bonus is no longer applied.  And maybe this is right - maybe sometimes there are more urgent things going on.

On a different note, I tried to get P2P.exe (http://hgm.nubati.net/p2p.html) to work with this to play over the internet, but through no fault of either programmer, it won't work. This is because when you bring up the engine settings there should be a specialized window, but in ChessV there is always the same variation, weakening, etc. I only bring this up bcs there might be an easy fix ;)

Interesting.  I'm not surprised this doesn't work, although I don't know of any specific reason why it shouldn't.  The ChessV GUI doesn't support everything in the xboard protocol and there could be bugs with that which is implemented.  I may dig into this at some point, but there are other things needing attention more urgently.  At some point, ChessV should just have the ability to play matches across the internet on its own.


📝Greg Strong wrote on Thu, Nov 26, 2020 07:17 PM UTC in reply to H. G. Muller from 10:19 AM:

I found the following search scheme to work quite well in games with drops: you distingush check-drops from other drops, and make a special move generator to selectively generate those (by generating retro moves for all piece types, starting from the King). At d=1 the only drops searched are the check drops; at d>=2 LMR reduces non-captures by 1 ply, and (non-check) drops by 2 ply.

Well, that sounds pretty easy.  What about QSearch?  I assume it just doesn't consider drops at all?

In CrazyWa I used a King Safety evaluation that seemed to work quite well generically across many drop variants. It was kind of unusual by being asymmetric. It awardeds a bonus to the side to move which is the product of the hand value and the number of squares attacked next to the enemy King (the possible drop locations). The latter could be cheaply calculated as side effect of the move generation, while the hand value can be kept track of incrementally. The idea was that in games with drops 'initiative' is all important, and the side that has the initiative typically checks the opponent all the time (mostly through drops, and captures with the slider it just dropped when evasion was an interposition). The side that is in check will never evaluate, but extend for the evasion even at d=0. So the leaves typically have the side on move that has the initiative, and this player usually doesn't have to worry much about his own King Safety.

This also makes sense.  I'll make a note of this.

Xiangqi chasing rules indeed are very annoying; especially the fact that they are based on legal attacks and protects means that you have to search 3 ply ahead to judge them: one to play the attacks that are  chase candidates as a capture, then the possible pseudo-legal recaptures, and finally the potential King captures resulting from these. And you have to do that for every position in the repeat loop. Always for both sides, because they could be mutually chasing, and then it is a draw again.

That is really painful.  I wonder if it is possible to collect this information incrementally during the search rather than searching deeper to determine?


H. G. Muller wrote on Thu, Nov 26, 2020 08:54 PM UTC in reply to Greg Strong from 07:17 PM:

What about QSearch? I assume it just doesn't consider drops at all?

Indeed. I never managed to get a non-exploding QSearch that searched captures plus drops, even when I limited it to safe check drops. Even an extension for check evasions can be dangerous in QS. At least, if you allow drops as evasions. (I forgot to mention that: when in check at d=1, it is of course pointless to try check drops, and I try drop evasions instead, to prevent seeing false checkmates.) The problem is that the drop evasions can add captured pieces back to the board for the side that is being checked, and if the players alternately check each other this can go on indefinitely. (I never saw that problem in my Shogi engines, but in Crazyhouse it did happen.) So it is probably safest to ignore checks beyond a certain QS depth, or limit the number of checks, or limit checking to one player only. Very powerful pieces can cause problems with search explosion in QS anyway.

That is really painful.  I wonder if it is possible to collect this information incrementally during the search rather than searching deeper to determine?

That is hard because of alpha-beta pruning, which might prevent the relevant moves from being searched. And you wouldn't want to do anything extra on the off chance that the current position might later run into a repetition; repetitions are not all that numerous in the tree.

As to castling: In Joker I had the problem that the castling bonus was so large that it could give rise to "positional horizon effect": it started to sacrifice material just to push the castling over the horizon. Which, predictably, only brought temporary relief for a permanent sacrifice. So in KingSlayer I make the associated King Safety bonus available in small steps. Clearing the path for castling to a location with a good Pawn shield already gives you part of the bonus for that shield. Or, in other words, the value of the castling right is a fraction of the bonus,and the more pieces are still in the way, the smaller the multiplier gets. And the availability of a second castling right gets added for 1/8 to that for the primary one. The Pawn-shield bonuses for all 4 locations are stored in the Pawn hash table, and also depends on the opponent having half-open files aimed at your shield.


Aurelian Florea wrote on Tue, Jan 5, 2021 09:36 AM UTC:

I could not find an example where the 50 moves rule is replaced by an 100 moves rule. How is that done?


Aurelian Florea wrote on Tue, Jan 5, 2021 11:45 AM UTC in reply to Aurelian Florea from 09:36 AM:

I have eventually found it in the chess and a half game!

But it seems I cannot acces : ChessV.Games.Rules


📝Greg Strong wrote on Tue, Jan 5, 2021 02:59 PM UTC in reply to Aurelian Florea from 11:45 AM:

You don't need (and can't use) the namespaces in the scripting language.  This should do it:

AddRules
{
    FindRule( Move50Rule ).HalfMoveCounterThreshold = 200;
}

 


Aurelian Florea wrote on Tue, Jan 5, 2021 03:04 PM UTC in reply to Greg Strong from 02:59 PM:

Thanks!


Robert Mate wrote on Sun, Jan 24, 2021 07:59 AM UTC in reply to Aurelian Florea from Tue Jan 5 03:04 PM:

I would like to script some small chess variants. I started by looking at the Los Alamos chess, but can't figure out how to enable castling or allow an initial double pawn move.


📝Greg Strong wrote on Sun, Jan 24, 2021 12:24 PM UTC in reply to Robert Mate from 07:59 AM:

If you're deriving from one of the board-size specific games then there are shortcuts to enable these easily. But the options vary depending on the board size, so for unusual sizes it is a little more work.

You can look at the include file for Duke of Rutlands Chess for an example but here are the relevant bits. For castling, conventional chess would be:

            AddCastlingRule();
            CastlingMove( 0, "e1", "g1", "h1", "f1", `K` );
            CastlingMove( 0, "e1", "c1", "a1", "d1", `Q` );
            CastlingMove( 1, "e8", "g8", "h8", "f8", `k` );
            CastlingMove( 1, "e8", "c8", "a8", "d8", `q` );

The arguments to CastlingMove are: player (0 or 1); the square the king starts on; the square the king ends on; the square the other piece starts on; the square the other piece ends on; and a single character specifying what letter should be placed in the FEN to represent the availability of this move.

For the two-space pawn move, in chess it would be:

    Pawn.AddMoveCapability( MoveCapability( <1, 0>, 2, 2, false, false ) ).Condition = { location: location.Rank == 1 };

The last bit, { location: location.Rank == 1 } is a lambda function taking a location and returning true or false specifying where on the board this new move should be available.  Ranks are counted starting at zero, so Rank == 1 means whenever on the second rank.  The arguments sent to the constructor of MoveCapability are: the direction of the move, <1, 0> means rank offset of 1 and file offset of zero; minimum number of steps; maximum number of steps; is capture allowed; and is capture required.  We did not set the minimum number of steps to 1 because the pawn already has a single-space move and we don't want to generate it twice.

Finally, if you want en passant, just set EnPassant = true in your SetGameVariables function.


📝Greg Strong wrote on Thu, Apr 8, 2021 08:28 PM UTC:

ChessV 2.3 Release Candidate 1

It's been over a year, so time for a new release! This is a pre-release of upcoming version 2.3. It should be fully functional but I am posting a Release Candidate first to give the community a chance to give it a test drive. 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.

This release has lots of improvements:

  • Anti-aliased graphics for both alfaerie and abstract sets where available – some less common pieces will still result in the game reverting back to bitmaps.
  • Support for bent riders. Grant Acedrex, for example, is now supported.
  • Support for imitators. The Apothecary Chesses are now supported.
  • Continued improvement to the capabilities of the scripting language. New pieces can now be defined with XBetza in most cases. An XBetza expression tester is provided under the Tools menu.
  • Many more games have been added. We are up to 138 variants supported, with 44 of those defined via the scripting language.
  • Many bug fixes and improvements to playing strength

Download here:
/programs.dir/ChessV2.3 RC1.zip

Please let me know if you run into any issues. Enjoy!


Aurelian Florea wrote on Fri, Apr 9, 2021 09:09 AM UTC in reply to Greg Strong from Thu Apr 8 08:28 PM:

I see only apothecary chess Modern. Probably it is a superficial problem.

Later Edit: Sorry for that My bad!


Aurelian Florea wrote on Fri, Apr 9, 2021 10:41 AM UTC in reply to Greg Strong from Thu Apr 8 08:28 PM:

In apothecary chess classic the knight does not get it's extra moves (it is a NmZ).


📝Greg Strong wrote on Fri, Apr 9, 2021 04:44 PM UTC in reply to Aurelian Florea from 10:41 AM:

In apothecary chess classic the knight does not get it's extra moves (it is a NmZ)

Thanks for pointing this out.  It will be corrected in the official release.  In the meantime, you can play with an include file like the following:

Game 'Apothecary Chess Classic (fixed)' : 'Apothecary Chess Classic'
{
    AddPieceTypes
    {
        Knight.XBetza = "NmZ";
        Knight.MidgameValue = 425;
        Knight.EndgameValue = 425;
    }
}


Aurelian Florea wrote on Fri, Apr 9, 2021 05:45 PM UTC in reply to Greg Strong from 04:44 PM:

Ok, Thanks!


📝Greg Strong wrote on Sat, Apr 10, 2021 01:53 AM UTC:

Game Reference Documentation

ChessV is designed to allow easy creation of new games through the customization of existing games. Unfortunately, documentation has been sorely lacking. I have now posted reference pages for the predefined games:

ChessV Game Reference

These games are organized into a useful hierarchy with many extension points. Hopefully, browsing through these pages will provide some insight into the inner workings of ChessV. Please feel free to post any questions you might have!


Christine Bagley-Jones wrote on Sat, Apr 10, 2021 03:20 AM UTC in reply to Greg Strong from Thu Apr 8 08:28 PM:

I can't get that download link to work.

I mean the link to download ChessV 2.3 verison

Also, when i go to your ChessV.org site, on mainpage, I just see the 2.2 version.


📝Greg Strong wrote on Sat, Apr 10, 2021 02:41 PM UTC in reply to Christine Bagley-Jones from 03:20 AM:

Hi Christine,

Thanks for checking it out. I think the must be an error your end. It downloads ok for me, as does the Grand Shatranj Zillions link which you are also having trouble with. When you click on this link, what happens?

And, yes, 2.3 is not lised on the ChessV page because this is a pre-release. I'm just hoping to get a few members of the community to give it a test drive before I build the install package (which is a pain in the butt.)


Carlos Cetina wrote on Sun, Apr 11, 2021 06:01 PM UTC:

Hi Greg,

I can't download ChessV2.3 RC1.zip. The link does not work. Chrome seems to block it. I wonder if it has nothing to do with the fact that this browser wants URLs to be safe and I see that the protocol you use is http and not htpps.


📝Greg Strong wrote on Mon, Apr 12, 2021 12:36 AM UTC in reply to Carlos Cetina from Sun Apr 11 06:01 PM:

Thanks, Carlos. That is helpful.

It seems you are correct. Chrome will not download a file that is not secure if the link is on a page that is secure. So it was possible to download a link from chessv.org, since that site is not https, but linking it from here does not work because this page is https. Funny, even Chromium would download it, while Chrome would not.

Anyway, I have posted it here for the time being:

/programs.dir/ChessV2.3RC1.zip

Carlos Cetina wrote on Wed, Apr 14, 2021 02:31 PM UTC:

Okay, Greg, you are welcome. The new link does work. I see that you have added 12 variants including 2 invented by Vitya Makov: Chess 9x9 and Cardinal Chess. Those interested in seeing how ChessV handles these 2 variants take a look at the following YouTube links:

Chess 9x9

Cardinal Chess

Congratulations and thank you for such a commendable work you do!


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!


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

Duplex chess is a clerver game!


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


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


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


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.


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.


📝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!


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


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


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


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.


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?


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


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.


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.


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

 


100 comments displayed

EarliestEarlier Reverse Order LaterLatest

Permalink to the exact comments currently displayed.