Check out Glinski's Hexagonal Chess, our featured variant for May, 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 by FergusDuniho

LatestLater Reverse Order EarlierEarliest
Game Courier Developer's Guide. Learn how to design and program Chess variants for Game Courier.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sun, Apr 10, 2022 01:54 PM UTC:

This morning I was getting confused about what filename and rankname returned. I wanted to get the nth file or the nth rank from passing them numbers, but they only parsed coordinates and returned the file or rank name of that coordinate. So, I added the extra ability I needed to each function. If filename or rankname is passed an integer, and that integer is an array index for $file or $rank, it will now return the array value with that index. It will otherwise return an empty string. So, filename 0 will return a in Chess, and rankname 0 will return 1 in Chess.


Aberg variation of Capablanca Chess. Play this variation on the Play-by-Email system![All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sun, Apr 10, 2022 02:42 AM UTC:

I replaced Tony Quintanilla's unprogrammed preset for this game with one programmed using the fairychess include file. By using subroutines that support castling as a two-part move, it allows two-part castling moves. By relying on Game Courier's ability to ask you to choose between multiple legal moves that match the move entered so far, it allows you to make two-part castling moves without the need to write them out by hand.


Grotesque Chess. Play this variant of Capablanca's Chess that leaves no Pawns unprotected.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sat, Apr 9, 2022 06:34 PM UTC:

Grotesque Chess now has a new preset that uses the fairychess include file.


The Fairychess Include File Tutorial. How to use the fairychess include file to program games for Game Courier.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Thu, Apr 7, 2022 02:25 AM UTC:

I am currently in the middle of revising this tutorial. I have added a lot of new and updated content already, and the original material follows the revised text. I expect to continue it tomorrow.


Devingt Chess. Decimal chess with 20 pieces per side including Sages (moving as Camels).[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Apr 6, 2022 01:42 AM UTC in reply to Jean-Louis Cazaux from Tue Apr 5 07:56 PM:

I know what it's like to have other things to do. That's the story of my life. The best way to learn may be by example, using the tutorial only to explain things further. With that in mind, I have updated the Grand Chess preset with better organization and helpful comments to let you know what the code is for. Since there is no castling in Grand Chess, it won't help you with that, but it will help you get down some of the basics for creating a preset that uses the fairychess include file.


🕸Fergus Duniho wrote on Tue, Apr 5, 2022 03:49 PM UTC in reply to Jean-Louis Cazaux from 12:13 PM:

The fairychess include file is not a drop-in replacement for chess2. It introduces new paradigms on how to program a preset. One major difference is in the names of functions and subroutines. Instead of naming them after piece labels, they are now named after piece codenames. The tutorial gives details on this. I would recommend starting with a preset that already works with the fairychess include file and adapting it to work with your game.


🕸Fergus Duniho wrote on Mon, Apr 4, 2022 09:49 PM UTC in reply to Jean-Louis Cazaux from 07:27 PM:

Gross chess works fine for that. I can't see where is what I miss for Devingt.

You are using the chess2 include file instead of the fairychess include file. You should switch to the fairychess include file, because it is more up-to-date, and the new subroutines I mentioned to you are in that include file. To learn about what makes it different, you should check out the tutorial on the fairychess include file.


🕸Fergus Duniho wrote on Sun, Apr 3, 2022 08:38 PM UTC in reply to Jean-Louis Cazaux from 04:38 PM:

en-passant: a pawn on 7 should be able to take en-passant an opposed pawn that had moved 3 sq.

This is handled in the preset for Gross Chess. The Pawn functions and subroutines in the fairychess include file should handle it automatically if you set fps to 3.

promotion: only for captured pieces, a pawn on 9 cannot step on 10 if no piece is available.

The preset for Eurasian Chess can handle this. In the Pre-Move sections, it sets a value for wprom or bprom that is based on the currently captured pieces. Each variable should be set to the pieces that a Pawn may promote to. These variables are static for Chess but dynamic for Eurasian Chess. When it is empty, a Pawn may not move to the last rank. Here's what it looks like for Pre-Move 1 for White:

set wprom intersection keys capturedpieces array Q R B N C V;

🕸Fergus Duniho wrote on Sun, Apr 3, 2022 07:58 PM UTC in reply to Jean-Louis Cazaux from 04:38 PM:

castling: the K may move 2 OR 3 sq towards the R

I just added some subroutines to the fairychess include file for this. These are castle2, castlepos2, and stalemated2, which are substitutes for castle, castlepos, and stalemated. Unlike castle and castlepos, castle2 and castlepos2 take four arguments instead of two. The first two are the same as before, the from and to coordinates for the King. These should be followed by the from and to coordinates for the piece the King is castling with. Unlike castle, which will handle all possible castling moves in the direction of the King's move, castle2 specifies a specific castling move. The stalemated2 subroutine differs from stalemated by calling castlepos2 and by writing out legal castling moves as two-piece moves.

The code in the preset also has to be changed to accommodate this. This line should be added in the Pre-Game code:

allow moves 2

You will also have to set different values for bcastle and wcastle. Instead of giving them a list of all the spaces a King may castle to, each should be given a list of fully described castling moves. Each should appear as four coordinates in parentheses in the same order they are fed into castle2. For your game, you would want to include four sets of coordinates for each King, one for each specific castling move.

In the Post-Move sections, castling moves have to be handled separately from regular moves. This means that the King subroutine should be rewritten to not include castling. An example of what to do can be seen in the preset for Miller's Spherical Chess, which uses the versions of these subroutines from the logical include file. The relevant code looks like this for White:

if isupper alias $prevmoved:
  if == $prevmoved K and == $moved R:
    if == $origin a1:
      gosub castle2 e1 c1 a1 d1;
    elseif == $origin h1:
      gosub castle2 e1 g1 h1 f1;
    else:
      die $moves "is illegal. Go back and try again.";
    endif;
  elseif != $prevmoved P or != $moved P or != $prevdest $dest:
    die "Except for castling or pawn promotion, you may not move twice on the same turn.";
  endif;
elseif ...

This uses the variable $prevmoved for the previous value of $moved. Usually, $prevmoved will have the piece last moved by the opponent. This block of code will run if the piece in $prevmoved belongs to the player moving, which happens in a two-part move. In Chess, these would be castling or pawn promotion. In a castling move, $prevmoved will have the player's own King. Using this variable saved me from having to write code like I did for multi-move variants. If it's not a castling move, it returns an error unless it is a pawn promotion. This lets the code exclude other double moves. Note that this code would have to be tweaked for your game.

Finally, the Post-Game code should use stalemated2 instead of stalemated.


Play Nadvorney's Spherical Chess on Game Courier. Play Nadnorney's adaptation of Chess to a spherical board on Game Courier.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Tue, Mar 29, 2022 02:20 PM UTC in reply to David Cannon from 12:18 PM:

The only game completed so far ended in checkmate. The pole amplified the power of the Queen, allowing a checkmate in a position that would not be checkmate in Chess.

If you check the rules page for Spherical Chess, you will find multiple variants. The one called Sphere Chess has limited the King's powers of movement to those in Chess on a 2D board.


Heavy Shako. (Updated!) 10x10 variant inspired by Yangsi, made by Eric Silverman and Jean-Louis Cazaux.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Fri, Mar 25, 2022 05:19 PM UTC:

I unhid this. I corrected the link to Shako in the introduction. And I changed Shako to Chess in the Rules section, because this gives more finality to the description of the rules, and Shako doesn't do anything different from Chess that anyone would have to look up to fully understand how to play Heavy Shako.


Chess with magical connections. Missing description (8x8, Cells: 64) [All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Thu, Mar 24, 2022 04:37 PM UTC:

Many of my remarks from your magic fields game also apply here.

This game follows the rules of chess with additions.

We don't have a page for that game, and without it, the rules to this game are left unexplained.

Chess with magic connections is a type of chess in which a piece or pawn changes its properties if there is support by two connections.

There has been no explanation of what magic connections are or of how they work.


Chess with magic fields. Members-Only Missing description (8x8, Cells: 64) [All Comments] [Add Comment or Rating]

Since this comment is for a page that has not been published yet, you must be signed in to read it.

WeGo Chess. Members-Only Perfectly balanced, simultaneous play.[All Comments] [Add Comment or Rating]

Since this comment is for a page that has not been published yet, you must be signed in to read it.

Castle Siege Chess. Members-Only Traditional Chess merged with Circular Chess.[All Comments] [Add Comment or Rating]

Since this comment is for a page that has not been published yet, you must be signed in to read it.

Heavy Shako. (Updated!) 10x10 variant inspired by Yangsi, made by Eric Silverman and Jean-Louis Cazaux.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Mar 23, 2022 03:33 PM UTC:

You haven't given any explanation of how the King castles differently. Since the King is the same distance from the Rooks as in Chess, it looks like it would castle the same.

You mention that the Pawn "is subject to different rules of promotion." But all you say on that matter is list all the pieces it can promote to. It is standard in Chess variants for a Pawn to be able to promote to any piece in the game besides the King or Pawn. So, if the only difference is that the Pawn has more promotion options due to the game having more types of pieces, it's not really subject to different rules of promotion. So, you just need to say that it can promote to any piece but a King or Pawn, and it has more promotion options than in Chess, because this game has more types of pieces.

I corrected the spelling of squirrel in the interactive diagram.


How to Enforce Rules in Game Courier. A tutorial on programming a rule-enforcing preset in the GAME Code language.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Tue, Mar 22, 2022 05:01 PM UTC:

Attention Game Courier Developers

While working on a preset for Miller's Spherical Chess, I was using the problem composer to set up positions for testing whether the pieces had the correct moves. While doing this, I happened to have the white King on h1 while testing its powers of movement, and it had nine moves highlighted as legal. I eventually figured out that it was counting the castling moves as legal even though I had no Rooks on the board.

To fix this, I replaced this code:

setflag a1 a8 h1 h8 e1 e8;

with this code, which conditionally checks whether the right piece is on each space before setting the flag.

if == K space e1:
  setflag e1;
endif;
if == R space a1:
  setflag a1;
endif;
if == R space h1:
  setflag h1;
endif;
if == k space e8:
  setflag e8;
endif;
if == r space a8:
  setflag a8;
endif;
if == r space h8:
  setflag h8;
endif;

The reason the King was getting an extra legal move on h1 is because h1 was flagged for the Rook. When I tried the King on g1, it had only 8 legal moves. By setting each flag conditionally, a problem will not allow castling unless a King and Rook are in the right positions for castling. I have made this change to the Chess preset, and with appropriate modifications, it should be made for any preset that allows castling and uses flags to control when castling is allowed.


Game Courier History. History of the Chess Variants Game Courier PBM system.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Tue, Mar 15, 2022 07:52 PM UTC in reply to A. M. DeWitt from 06:41 PM:

It seems the new handling of case is interfering with the display of the Preset Editor, at least for me.

There is a double space in the case statement on the line where the error is.

The error message it gave wasn't quite accurate, because the actual string was the empty string, not one with whitespace in it. I modified it to skip over empty strings. So, it works now.


Shogi. Play the Japanese form of Chess, in which captured pieces can be dropped back as your own. (Recognized!)[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sun, Mar 13, 2022 10:17 PM UTC:

The code for handling every piece but the Kings being held in hand seems to be working now. Instead of expanding the area of the board available for captured pieces, it uses a couple variables to hold the last two pieces. When the last two captured pieces are not Pawns, it switches them with Pawns, so that they remain available for dropping. As pieces are dropped, it moves Pawns from the variables back to the visible in-hand area. In practice, actual games will usually not get this far, and they will have no need for this code. The updated preset seems to be displaying past games well, though since Shogi is the most popular game on Game Courier, I have not tested them all.


Shako. Cannons and elephants are added in variant on 10 by 10 board. (10x10, Cells: 100) [All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sun, Mar 13, 2022 12:01 PM UTC in reply to Jean-Louis Cazaux from 11:11 AM:

I just switched the order in which you and Hans are listed as authors. See if that makes a difference.


🕸Fergus Duniho wrote on Sat, Mar 12, 2022 11:39 PM UTC in reply to Jean-Louis Cazaux from 09:19 PM:

I don't know how I had found it worked. Today, it doesn't work

What doesn't work? The new URL for this page works, and the old URL goes to a 404 page with a link to the new URL, which is what it is supposed to do.

I'm asked the pwd for fairmirza.

What? I don't know what you're saying.


Shogi. Play the Japanese form of Chess, in which captured pieces can be dropped back as your own. (Recognized!)[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sat, Mar 12, 2022 10:45 PM UTC in reply to H. G. Muller from 09:13 PM:

In Chess illegal moves can never occur in a game; FIDE rules prescribe that such move should be taken back, and replaced by a legal one. But in Shogi, you just lose.

I checked Wikipedia, and it says the following:

In professional and serious (tournament) amateur games, a player who makes an illegal move loses immediately.[c] The loss stands even if play continued and the move was discovered later in game. However, if neither the opponent nor a third party points out the illegal move and the opponent later resigned, the resignation stands as the result.

This makes sense for over-the-board games, which is how Shogi is normally played in professional tournaments. But it does not make sense for Game Courier, which lets players preview their moves before confirming them. Just like it makes sense for Game Courier to ignore the rule in Chess that you have to move a piece if you touch it, it makes sense for Game Courier to ignore this rule.

The Japanese consider this an important thing: the 81-Dojo server does not refuse illegal Pawn drops, because that would be considered computer help.

I have never played on that server. Given the way this Game Courier preset works, each side is provided computer help, but it is equal for each player. If players want to play without computer help, as players in over-the-board tournaments do, they can play an unprogrammed preset. The programmed preset is programmed to display legal moves and forbid illegal moves, and to do this consistently, it should display only legal moves as legal and forbid all illegal moves.


🕸📝Fergus Duniho wrote on Sat, Mar 12, 2022 10:41 PM UTC:

Using fairy-test rather than default, I am working on getting it to handle the scenario where all pieces except the King are held in hand. The board has only 36 spaces pieces can be held in hand on, but there are 38 that may be held in hand. For testing purposes, the following series of moves brings the board to a position in which 36 pieces have been captured, and the others may soon be captured:

1. p 7g-7f 
1... P 3c-3d 
2. b 8h-2b; +b-dest 
2... S 3a-2b 
3. b*2f 
3... B*8h 
4. b 2f-5c; +b-dest 
4... B 8h-9i; +B-dest 
5. +b 5c-6c 
5... +B 9i-8i 
6. +b 6c-7c // - Check! -
6... N 8a-7c 
7. p 7f-7e 
7... +B 8i-7i 
8. p 7e-7d 
8... +B 7i-6i // - Check! -
9. k 5i-6i 
9... R 8b-5b 
10. p 7d-7c; +p-dest 
10... R 5b-5g; +R-dest 
11. +p 7c-8c 
11... +R 5g-4g 
12. +p 8c-9c 
12... +R 4g-3g 
13. r 2h-7h 
13... +R 3g-2g 
14. r 7h-7a; +r-dest 
14... +R 2g-2i 
15. +r 7a-9a 
15... +R 2i-1i 
16. +r 9a-6a // - Check! -
16... K 5a-4b 
17. +r 6a-4a // - Check! -
17... K 4b-3c 
18. +r 4a-2a 
18... +R 1i-1g 
19. +r 2a-1a 
19... +R 1g-6g // - Check! -
20. k 6i-7i 
20... +R 6g-8g 
21. +r 1a-2b // - Check! -
21... K 3c-4d 
22. +r 2b-1c 
22... +R 8g-9g 
23. +r 1c-2c 
23... +R 9g-9c 
24. +r 2c-3d // - Check! -
24... K 4d-5e 
25. +r 3d-4c 
25... +R 9c-4c 
26. k 7i-6h 
26... +R 4c-4i 
27. s 3i-4h 
27... K 5e-5f 
28. s 4h-4g // - Check! -

🕸📝Fergus Duniho wrote on Sat, Mar 12, 2022 06:04 PM UTC:

Besides using the fairychess include file, the new Shogi preset uses its own fairyshogi include file. Here I'll go over some of the new features in this include file.

Besides using -Range functions to indicate the range of movement of a piece, this include file uses -Drop functions to indicate which spaces a piece may be legally dropped on. The stalemated function uses a foreach-next loop to go through all empty spaces on the board, and it tests each space with the Drop function for the piece to be dropped. The simplest Drop function looks like this:

def Unrestricted-Drops #0 or true;

This just returns true, and it gets copied to every piece that can be dropped to any empty space like so:

foreach notation array r R b B g G s S:
    set funcname join const #notation "-Drop";
    copyfn Unrestricted-Drops #funcname;
next;

Lances and Knights have slightly more complicated Drop functions:

def White_Lance-Drop onboard where #0 0 1;
def Black_Lance-Drop onboard where #0 0 -1;
def White_Shogi_Knight-Drop onboard where #0 0 2;
def Black_Shogi_Knight-Drop onboard where #0 0 -2;

Instead of testing for specific ranks, these use onboard and where to test whether there is a space on the board one or two spaces ahead of the location the piece might be dropped on. This works better with boards of different sizes than naming specific ranks would.

The Pawns have the most complicated Drop functions:

def White_Shogi_Pawn-Drop allfalse lambda (== const space #0 White_Shogi_Pawn) merge ray #0 0 1 ray #0 0 -1 and onboard where #0 0 1;
def Black_Shogi_Pawn-Drop allfalse lambda (== const space #0 Black_Shogi_Pawn) merge ray #0 0 1 ray #0 0 -1 and onboard where #0 0 -1;

Beginning at the end, these first make the same test as the Lance's Drop functions do. Next, they test whether there is another Pawn on the same file. This is done by passing allfalse a lambda function that takes as its input an array of all the spaces in the file except the one the Pawn may potentially drop to. Whether this is an actual or a potential move, this space does not need to be tested. For an actual move, the Pawn will already be there before the test is performed, and for a potential move, a drop there would not be considered unless this space were already empty. To test the other spaces, the code uses the codename for the type of Pawn being checked. This is to prevent the function from being dependent on specific notation for a piece.

This function does not test whether a Pawn drop will checkmate the King. This last test is done within the stalemated subroutine after temporarily dropping the Pawn.

Because not all piece labels are entirely alphabetic, it now uses haslower and hasupper instead of islower and isupper to identify which side pieces are on.

Because functions are normally global, the stalemated and matedbypawn subroutines do not define functions within themselves. Instead of defining the friend function, they set the variable friend to a lambda function that gets called by fn #friend. Instead of defining the friends function, they set the friends variable to an array of all pieces on the same side. Unlike functions, these are kept local to the subroutine they were created in, allowing matedbypawn to use some of the same variable names as stalemated without messing up the assignments stalemated has made to variables with the same name.


🕸📝Fergus Duniho wrote on Sat, Mar 12, 2022 04:00 AM UTC:

Since the new preset appears to be more bug-free, I copied the default settings file to default-backup, and I copied the one I was working on to default. So, past, current and new Shogi games will all use the new Shogi preset that uses the fairychess include file. Details are on the page.


Game Courier Developer's Guide. Learn how to design and program Chess variants for Game Courier.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sat, Mar 12, 2022 03:37 AM UTC:

I have added the following built-in functions: chars, string, hasalnum, hasalpha, hasdigit, haslower, and hasupper. The chars and string functions can be used together to process a string with a lambda function filter, using chars to turn a string into an array of characters, and using string to converted the processed array back into a string. For example, promoted pieces in Shogi put a plus sign before the usual piece label, and the boldfaced part of this line demotes a piece in Shogi by removing any non-alphabetic characters:

set demoted flipcase realname string filter lambda (isalpha #1) chars alias space $dest;

The has functions are similar to isalnum, isalpha, isdigit, islower, and isupper, but instead of checking whether every character in a string is of a particular type, these check whether any character, even just one, is of a particular type. These come in handy when piece labels include non-alphabetic characters, as promoted pieces do in Shogi.


Shogi. Play the Japanese form of Chess, in which captured pieces can be dropped back as your own. (Recognized!)[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sat, Mar 12, 2022 12:27 AM UTC in reply to Fergus Duniho from Fri Mar 11 03:59 AM:

I fixed the bug I described last night and some others. When I checked the current preset, it had the same bug and another one. Instead of working on fixing the current preset, I will work on finishing the new preset, then replace the current one with it. It seems to be working correctly, but there are some features I want to add.


🕸📝Fergus Duniho wrote on Fri, Mar 11, 2022 03:59 AM UTC:

I'm working on a new Shogi preset that will use the fairychess file. I created new built-in functions for it I'll describe tomorrow. Here is a sequence of moves I am using for testing. The current position is one where a Pawn drop would cause checkmate if it were allowed. It currently stops the actual move, but it still displays the Pawn drop as a legal move. Since I am having trouble posting the form, here is the list of moves:

1. p 5g-5f 
1... P 3c-3d 
2. p 7g-7f 
2... B 2b-8h; +B-dest 
3. s 7i-8h 
3... B*5g 
4. g 6i-6h 
4... B 5g-2d; +B-dest 
5. p 2g-2f 
5... P 5c-5d 
6. p 5f-5e 
6... P 5d-5e 
7. g 6h-5g 
7... +B 2d-5g 
8. g 4i-5h 
8... +B 5g-3i 
9. b*5g 
9... +B 3i-2h 
10. n 8i-7g 
10... S*7h 
11. k 5i-6h 
11... S 7h-8i; +S-dest 
12. p 2f-2e 
12... P 2c-2d 
13. p 2e-2d 
13... P 6c-6d 
14. p 2d-2c; +p-dest 
14... P*2b 
15. +p 2c-2b 
15... R 8b-2b 
16. p 6g-6f 
16... +S 8i-8h 
17. p*5b // - Check! -
17... G 4a-5b 
18. n 7g-6e 
18... P 6d-6e 
19. p 6f-6e 
19... +S 8h-9i 
20. p*5f 
20... N*7e 
21. p 8g-8f 
21... R*8g 
22. p 5f-5e 
22... L*7g 
23. p 6e-6d 
23... +S 9i-8i 
24. p 5e-5d 
24... +S 8i-7i 
25. p 5d-5c; +p-dest 
25... G 5b-5c 
26. p 6d-6c; +p-dest 
26... G 5c-6c 
27. p*5i 
27... P*6g // - Check! -
28. g 5h-6g 
28... N 7e-6g; +N-dest // - Check! -
29. k 6h-6g 
29... R 8g-8h; +R-dest 
30. b 5g-4f 
30... R 2b-5b 
31. n*2c 
31... S*6e 
32. n 2c-1a; +n-dest

The Fairychess Include File Tutorial. How to use the fairychess include file to program games for Game Courier.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Wed, Mar 9, 2022 05:32 PM UTC:

Based on how I decided to handle the King in Eurasian Chess, I made some changes to the Chinese_General code. Here is the original Chinese_General function:

def Chinese_General checkride #0 #1 1 0
and == Chinese_General const alias cond empty #0 capture space #1
or checkleap #0 #1 0 1 and flag #1;

And here is the new one:

def Chinese_General 
== distance #0 #1 1
or == var movetype CHECK
and checkride #0 #1 1 0
and flag #1;

Both functions begin by checking whether the destination space is flagged, since the code flags every space within a palace. This keeps the piece from moving out of the palace, though it does allow a move from one palace to the other, which is what allows one general to threaten the other with check.

The main difference is how it handles this threat. It now uses the CHECK movetype instead of checking the identity of the other piece. The checked subroutine sets a local copy of movetype to CHECK. So, when movetype is CHECK, that means the function is being called from within the checked subroutine.

Another difference is that it only uses checkride, and it does not use checkleap. Instead of using checkleap, the final thing it checks is the distance of the move, and it checks that only if it has not been called from the checked subroutine.

I also changed the Chinese_General-Range function. It used to be this:

def Chinese_General-Range merge leaps #0 1 0 (var kpos var Kpos);

And now it is this:

def Chinese_General-Range leaps #0 1 0;

The reason for this is that -Range functions are called only by the stalemated subroutine for checking possible legal moves, and they are never called by the checked subroutine. Since a General can never legally move to the space occupied by the other General, there is no need to include the space of the opponent's General in the spaces a General may legally move. Its ability to move there is of concern only when checking for checking threats on a space a General might move to.

I tested multiple games of Chinese Chess without any problem occurring, and I made moves to specifically test that Generals were not allowed to oppose each other, that they couldn't move outside the Palace, and that they couldn't move two spaces within the palace. So, the code described above appears to be working.


Eurasian Chess. Synthesis of European and Asian forms of Chess.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Wed, Mar 9, 2022 04:42 PM UTC:

First, I tested the ten latest finished games of Eurasian Chess against the new preset, and they all displayed correctly. Then I made a backup of the newrules preset called newrules-backup, and I saved the fairychess preset under the name newrules. With that done, I viewed every finished and active game of Eurasian Chess using the now updated newrules settings file, and they all displayed correctly. Although the new preset works differently, it is notationally equivalent to the previous preset, which allowed me to completely replace the previous one with the new one.

The new preset should now prompt you about optional Pawn promotions, and it should use full piece names and give piece descriptions in error messages.


🕸💡📝Fergus Duniho wrote on Wed, Mar 9, 2022 03:47 AM UTC:

Since the previous preset for Eurasian Chess was ancient and lacking in some modern features, I wrote a new one using the fairychess include file. It's not official yet, but I'm providing the link for beta testing:

https://www.chessvariants.com/play/pbm/play.php?game=Eurasian+Chess&settings=fairychess


I-Chess. Large board variant that adds two more piece types: the wolf and the eagle.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sun, Mar 6, 2022 08:37 PM UTC in reply to Fergus Duniho from Sat Mar 5 03:45 AM:

The script already had the ability to add new authors and inventors to the database, but it couldn't handle the non-ASCII character in the inventor's name. I added some code to handle this and to make it work better.


Eurasian Chess. Synthesis of European and Asian forms of Chess.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sat, Mar 5, 2022 07:01 PM UTC in reply to Jean-Louis Cazaux from 04:56 PM:

Type it in the moves field. Instructions are provided in the How to Move Pieces section below the board.


🕸💡📝Fergus Duniho wrote on Sat, Mar 5, 2022 02:17 PM UTC in reply to Jean-Louis Cazaux from 07:28 AM:

Have you tried entering the promotion manually? Game Courier's features were added in stages, and older presets need to be rewritten to benefit from newer features. Promotion is not mandatory until the last rank, and the ability to prompt you about available promotion options is a newer feature. The code for Eurasian Chess is so old, it was ending every line with a semicolon instead of using a colon after lines that introduce blocks of code.


I-Chess. Large board variant that adds two more piece types: the wolf and the eagle.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Mar 5, 2022 03:45 AM UTC in reply to Aurelian Florea from 01:16 AM:

I changed the inventor, but I need to fix the script to allow the insertion of a new author or inventor into the Person table.


bugs[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Fri, Mar 4, 2022 05:40 PM UTC in reply to Ben Reiniger from Thu Mar 3 05:11 PM:

Okay, that's now fixed.


New Grand Apothecary Chess Error.[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Fri, Mar 4, 2022 01:48 PM UTC in reply to Aurelian Florea from 04:57 AM:

My guess would be that the automatic code generator was never designed to handle imitators.


Hopping Sliders[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Fri, Mar 4, 2022 01:35 PM UTC in reply to Jean-Louis Cazaux from 07:41 AM:

In English, skiing is a winter sport that involves sliding on snow with a long plank attached to each foot. The piece name probably refers to a ski jump, in which a skier goes down a ramp that sends him up into the air for a while before touching ground.


bugs[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Tue, Mar 1, 2022 05:35 PM UTC:

I was merging the functionality of canonicalURI, which takes an ItemID, into make_link_url, which takes a row, and I didn't do a thorough job of it. That is now fixed. Instead of duplicating functionality, canonicalURI will now use the ItemID to get a row with which it can call make_link_url. Having make_link_url call canonicalURI, as it was doing before, was wasteful, because it queried the database for a row it already had from a previous database query.


Game Courier. PHP script for playing Chess variants online.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Mon, Feb 28, 2022 02:51 AM UTC in reply to Bn Em from Sun Feb 27 11:43 PM:

This is now fixed.


🕸💡📝Fergus Duniho wrote on Sat, Feb 26, 2022 10:18 PM UTC in reply to Jean-Louis Cazaux from 07:32 PM:

I speak of the link with the name of the game which is written just below the diagram in the GC page.

Okay, I changed that to use the $rulesurl variable calculated in the header, which can be different than the value stored in $rules. So, it should work now.


🕸💡📝Fergus Duniho wrote on Sat, Feb 26, 2022 05:16 PM UTC in reply to Daniel Zacharias from 02:13 AM:

It seems like the Rules URL is broken for every game.

I tried multiple presets, including Shako and Expanded Chess, and the Rules URL worked fine every time. Instead of saying every game, which obviously you can't confirm without exhaustive work, tell me which particular presets you are seeing this problem in.


🕸💡📝Fergus Duniho wrote on Fri, Feb 25, 2022 11:40 PM UTC in reply to A. M. DeWitt from 04:24 PM:

The problem appears to be that you are not updating the value of k or K when the King moves. This gives inaccurate data to both the checked and stalemated subroutines, which results in inaccurate return values. So, it is an instance of garbage in, garbage out.


🕸💡📝Fergus Duniho wrote on Fri, Feb 25, 2022 11:17 PM UTC in reply to A. M. DeWitt from 04:24 PM:

In my tests of how intersection works, it will return an associative array when the first array is associative and the second is sequential. It will also treat a variable name as a constant name if there is no variable by that name and there is a constant by that name. So, what I thought were problems with the code might not be.

If the purpose of these intersections is to weed out empty spaces, the same thing can be accomplished more easily with diff noupper @ or diff nolower @.

I notice that your calls to stalemated include two arguments, but only one parameter is defined for the subroutine.


🕸💡📝Fergus Duniho wrote on Fri, Feb 25, 2022 07:47 PM UTC in reply to A. M. DeWitt from 04:24 PM:

Also, Daniel Zacharias found that if you enter King moves manually, it works fine.

The King's legal moves were highlighted for the first player, but they were not for the second player. After I moved the King manually, it declared check. Considering how your pieces move, this seems inaccurate. All I did was move each King forward to file 6.

He thinks the problem may be in the stalemated subroutine. When I coded this preset, I removed the checkmated subroutine used in my other presets to simplify the code a bit. so that would make sense.

After the two King moves I mentioned, the only highlighted legal moves are to 5j, the space vacated by the King. After each one of these moves, it declared "Checkmate! Black has won!" When I tried other moves I expected to be legal, I could make them, but then it would declare Checkmate again.

Looking at your Post-Game code, I see lines for enforcing the rule against checkmating with a Pawn drop. Code for this should be handled by the stalemated subroutine, because it has to apply to potential moves, not just to actual moves. However, I don't think that code is responsible for the inaccurate estimates of check and stalemate.

Since it declares checkmate only when checked and stalemated both return true, there may be bugs in both, or there may be a bug in a function called by both, such as the definition of a piece move, or there may be a bug in checked, which is also called by stalemated.

Since the checked subroutine shows problems by itself, and it is also called by the stalemated subroutine, it could well be the problem. It works differently than the checked subroutine I have in the fairychess include file. It sets enemies to an intersection between noupper and #bpieces or nolower and #wpieces. However, there are no variables called bpieces or wpieces. There are only constants by these names, and these two constants are sequential arrays. However, noupper and nolower return associative arrays. So, an intersection would not give you the desired result.

I see the same error in your stalemated subroutine. You are trying to find an intersection between an associative array and a variable that does not exist, and the constant with its name is a sequential array anyway.


🕸💡📝Fergus Duniho wrote on Fri, Feb 25, 2022 03:33 AM UTC in reply to A. M. DeWitt from 01:38 AM:

Posting a link would help.


Pychess[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Feb 23, 2022 07:33 PM UTC:

Instead of just listing games that Pychess supports in the description, how about going to our pages for these games (at least those we have), and adding the Pychess tag to them?


Gross Chess. A big variant with a small learning curve. (12x12, Cells: 144) [All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Tue, Feb 22, 2022 06:36 PM UTC in reply to Jean-Louis Cazaux from 07:37 AM:

I understand your points. If there was 1 BN on b1/b12 and 1 RN on k1/k12 only, all your specs would be respected: all pieces can move behind the lines, all pawns are protected, the Cannons keep their mobility.

This setup leaves an empty space on a1 without any piece able to move to it, which adds an element of arbitrariness to the setup that I don't like. It also reduces the usefulness of the Cannon and Vao by giving them fewer valuable pieces to potentially pick off, and it removes the chance of a Vao threatening to eventually capture a Rook or Marshall along a diagonal.

Just there is no symmetry for BN and RN, but there is no symmetry for Queen either and this is not illogical.

It increases the asymmetry in the game, which I prefer to avoid.

I have understood that the reason why you had 2 BNs,2 RNs is because you owned 2 physical Gothic chess sets. An option to play with a single BN/RN set would be worth to consider maybe.

If we did that, it might work better to put the Archbishop by the King and to put the Queen and Marshall in the corners. Since the Queen is more powerful, it could go on the Kingside corner. This would take care of some of the objections I had. However, I would otherwise prefer to keep the Queen by the King, which is the more traditional position for this piece, and having two Marshalls and Archbishops better accommodates this.


🕸💡📝Fergus Duniho wrote on Tue, Feb 22, 2022 02:08 AM UTC in reply to Kevin Pacey from Mon Feb 21 11:59 PM:

What might a concrete advantage of every piece (except Vaos) being able to move behind the pawn line in the setup be? [edit: closest thing to that I can think of, so far, is that a player sometimes just might be able to evade an attack/skewer by an enemy Vao or Cannon, in a way he couldn't otherwise]

Along the lines you imagined, it makes valuable pieces less prone to capture by pieces that can hop or leap over the Pawn lines. Since the Vao is the least valuable piece, it is the piece least in need of having an escape route. Notably, Chinese Chess, which introduced the Cannon, leaves more space around the pieces than Chess does.


🕸💡📝Fergus Duniho wrote on Mon, Feb 21, 2022 11:25 PM UTC in reply to Jean-Louis Cazaux from Sun Feb 20 12:13 PM:

I have noticed that several games of Gross Chess end up with some Marshalls and/or Archbishops unmoved. Maybe the presence of two Marshalls and two Archbishops is somewhat excessive.

Even if a piece doesn't move, it influences the moves of other pieces by protecting or threatening other spaces on the board. So, not moving these pieces isn't evidence that they are playing no role in the game. This may rather be a sign that because of differences in playing ability, one player is having an easy time defeating another player. In the endgames I can recall from Gross Chess, both players got down to very little material and had to employ whatever pieces they had left.

I wonder if a variant with a single Marshall on g1 and Archbishop on f1 with empty a1, b1, k1, l1 would be worth to be investigated.

One problem with this is that it destroys the symmetry of the setup. Another problem is that it leaves the King, Queen, Bishops and Cannons without any empty spaces to move to behind the Pawn line, and a game with this setup may as well be played on a 10x10 board, since it doesn't make effective use of the greater space provided on a 12x12 board.


🕸💡📝Fergus Duniho wrote on Mon, Feb 21, 2022 11:12 PM UTC in reply to Kevin Pacey from 09:45 PM:

An experiment might be to switch all the Kts with the Champions AND switch all the Wizards with the Archbishops, in the setup - play testing could proceed from there, if anyone thinks this may be a good idea to try.

One of the deliberate features of the setup is that every piece except the Vaos has an empty space it can move to behind the Pawn line. If you made these changes to the setup, the Knights, Champions, and Archbishops would no longer have any empty spaces they could move to behind the Pawn line.


About Game Courier. Web-based system for playing many different variants by email or in real-time.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Mon, Feb 21, 2022 11:02 PM UTC in reply to Armin Liebhart from 08:20 PM:

Okay, I fixed the error, and the King can capture the piece on b2 now.


🕸💡📝Fergus Duniho wrote on Mon, Feb 21, 2022 05:51 PM UTC in reply to Armin Liebhart from 11:12 AM:

Can you give me a link or a series of moves in which this error comes up?


MPtencubed-chess[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sun, Feb 20, 2022 03:04 AM UTC in reply to Greg Strong from 02:42 AM:

I'll delete it, then. This wasn't actually updated. I was adding IndexEntry rows for Items that didn't have any, and this was one of them.


Rules of Chess. Missing description[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Feb 19, 2022 08:53 PM UTC in reply to Bn Em from 05:02 PM:

The note does also say that one “Cherry X.Z.”, who even had an email address linked in Wayback's copy, ‘modified’ it, which may mean it has had some human input to make it sensible Chinese.

I'll keep it on that basis. Hopefully, we'll eventually get some input from someone who can read Chinese.


🕸Fergus Duniho wrote on Sat, Feb 19, 2022 05:41 PM UTC:

Since my conversion to Unicode didn't match the previous version at all, I restored the original version from a copy on archive.org. While I don't know much Chinese, I do now recognize some characters in appropriate places. However, since this translation was done by Babelfish in 1996, it may not be such a good translation.


菲舍爾任意制象棋(Fischer Random Chess). 费舍尔的随机国际象棋变体 (Chinese Language)[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Feb 19, 2022 02:34 PM UTC in reply to Bn Em from 11:55 AM:

The note at the end looks a little odd (It literally reads, as far as my Chinese gets me: “This is our English page's translation Fischer Random Chess”;

I could write it entirely in English, since it will be of interest mainly to people who can read English.

incidentally what software did you use to convert it to CP1252?

I used PHP's mb_convert_encoding() function. I then viewed the page source and copied from that.


波斯象棋(Shatranj). 廣泛出現在波斯的遊戲,國際象棋的前身 (Chinese Language)[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Feb 19, 2022 02:30 PM UTC in reply to Bn Em from 12:28 PM:

The link in the introduction is broken; it should probably point to the author's translation of the Chaturanga page 

Okay, done.

note that the latter, as well as the Courier Chess page still need converting

Done.

(the Shogi page oþoh seems intact — it was last edited in 2018 though so perhaps it escaped the corruption

No, I fixed it earlier using a cached copy from archive.org.

Also is there an old backup of the Chinese page on FIDE?

I could check one of the CD-ROM backups David sent me, but I doubt it will be any different. It wasn't affected by the database changes that affected the other pages. I see at the bottom of that page a note saying that it was translated by Altavista's Babelfish. We should probably get rid of it, since it didn't have a human translator, and modern translation tools are probably better than Babelfish was in 1996.

I don't see anything wrong with having pages in multiple languages here

There's nothing wrong with it, but we need translators to make them and foreign language editors to edit them.


信使象棋(Courier chess). Missing description[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Feb 19, 2022 02:16 PM UTC:

This page got messed up when it got converted to UTF-8 one too many times, but converting it back to Windows-1252 fixed that. I then copied it here, so that it will be stored properly as UTF-8. While I can't read much Chinese, the piece names I'm familiar with are all correct. Links are now relative, and everything is in the introduction section to avoid English headings for each section.


恰圖蘭卡(Chaturanga). 第一種已知的象棋類遊戲 (Chinese Language)[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Feb 19, 2022 02:07 PM UTC:

This was gobbledegook before, thanks to being converted to UTF-8 one too many times. I converted it back to Windows-1252, which restored the Chinese. I don't know much Chinese, but I can tell that the piece names are correct.


波斯象棋(Shatranj). 廣泛出現在波斯的遊戲,國際象棋的前身 (Chinese Language)[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Feb 19, 2022 03:34 AM UTC:

I converted this back from a bad UTF-8 conversion to Windows-1252, then cut and pasted it here, so that it will show up correctly as UTF-8. While I don't read a lot of Chinese, I could tell it got all the characters right for the piece names. I put everything in the introduction section to avoid English headings, and I made links relative.


菲舍爾任意制象棋(Fischer Random Chess). 费舍尔的随机国际象棋变体 (Chinese Language)[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Feb 19, 2022 03:19 AM UTC:

It looks like the cause of the corruption was converting to UTF-8. When UTF-8 was converted back to Windows-1252, it turned Chinese again. Although I can read very little Chinese, this looks correct. 象棋 gets used in the Chinese word for western Chess, and in the table describing castling, 王 gets used for the King, and 車 gets used for the Rook. So, I converted the text from a backup into Windows-1252, then cut and pasted it here, so that it is stored correctly as UTF-8. I also made local links relative, fixed some links that were incorrect, put everything in the introduction section to avoid English headings, and added a last note at the end in Chinese, thanks to an online translation tool, about this being a translation of our English Fischer Random Chess page. Finally, I deleted my previous revisions.


🕸Fergus Duniho wrote on Sat, Feb 19, 2022 12:33 AM UTC in reply to Bn Em from Fri Feb 18 01:58 PM:

I then converted the introduction from every encoding to Windows-1252, and I got this as a conversion from UTF-8:

Bobby Fischer,前世界國際象棋冠軍,提出一種國際象棋 的變體,其中棋子的初始配置是隨機選擇的。Fischer從而加入了如Capablanca等,提出國際象棋變體的前世界冠軍之列,然而其他的變體都沒有被成功推行過。 菲舍爾任意制象棋與更古老的Shuffle Chess、Prechess(或其他有關的變體)有些類似,但是有自己獨特的風格。這個遊戲廣泛的介紹和歷史 由Eric van Reem所寫。

This looks like a clean conversion to Chinese, and I even see 象棋 repeated a few times. Does this look accurate to you, Bn?


🕸Fergus Duniho wrote on Sat, Feb 19, 2022 12:26 AM UTC in reply to Bn Em from Fri Feb 18 01:58 PM:

I converted the introduction from every encoding available for mb_convert_encoding() to UTF-8. Some included Chinese characters, but many of these mixed in Korean or Japanese characters. The conversion most densely packed with Chinese characters was BIG-5, which I know is a Chinese encoding. But I can't tell if it says anything intelligible. Here is what I got:

Bobby Fischer簿翹?疇?兜?瓣繡??癟?〣?疇??嘔怵﹦€疑阬授 ̄汕?€嘔乒€??癡罈?簿翹?疆??疇?¯疑刈詹?珍岑阬員a href="http://www.chessvariants.org/d.chess/chess.html">疇??嘔怵﹦€疑阬授 ̄汕?€較/a> 癟禳??癡簧?矇竄??簿翹?疇?汕亂刈蜃倥汕?€嘔氐倦?癟禳??疇??疇禮?嘔抽€汕?癟翻簧疆?簪矇禳穡疆穢顫矇?繡疆??? ̄巫﹦€?瓊?砂€?Fischer疇職鱉癡?玳?疇??疇?汕永刈算€?疇礎??Capablanca癟簫?冕純敷?疆??疇?¯疑汀??嘔怵﹦€疑阬授 ̄汕?€嘔阬敉?矇竄??癟禳??疇?兜?瓣繡??癟?〣?疇???癡罈?瓣繒?嘔瓦???簿翹?癟??繞癡?玳?疇?汕亂刈領€?癟禳??癡簧?矇竄??矇?翻疆簡??疆??冕阬Ⅹ姻竹??疇?顫疆鬚穡癡癒?矇?鬚瓊?砂€? 癡?簡癡??癟?職瓣罈罈疆???疇?繞癡簣癒疆瞿?嘔佯?? ̄色€甄棺氐?瞻癡?玲?癟禳??Shuffle Chess瓊?玲?Prechess(疆???疇?汕亂刈領€?疆??冕抽€??癟禳??癡簧?矇竄??)疆??冕刈算€疑怏ˍ壅刈撢撳純敷?瓣翻??疆?簪疆??冕兩€¯秉氐溘掙岑?穡癟?兜嘔巫﹦€?矇瞽穡疆?翹瓊?砂€?矇?砂?〡乒?砂€嘔怏??疆?簡疇罈瞿疆糧?疑巫﹦€?瓣罈?嘔岑朝嘔乒€??疆簫繚疇?簡 癟??簣Eric van Reem疆?售?珍氐純姻??砂€?


🕸Fergus Duniho wrote on Fri, Feb 18, 2022 06:28 PM UTC in reply to Fergus Duniho from 03:33 AM:

I made the script to display from a backup database, but it didn't help. To prevent it from trying to use UTF-8, I even ran it on a different domain to avoid the .htaccess file on this site. But that didn't help. It appears that the corruption is in the earliest backup of the database, which is from 2017.


🕸Fergus Duniho wrote on Fri, Feb 18, 2022 03:33 AM UTC in reply to Bn Em from Thu Feb 17 11:48 PM:

Older pages were generally written in Latin-1, and when I tried to enforce a site-wide use of UTF-8, some things didn't convert correctly. I have some backups of the database from when the columns in MemberSubmissions were still using the latin1_swedish_ci collation instead of the utf8_general_ci collation. I'll try to put together a script that will read from a backup database and not enforce UTF-8 to see if it will display properly. But that's for tomorrow, as it is time to shut down my computer for the night.


🕸Fergus Duniho wrote on Thu, Feb 17, 2022 06:51 PM UTC:

This page was displaying as gobbledegook, because it was not written in UTF-8. Using Notepad++, I converted it into Chinese characters. Since I cannot read Chinese, though, I cannot tell if I fixed anything. Although many characters are now Chinese, there are some suspicious characters, such as one that looks like a gamepad, the Japanese letter Ru, and the female/Venus symbol. So, I think I'll try a different approach on the backup site.


Apothecary Chess-Classic. Large Board variant obtained trough tinkering with known games.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Thu, Feb 17, 2022 06:04 PM UTC in reply to Aurelian Florea from 03:39 AM:

It looks like it is working correctly now. I had to include a line in the invitation form with the settings value. Once I did that, the invitation I sent to myself was for the correct settings file.


🕸Fergus Duniho wrote on Thu, Feb 17, 2022 03:08 AM UTC in reply to Aurelian Florea from 02:43 AM:

Put the name of the settings file you want to use in the Redirect field for the deprecated preset. Then, when someone tries to invite someone to play with the deprecated preset, the new one will be used instead.


Primary Links[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Wed, Feb 16, 2022 09:46 PM UTC:

I have finished removing multiple primary links for the same ItemID from IndexEntry. In some cases, I made only one link primary, and in some cases, I deleted links.

I also updated deletelink.php to delete all the links for an ItemID when an ItemID is given instead of an ItemNumber. So that this is not misused, the form for it shows up only if an ItemID is not in the database.


Apothecary Chess-Classic. Large Board variant obtained trough tinkering with known games.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Feb 16, 2022 09:40 PM UTC in reply to Daniel Zacharias from 09:06 PM:

Perhaps he was just using the list of all games, where it's not clear at all which version is the right one.

That makes sense. This is why you should forward invitations from a deprecated preset to the official preset.


🕸Fergus Duniho wrote on Wed, Feb 16, 2022 05:38 PM UTC in reply to Aurelian Florea from 04:46 PM:

I don't use a Mac, though I don't think the computer one is using would make a difference. The preset for this page is

https://www.chessvariants.com/play/pbm/play.php?game=Apothecary+Chess-Modern&settings=ApothecaryChess-Modern

The preset for the open invitation Richard Milner made and the games he is playing is this:

https://www.chessvariants.com/play/pbm/play.php?game=Apothecary+Chess-Modern&settings=ApothecaryChess-Modern

These are the same. So, I don't know what the problem is.


Silver Anniversary[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Wed, Feb 16, 2022 03:02 PM UTC in reply to KelvinFox from 12:16 PM:

It looks like I had incorrect information on the page I consulted last night. So, the Silver Anniversary was two years ago in 2020.


🕸Fergus Duniho wrote on Wed, Feb 16, 2022 03:24 AM UTC:

Since the Chess Variant Pages was founded in 1997, 2022 marks the Silver Anniversary of the site. Any thoughts on what we should do to mark this occasion?


Primary Links[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Tue, Feb 15, 2022 11:01 PM UTC:

I have now modified insertlink.php to enforce the same rules.


🕸Fergus Duniho wrote on Tue, Feb 15, 2022 07:35 PM UTC:

For a while, I thought Primary Links were the same thing as Items marked IsPrimary, and changes I made to queryinc.php reflected this. I now realize that they are completely different things with similar names. A primary link is the index entry that should be used for an Item when primarylinksonly is selected. I have now modified queryinc.php to work this way.

Since the IndexEntry table has multiple rows with the same ItemID having PrimaryLink set to 1, I have begun to work on selecting a single Primary Link for each Item. To help with that, I am using this script, which lists all primary links for items with multiple primary links.

https://www.chessvariants.com/index/finddupprime.php

If you're an editor, and you have some time to help, you can go to a page on this list, then go to its Links link at the bottom and choose which link should be primary.

To avoid having multiple primary links to the same Item in the future, I have modified modifylink.php to enforce some rules. These are that there must be one primary link, and there may not be more than one primary link. So, if you select one link to be primary, all other links to the same item will be made non-primary. If you select a link to be non-primary, but there is no other primary link to the same item, it will be made primary.


Continental Chess. Continental Chess is Chess Variations with many types of pieces such as stepper, leaper, hopper and rider. (8x8, Cells: 64) [All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Mon, Feb 14, 2022 05:21 PM UTC in reply to Bn Em from 01:57 AM:

I think (Siwakorn may feel free, of course, to correct me) that it means that once no more unpromoted Soldiers remain, if 64 moves pass without any captures the game is declared a draw, but a capture, rather than resetting the count, adds 16 instead.

He says you're right, but I still don't understand it. What is 16 added to? If 16 is added to the move count, a capture would bring on the end of the game even quicker, which is counterintuitive to the intent of the usual 50 moves rule. Or is 16 added to the number of moves that must pass before a draw may be declared?


🕸Fergus Duniho wrote on Sun, Feb 13, 2022 08:10 PM UTC in reply to Siwakorn Songrag from 10:22 AM:

I updated the grammar and some spelling on most of the page, rewording some things to make them clearer.

Since I don't understand the 64+16 rule, I left the text for it alone.

It looks like you're trying to describe moves using conventions from Chinese Chess. The moves would be more clearly described to a western audience if you used algebraic notation.

If you mean for Guard Soldiers to look different than Soldiers, I would recommend using a different piece set for your piece images. The one you're using has only Chinese Chess pieces in it.


Manticore. (Updated!) Moves one space orthogonally, then slides outward as a Bishop.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sun, Feb 13, 2022 07:25 PM UTC in reply to KelvinFox from 04:09 PM:

the comment search is broken

Yes, and it won't be fixed anytime soon. It requires MariaDB 10, but because of some problems this site was having with MariaDB 10, I downgraded to MariaDB 5 and manually edited the database to remove features exclusive to MariaDB 10. So, even though we are running MariaDB 10 on the backup site, it lacks support for comment search, because its database is just a backup of the one here. For the present, I don't dare update the Linux software on this site, because if the server shuts down, which it sometimes does to complete some updates, I cannot reboot it. Also, the backup server is using Rocky Linux, while the main server is stuck with CentOS 7 for the time being. Since I paid for this server for a year, I plan to keep it until near the time to renew. And if the hosting service doesn't shape up soon, I may jump ship to the backup site and find another host for a new backup site.


Baseball Chess. Missing description (9x9, Cells: 81) [All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Tue, Feb 8, 2022 05:16 PM UTC in reply to Baseball Chess Baseball Chess Set from 11:43 AM:

great article , this is definitely one of the best for young chess players to read and learn strategy.

This page describes the rules of a Chess variant. It is not about Chess strategy.

If you intend on writing more similar content on this site be sure to check out our page with more inspiration for future posts

The author of this page hasn't been around for a while. The page you linked to is for a Baseball-themed Chess set. Although this page has no diagram, the game is apparently played on a 9x9 board. So, it could not be played with a regular Chess set, though perhaps the pieces from a Baseball-themed Chess set could be used with it.


Home page of The Chess Variant Pages. Homepage of The Chess Variant Pages.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Mon, Feb 7, 2022 06:21 PM UTC in reply to H. G. Muller from 11:31 AM:

Isn't it possible to do some syntax checking on the GAME code (e.g. when it gets submitted) to prevent such erratic behavior?

I have added some error messages to make it easier to spot this kind of error in the future. See comment 43913 on the Game Courier History page.


Game Courier History. History of the Chess Variants Game Courier PBM system.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Mon, Feb 7, 2022 06:18 PM UTC:

I made a correction to the handling of case statements. If multiple case labels were in the same case statement, it would previously check only if the first one was already assigned. It will now check whether every single case label has been assigned. If a case label has already been assigned in a switch, it will give an error message.

If a case label includes whitespace, it will now report an error message. This is in case a colon is left off a case statement, and a new line character gets included in the case label.

If a switch statement is passed a value that does not match any of its cases, and it has no default case, it will report an error message that neither the expected case nor a default case exist.

The print statement can now be used to print the value of an array, which will make it more useful for debugging.


Home page of The Chess Variant Pages. Homepage of The Chess Variant Pages.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Mon, Feb 7, 2022 02:15 PM UTC in reply to Aurelian Florea from 01:38 PM:

Are these the correct instructions at the end of the presets?

setsystem pieces #mypieces; setsystem flipped #mypieces;

Since the first one worked, the second should too. I think using var instead of the # prefix would be a bit quicker for an array, but it is probably negligible.


History of the Chess Variant pages. Missing description[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sun, Feb 6, 2022 10:49 PM UTC in reply to Jean-Louis Cazaux from 10:35 PM:

There is the more recent page Who is behind the Chess Variant Pages?.


Home page of The Chess Variant Pages. Homepage of The Chess Variant Pages.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 10:23 PM UTC in reply to H. G. Muller from 10:01 PM:

It sounds like something in your code is producing an unwanted goto to the beginning of the program when the E piece is moved.

This bit of code in the pregame section might be the problem:

        case I E 
          set choice intersection #choice (O #piece);
          break;

Notice that there is no colon after the E in the case statement.


🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 09:41 PM UTC in reply to H. G. Muller from 09:12 PM:

In a short game in which I was moving Pawns out of the way to move the E piece, I tried each E piece, and it gave the error "g4 is empty" each time. Since g4 was in fact empty, I did a quicker game in which I just moved Pawns near the E and e piece before moving the E piece. This gave the error:

ILLEGAL: P i4-i5 on turn 1:

There was no P on i4. The piece on i4 is a E.

Go back with your browser's BACK button, reload the page, and try again.

For diagnostic purposes, here is the full movelist:

1. P i4-i5 
1... p i9-i8 
2. E j3-i4

I then took back the last move, cleared a space for the other E piece to move, moved an e piece, then moved the other E piece. This time, I got the error "i4 is empty".

So, it's looking like there is something wrong with the E piece.


🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 08:53 PM UTC in reply to Daniel Zacharias from 07:35 PM:

When I entered that sequence of moves all at once, I got the same error. Then I entered each move separately and still got the same error. So, I took back the last move and found another legal move, which worked out. A little later, I tested other moves by the E and e pieces, and when I moved the other E piece, though not an e piece, I got the same error. Taking back that move and trying E again later, I got the error "g4 is empty". There seems to be something wrong with the E piece, but I am too unfamiliar with the workings of this generated code to debug it.


🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 07:14 PM UTC in reply to Daniel Zacharias from 06:53 PM:

What was that problem, specifically? What doesn't work?


🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 06:31 PM UTC in reply to H. G. Muller from 06:12 PM:

@Fergus: please also have a look at the problem reported here.

Do you mean the problem reported by Daniel Zacharias, which I just gave the solution to? Or were you describing an independent problem? If so, I would need a link.


A Wizard for GAME-Code Generation. A tutorial on using the Play-Test Applet for automating Game Courier presets.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sun, Feb 6, 2022 06:27 PM UTC in reply to Daniel Zacharias from Fri Jan 14 11:58 PM:

I'm having some problems with this game. First, I can't seem to get the piece images to show correctly. Right now it looks ok at first, but when viewing a game from black's perspective it's all wrong again.

Because you're using the Alfaerie:Many set, which includes some flipped pieces, you need to include a value for $flipped. Since you are not using any flipped pieces in your game, you should set it to the same value as you are setting $pieces to.


Home page of The Chess Variant Pages. Homepage of The Chess Variant Pages.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 05:30 PM UTC in reply to Aurelian Florea from 03:12 PM:

These 3 presets work fine but the shuffling algorithm produces different initial setups for white and black.

I'm testing with this clone:

https://www.chessvariants.com/play/pbm/play.php?game=Grand+Apothecary+Chess+1&settings=Applet-Test

I see that Black and White have different opening positions. Is that what you mean?

If you want them to be the same, then you need to create a random opening position for only one side and copy it to the other side. This might be an issue for H. G. to deal with, as the buggy code might be his.


🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 05:10 PM UTC in reply to Aurelian Florea from 03:12 PM:

It will be easier to look into this if you first fix the display of pieces on Black's turn. You need to set $flipped to the same value as $pieces, because Alfaerie:Many includes some flipped pieces, but your game does not.


🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 02:39 PM UTC in reply to Aurelian Florea from 08:35 AM:

I introduced a general problem last night regarding the parsing of $_POST values, and I have now fixed it.


What is a Chess variant?. An essay on what distinguishes a Chess variant from other games.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sun, Feb 6, 2022 12:25 AM UTC in reply to Jean-Louis Cazaux from Thu Dec 9 2021 05:36 PM:

Is "heterdox" an English word valid in this context or just a typo here?

It's a typo. I've now made corrections.


History of the Chess Variant pages. Missing description[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sun, Feb 6, 2022 12:21 AM UTC in reply to Jean-Louis Cazaux from Thu Dec 9 2021 10:31 PM:

I have the feeling that this page is not the latest version.

You may have this page confused with The History of Chess Variants, which is an independent page, unrelated to this one.


Game Courier. PHP script for playing Chess variants online.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sun, Feb 6, 2022 12:16 AM UTC in reply to A. M. DeWitt from Sat Dec 11 2021 09:40 PM:

The problem occurs when I make a triple move with a piece with Lion Dog powers where all three parts move the piece to different squares and the third square is empty. The preset will exit with an error message stating that the promotion is illegal when it should be legal.

After a triple move, you would need a fourth move for the promotion, but your allow statement does not include any allowances for fourth moves.


Ads in French[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Sat, Feb 5, 2022 11:54 PM UTC in reply to Jean-Louis Cazaux from Tue Jan 25 12:06 PM:

Being based in France, I see ads from e-bay in French. But many are not related to chess. The reason is that "chess" is "échecs" in French, always at plural, with an "s" at the end. The word in singular, "échec" means "failure" in English. (It also means "check" which may complicate).

So, there several ads for books dealing with the failure of something, failure of education, failure of economy, whatever, but no relation at all with chess.

The search term has in fact been "echecs", but since you pointed it out, I did see some books in the preview for the books ad that used the world echec, such as L'ECHEC DE L'ISLAM. To fix this, I changed the search terms to "echecs -echec", and only books with "echecs" in the title showed up.


Home page of The Chess Variant Pages. Homepage of The Chess Variant Pages.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sat, Feb 5, 2022 11:24 PM UTC in reply to Daniel Zacharias from 10:09 PM:

Isn't that because $flipped needs to be set for black?

Yes, adding this line fixed it:

setsystem flipped var mypieces;

The reason this was necessary is because this preset used the Alfaerie:Many set, which does include some flipped pieces even though most of the set is not flipped.


🕸📝Fergus Duniho wrote on Sat, Feb 5, 2022 08:14 PM UTC in reply to Fergus Duniho from 07:57 PM:

When I tested the value of $pieces at the very end of the code, it matched the value for #mypieces on Black's turn. So, the problem might not be in the GAME Code but in the PHP that operates after the GAME Code is run.


🕸📝Fergus Duniho wrote on Sat, Feb 5, 2022 07:57 PM UTC in reply to Aurelian Florea from Thu Dec 2 2021 07:10 AM:

In the following preset:

https://www.chessvariants.com/play/pbm/play.php?game=Grand+Apothecary+Chess+1&settings=Applet

the pictures are not shown properly.when playing in online mode. In the local play mode things are fine.

In my testing, images show up fine on White's turn but not on Black's. On Black's turn, the pieces for I, U, and Y do not show up. In the HTML, no piece file is provided for these pieces. It also gets some pieces wrong. It shows a Zebra for the Cannon, a Camel for the Jester, a Gold General for the Kangaroo, an Amazon for the Bird, and a Marshall for the Tank. Another thing happening on Black's turn is that it displays the entire Alfaerie:Many piece set at the bottom of the page. But when it is White's turn, it does not. So, I'm thinking that $pieces is being set to #mypieces only on White's turn and not on Black's.


100 comments displayed

LatestLater Reverse Order EarlierEarliest

Permalink to the exact comments currently displayed.