[ 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 by Greg StrongLater ⇩Reverse Order⇧ Earlier⇩ Earliest⇧ Opulent Chess. Play this derivative of Grand Chess with additional jumping pieces (Lion and Wizard).[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-03-30 UTCThese presets now use the updated starting array. They also use the new fairychess include file, edited from the new Grand Chess preset. I have also modified the abstract graphics for the Knight-Wazir and the Lion (Half-Duck.) The Lion graphic was my creation. The Knight-Wazir is now mine although I saved into the Strong sub-directory and did not overwrite Fergus's piece or update any other piece sets beyond the Opulent Chess set group. I would be happy to hear feedback on these piece graphics. The Fairychess Include File Tutorial. How to use the fairychess include file to program games for Game Courier.[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-03-28 UTCThanks for looking at this. But I'm looking at the new Grand Chess preset and I don't see the "realname" modifier used anywhere. Am I missing something? I tried this code without other modification and it doesn't work. The display of legal moves is correct, but it won't let you actually move. EDIT: I see. I need to look at Gross Chess, not Grand Chess to see the new code. Greg Strong wrote on 2020-03-28 UTCAh, ok. Got it. Another question: I just updated a graphic for one of the pieces but the change doesn't show. I assume this is because of the cloudflare caching. I assume there's no way for me to force an update (without changing the filename)? And, if that's correct, it will automatically update in a couple of days? Update: Ok, I still have a problem. In this game, the Knight_Wazir is called "Knight". Your code didn't work for this case, presumably because the Knight already exists. And it broke things so badly I couldn't not even get back in to edit it. It locked up as soon as I tried to open the preset. (I resolved this by overwriting the php file by ftp.) Greg Strong wrote on 2020-03-28 UTCOk, I have Opulent using the new fairychess include file. This is a definite step forward in preset creation. The only issue I see, and it is not terribly large, is that when a pawn is offered promotion it shows the internal names of the pieces (e.g., Cardinal, Marshall, Half_Duck, instead of Archbishop, Chancellor, and Lion.) It would be nice to have an associative array that is used to provide the display name that is pre-populated with the internal names but we can update. Game Courier Tournament 2019. Chess Variant Tournament to be played on Game Courier.[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-03-27 UTCNice. Thanks for tallying! And congratulations! Grand Chess. Decimal variant with Cardinals and Marshalls.[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-03-26 UTCThis seems to work perfectly. You can only promote to captured pieces. Does not offer promotion if none is available. Does not allow pawn move to 10th rank if no promotion is available, but still does give check. Does not allow two different pawns to promote to the same captured piece... Everything I can think to test works correctly. Apothecary Chess-Classic. Large board variant obtained through tinkering with known games.[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-03-25 UTC 1. The Joker has the same powers of movement as the last piece the opponent moved, which is what I've been trying to program with my Joker function. [Emphasis mine] To do that, wouldn't you need White_Joker and Black_Joker subroutines? As I understand your code, a piece move changes the move of both jokers, but perhaps you've changed it from the snippit you posted or I don't fully understand it. Greg Strong wrote on 2020-03-24 UTCOther questions: Say white moves a bishop. Now black's joker could move like a bishop - but instead black moves a rook. Now its white's move and he wants to castle, but he cannot castle if in check. To decide if he is in check, does black's joker still attack like a bishop, or does it attack like a rook? Or neither? Argument for attacking like a bishop: white's joker immitates black's last move and black's bishop immitates white's last move. Black moving only changes the move of white's joker. Argument for attacking like a rook: any move changes the move of both jokers. This is the easiest to program but I don't like it. Argument for neither: white's joker moves like black's last move only when white is on the move. After white moves, his joker has no attack power until black moves again. It is also important to determine exactly when the change happens. Say white wants to make a normal king move and black's joker still attacks as a bishop. Does this mean that the white king cannot move onto the bishop's diagonal because that is moving into check? Or has the fact that, as soon as white moves his king the black joker moves as a king, mean that the white king is not in check? Greg Strong wrote on 2020-03-24 UTCSorry - yes, I wasn't thinking your question through. Still, I think the Joker should forward when imitating a pawn. If white moves a pawn two spaces, should the black joker (now imitating that pawn) be able to capture en passant? If so, it needs to move forward (or things would be really strange.) Greg Strong wrote on 2020-03-24 UTCAllowing a pawn to move backward would be a very radical change and I doubt it would make a better game. It certainly would be less of a "chess variant". The Fairychess Include File Tutorial. How to use the fairychess include file to program games for Game Courier.[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-03-23 UTCI need to update my Opulent Chess presets for the new starting array and was thinking I should change to the new fairychess include file at the same time. The issue is the White_Pawn and Black_Pawn subroutines don't support promote-by-replacement. So I'm wondering what would be the best way to go about this. I could, of course, just make new subroutines in my preset and set the consts P and p to the new routines, but this is not generally reusable. This rule is also used in Grand Chess, Eurasian Chess, and no doubt others... Should we add alternate subroutines to the fairychess include file (maybe White_Pawn_Rep and Black_Pawn_Rep, for "replacement")? Or make an alternate fairychess include file? Or perhaps the existing subs can be upgraded to support this, although I wouldn't want to change the existing routines myself. Any thoughts Fergus? ChessV. Missing description[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-03-11 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. Game Courier Developer's Guide. Learn how to design and program Chess variants for Game Courier.[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-03-11 UTC"Fast castling" isn't just the King and Rook changing places - the Rook goes to the King square but the King can go anywhere in between so long as it is not attacked. But squares in between can be attacked and need not even be empty. This comes from Kevin Pacey's Waffle Chess. Here is his description: A king that has never moved, and is not in check, can 'leap' once a game, along the first rank, to any unattacked empty square between it and an unmoved rook, followed by said rook 'leaping' to the king's initial square so as to complete castling in one single move. It does not matter if any squares in between are occupied or under attack. Match between Fairy Max and ChessV[Subject Thread] [Add Response]Greg Strong wrote on 2020-03-05 UTCThinking about it now, ChessV only determines the capabilities of an engine when it first sees it. If ChessV had already discovered Fariy-Max and then you add support for Frog Chess, it won't know. Click the Engines button on the main screen. Select Fairy-Max and click Remove. This does not delete any files. If you have MaxQi and ShaMax in the list, you will need to select and remove those as well (because they are in the same folder.) Then close ChessV and run it again. It will re-discover the engines in that folder. It should then show up. You can click Engines, select Fairy-Max, and click Properties. In the bottom-right you will see a list of the variants that it supports. Make sure the name in that screen exactly matches what you put in the XBoardEngine variable. Greg Strong wrote on 2020-03-04 UTCYes, I've seen the bug report but haven't finished looking at that yet. My post was how you can use Fairy-Max under ChessV in the meantime. Greg Strong wrote on 2020-03-04 UTC@Aurelian: ChessV decides what games an engine supports based on the variants it announces support for. Unfortunately, the XBoard protocol only specifies how a small number of variants are to be named and they are often not the official name of the game. For example, Joe Joyce's Great Shatranj is identified only as "great". So for many games, ChessV doesn't know if an engine supports a game because there is no official string used to identify the game. That said, you can tell ChessV how a variant should be identified by specifying the XBoardName string variable. So, if you have configured FairyMax to play Frog Chess and called it "frog", you would also edit the ChessV include file that defines Frog Chess adding the following line: XBoardName = "frog"; This line goes right inside the Game definition, where Invented and InventedBy are specified. If you do this, it should offer Fairy-Max as an opponent for Frog Chess. ChessV. Missing description[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-02-21 UTCI 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. Expanded Chess 256. The Chess experience upscaled to a larger board. (16x16, Cells: 256) [All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-02-18 UTCI added a diagram and performed a few minor edits to improve the text. Expanded Chess. Missing description[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-02-18 UTCMy thoughts - Zebra: The Camel is the more common complement to the Knight. I think a Zebra is OK on a 10x10 board but would be less mobile than the Knight because more moves would be off-board (although a Camel is color-bound so also weaker than a Knight, but I think this is OK because a Bishop is a colorbound piece that could be considered the complement of the Rook.) Also, if you keep the Zebra, I think you should keep the name as-is. No Draws: I'm not sure how advisible this is. The point of Stalemate is to give the player who is behind something to play for. For repetition and 100-move rule, at a minimum, the written description needs to be clarified. It currently says the "last player to move" wins, but your comment says "last to capture". And for 100-move, do you mean "last to capture or push a pawn"? That would make more sense. And do you mean 100 half-moves, like the Chess 50-move rule? Or do you really mean 100 full moves? I think that would be too much and I don't see any reason to increase it at all. Personally, I'd scrap all of this and leave all the victory/draw conditions as in orthodox Chess, but that is just personal opinion. ChessV. Missing description[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-02-17 UTCYup, I've tracked that down too. Thanks for pointing it out! Greg Strong wrote on 2020-02-16 UTCThank 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. Greg Strong wrote on 2020-02-16 UTCThank 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... Greg Strong wrote on 2020-02-15 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. Opulent Chess. A derivative of Grand Chess with additional jumping pieces (Lion and Wizard). (10x10, Cells: 100) [All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-02-13 UTCYes, I will be updating the GC presets. I just want to modify them to use the new fairychess include file while I'm at it and did not get that finished last weekend. But we have a 3-day weekend coming up so it should get finished. That table of piece values is quite old so I wouldn't put any stock in it. Probably doesn't match at all with what I am currently using in ChessV (which gets updated more often.) The Archbishop is too low probably because I was relying on Betza's logic which significantly undervalues it, but I would not claim that these values are what he would have calculated. Also, the table shows the value of sliding pieces going up in the endgame, which made sense since there are less obstructions, but seems to not actually be true in most cases. (The value of the Pawn going up is true, though.) Game Courier History. History of the Chess Variants Game Courier PBM system.[All Comments] [Add Comment or Rating]Greg Strong wrote on 2020-02-08 UTCSince I am updating the GC presets for Opulent anyway for the new array, I am going to modify it to use the new fairychess include file. To that end, I modified the include file to add a few new pieces. I added Half_Duck and Knight_Wazir since Opulent requires those. While I was at it, I added the three new pieces for Kevin's games that Aurelian has been working on: Elephant_Ferz, Elephant_Wazir, and Frog. For reference, here are all the pieces currently supported by the fairychess include file (the notes in parenthesis are not part of the actual name): Queen Rook Knight Bishop King White_Pawn Black_Pawn White_Berolina_Pawn Black_Berolina_Pawn Cardinal (BN) Marshall (RN) Amazon (BRN) Cannon Vao Wazir Ferz Camel Camelrider Dabbabah Dabbabahrider Elephant Elephantrider Nightrider Dragon_Horse (BW) Dragon_King (RF) Eques_Rex (NFW) Wizard (CF) Champion (WDF) Korean_Elephant Chinese_Elephant Giraffe (4,1 leaper) Grasshopper Short_Rook (R4) Squirrel (NAD) Spider (DA) Spider-rider (DDAA) Squire Unicorn (BNN) Zebra Elephant_Ferz (FA) Elephant_Wazir (WA) Half_Duck (HFD) Knight_Wazir (NW) Frog (FH) Griffon Aanca Leo (Cannon + Vao) Mao Moa Murray_Lion One small nit-pick, the Spider-rider has a dash while the other riders do not. Any objections if I correct this inconsistency? 25 comments displayedLater ⇩Reverse Order⇧ Earlier⇩ Earliest⇧Permalink to the exact comments currently displayed.