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


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


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


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!


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


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


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.


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

Thanks!


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


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?


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.


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


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


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 ;)


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


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


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.


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


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.


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.


25 comments displayed

LatestLater Reverse Order EarlierEarliest

Permalink to the exact comments currently displayed.