Comments/Ratings for a Single Item
![A computer program](/index/program.gif)
![A computer program](/index/link.gif)
![Editor](/index/editor.gif)
I'm well. Invented two original chessvariants (Maorider Chess and Bungalow Shatranj) and some 'light' variants (not posted yet): Rookaba Shatranj, Rooks Chess. Mighty Men: Man (b,g lines) moves like a king (ferz + wazir). Benz (c,f lines) moves like a bishop forward or like a rook backward. Pioneer (a,h lines) moves like a man or like a rook forward or backward. Cyborg (d line) moves like wazir, dabbaba, knight or alfil. IT DOESN'T MOVE LIKE FERZ. Ok. I'll work on different openings for different armies. I'll post openings here.
![Editor](/index/editor.gif)
Sam, your idea of having WinBoard force moves into an engine that refuses them by loading the engine with the position after the move works really great. I implemented in WinBoard now, under control of the option -forceIllegalMoves. In combenation with -testLegality false, this now allows me to completely autmatically play a Schoolbook-Chess match between ChessV and Fairy-Max. Now and then (about 10% of the games ChessV plays a non-standard castling, which then shows up in the PGN as Kf1h1 or Kf1b1, and Fairy-Max is simply restarted. It was a bit of a pain to implement it, because initially the engine will still think the opposite side is to move, and the WinBoard-protocol edit command (which Fairy-Max uses) does not alter that, and the commands that do are deprecated, so the side-to-move has to be flipped by playng a dummy move. But that works smoothly now. In reaction to some earlier remark you made: there was no reason for hacking WinBoard to suppress the popup after a match: there is a command-line option that controls it (-popupExitMessage false/true), which is remembered in the WinBoard settings file. I use PSWBTM to play the match, in stead of the scripts you use, and this uses that option automaticaly.
I could not find the download on your web page nor in the Winboard forum.
This will make Schoolbook 2010 a lot easier to implement.
![Editor](/index/editor.gif)
ChessV 0.95 Released
After many years, I am releasing an updated version of ChessV. The previous version, 0.94 introduced a problem that actually greatly weakened playing strength from version 0.93. This version corrects that issue and adds other speed enhancements which should make this by far the strongest version.
ChessV can be downloaded from my new domain www.chessv.org. There is no installation program. Just download the correct version (32-bit or 64-bit), unzip, and run ChessV.exe.
Please note that, as some of you know, there is a new ChessV, version 2.0, rewritten completely from scratch that is forthcoming. Hopefully I'll be releasing that in the near future too, but that isn't what this is. This is a new version of the "classic" ChessV. I don't know if there will be any further releases of the classic version, but since version 0.94 had issues, it didn't seem right to leave that unfixed.
Changes from previous version:
- Multiple bug fixes, including one that seriously impacted playing strength
- Addition of Late Move Reductions (LMR), an engine feature that will further enhance playing strength
- Added support for Enep by Aurelian Florea
- Fixed a problem with Ralph Betza's Chess with Augmented Knights that I only discovered while trying to use it as a template for Enep. This has probably been broken for many versions. Actually, this Betza invention is so obscure, I had to dig pretty deeply to find the chessvariants.com page for it.
- Updated the implementation of Joe Joyce's Modern Shatranj to reflect the new, simplified promotion rule. Previous versions actually did support the complex rule, but it required a special class to implement it (I couldn't just use the standard class the other Shatranj variants use.) This change allowed me to eliminate two files and over 100 lines of source code. Thanks, Joe, for agreeing to simplify things :)
Please let me know if you have any questions or issues with this version.
![Editor](/index/editor.gif)
Great news, and congratulations. It is a really good thing that you took the trouble to fix the bugs that were inadvertantly introduced in 0.94, because that had some interesting new variants not supported by older versions (such as Spartan Chess, and, IIRC, even Xiangqi.) Now you can terminate this ground-breaking project with a polished product.
I clicked on the link for the 32-bit version, but I got the 64-bit version instead (which doesn't work on my computer). Am I doing something wrong?
Edit: never mind, I figured it out. Just had to change the URL manually. Got the right file.![Editor](/index/editor.gif)
Oops, it was linked to the incorrect file. Thank you for letting me know, Jospeh. It's been fixed.
Greg,
I just watched an Enep game where the Enep knight has captured with an wazir move, this is not supposed to happen, could you please check?
![Editor](/index/editor.gif)
You're right, something is definitely wrong with that. Thanks for letting me know, I'll take a look when I get a chance.
Hello again Greg,
I contemplating writing code for my upcomming (still in testing phase) apothecary games, but I see the way movement is implemented, that there is no easy way of implementing the aanca and griffin.
The move info contains rank modification, file modification and maximum and minimum number of steps from what I understood. Nothing about a second legged move.
Am I correct? Do I miss something?
![Editor](/index/editor.gif)
Hi Aurelian,
Yes, you are correct. I never added Grande Acedrix because the Griffon move isn't directly supported. This would be tricky to implement in a general way. It's not just being able to generate the moves - that's not too bad. It gets more complicated with the IsSquareAttacked function used for detecting Check. IsSquareAttacked starts at the square and "backs up" in every direction the game uses until it hits a piece or leaves the board. If it hits a piece, it determines if that piece can move that far in that direction. To support moves with multiple parts, the logic in IsSquareAttacked would get pretty complicated. To see if a square is attacked by a Griffin, as it is backing up in Rook steps, for each step, it would then need to back up one diagonal step each way and check for a piece that can move like a Griffon. Then there is the problem of Static Exchange Evaluation (SEE). This gets even more complicated, but ChessV allows you to just turn off SEE for specific games. Some of the games already supported have to turn off SEE. It's not really necessary, it just makes then engine faster.
All that said, it is possible to implement the Griffon in ChessV if you are really dedicated, but it is probably more trouble than it is worth. You can override the GenerateSpecialMoves function of the Game class to add support for moves that the internal move generator can't handle. Most of the pieces from Ultima work this way. (Look at the implementation of Chess with Ultima Pieces for an example.) Then you also have to override the IsSquareAttacked virtual function as well.
You could also look at Postduif by Evert Glebbeek. It was designed to play Grande Acedrix. In its move generator, every move has a step/leap component followed by a slide component (either one of which can be zero to skip it.) It may have problems with some of the other pieces or rules for Apothecary though. I haven't looked at it in detail.
Cheers,
Greg
![Editor](/index/editor.gif)
In Fairy-Max I use the ultimate robust way for testing whether in check: just run the move generator for the opponent, and see if it captures King. But that is slow. A more general fast way for detecting attacks would be to not start from the board but from the piece list, and check for every piece whether is is alligned with the King for checking based on a lookup table indexed by the relative position to the King.
Thanks, Greg
I'll attempt to implement apothecary in chessV, hope to succeed.
Greg Strong wrote:
"...You can open one of the Chess presets, click Edit to modify it, and just erase all the code in the seven boxes at the bottom to stop it from enforcing any rules. Then, in the first box, change the name from Chess to Asymmetric Chess, enter your user id and password, and click Save. It will give you a link that you can then use to send out invitations to play..."
As an experiment I tried doing this procedure for making a preset with a simple chess variant of mine called "Throne Chess" instead (same rules as chess, except playing K to K8 is an extra victory condition, "Thronemate"). I had some success, but I saw nowhere that a little PBM green box icon symbol for a Throne Chess preset had been created, with myself credited as the author. There was created a default file for Throne Chess, stored under my user ID, in Game Courier's programmer's file log system. Throne Chess was not showing as having, say, 0 games played for it so far under "All Games" in the Game Courier Menu though. I edited the 'settings name' from default to be called Throne Chess, later, along with redirecting the default file version to it, too, but still no little PBM green box preset icon showing anywhere upon searching the website. I'm wondering if I have to do something rather complicated, or beyond me, instead of my doing what was recommended to Dmitry, to get a little PBM green box preset icon to come into existence (without having to play anyone a game online first).
![Editor](/index/editor.gif)
Hi Kevin,
Yes, there's another step to get the preset entered into the site index. First, make sure you are logged in. Then, from the pull-down menu with your name, select 'Post Your Own Game'. Don't fill out the form on the first page, instead click the Create Game Courier Preset link. Then fill out the forms. For the form on the second page, you'll need the hyperlink to the preset to put in the description. If you've lost the hyperlink, go to the play.chessvariants.com domain, and select 'Your Game Courier Settings Files' from the menu with your name.
Please be aware that the new submission won't show up in the index until approved by an editor.
Cheers,
Greg
![Editor](/index/editor.gif)
Good luck, Aurelian, that is ambitious. Let me know if you have any questions.
For detecting Griffon/Aanaca attacks in IsSquareAttacked, I would not back up from the target square. Instead, I would find all Griffons/Aanacas of the color, go through them one-by-one and step out from them to see if they reach the target square. If they don't attack the target square, you can hand off to the base class implementation of IsSquareAttacked to handle everything else.
Greg,
Well, there are two main reasons I'm doing this.
1. Implementing the correct promotion rule that fairy-max isn't able to do (i.e. promoting to a minor on 8th rank, also a rook at 9th rank and also a major piece (queen,griffin,aanca, archbishop,chancellor),at 10th rank)..
2. Adding the fool (imitator) that mimics the last move of the opponent.
Not sure how to do those now but I got hints for the second from the mimotaur implementation.
Technical question:
Where is the main and the .prj file? Both would help! I need the main to be able to test my creations.
25 comments displayed
Permalink to the exact comments currently displayed.