Classes of chess pieces for chess variants

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

RichV
Posts: 53
Joined: Sun Apr 14, 2019 5:33 pm
Full name: Rich VanDeventer

Classes of chess pieces for chess variants

Post by RichV »

I need help/advise/suggestions establishing classes of chess pieces for chess variants that use action cards to incorporate special moves or circumstances for a chess variant turn. My chess variant Thrones Chess V (aka Castle Challenge Chess) uses 70+ Action cards. it also uses a chess board (called CirSquare 96) that merges a circular and square chess board. The board is so dynamic that it dramatically increases (2 to 3 times) the power of the classic chess pieces and new chess pieces according to the Zillions of Games engine. Currently, many of the action cards refer to specific pieces to give them special moves for one turn. I want the players to be able to include many new chess pieces that are not included with the original game. Since there are probably close to 100 non-classic chess pieces for other chess variants, I cannot create cards for every kind of piece.

So I need to create cards that refer to a class or range of classes and thus the pieces in that class(es) without having to list the names of the pieces on the cards. Then I can create a printable file for reference that lists all the classes, the piece values range for each class, and the pieces for each class with their values (see the table below). Each chess variant that uses action cards will need to have its own Class list because the piece values will be unique for each chess variant, based on the board and any variation in the piece moves.

The Zillions of Games engine uses values in the 1,000s for each piece. To have manageable numbers (small ones) I devised a system based on setting the Pawn value to 1 by dividing the Zillions of Games Pawn value by its own value. Then I divided the values of all the other pieces in that game with a standard setup of pieces by the same Pawn values and rounded the resulting values to the nearest whole number (in most cases). That gave me piece values between 1 and 33 for the pieces I currently use in the game. I decided to have classes 0 through 12. The zero class would cover pieces that are just blockers or other minimal pieces that might be worth less than a Pawn. I grouped the piece values in a way that gives me a nice spread of pieces over the classes.

I have many more new chess pieces to put in the list after I determine their values in Zillions of Games. I would like to use another chess engine, but I am having trouble finding another chess engine that will handle circular chess boards.

My table of classes is shown below (includes some chess pieces that I and others invented):

Classes ---Values ---Pieces and Piece Values

Class 0 ___0-0.9__

Class 1 ___1-2____Classic Pawns 1; Swordsmen 1.5; Spearmen 2;

Class 2 ___3-4____

Class 3 ___5-6____Longbowman 6;

Class 4 ___7-8____ Classic Bishop 8; Onager 8; Crossbowman 8; Classic Knight 7;

Class 5 ___9-10___ Extended Knight 9;

Class 6 ___11-12__ Halberdier 11; Wolf 11; Amur Leopard 11; Trebuchet 12; Unicorn 12;

Class 7 ___13-15__ Elephant 14; Merlin Hawk 13;

Class 8___16-18__Classic Rook 16; Archbishop 17;

Class 9___19-23__ Falcon Cannon 19; Fortress 20; Spider Tower 20;

Class 10___24-29__ Classic Queen 24; Chancellor 25;

Class 11___30-35 __ Dragon 33

Class 12___36+

Action cards are being created for other chess variants, such as Musketeer Chess, that use a variety of new chess pieces. Standard chess engines will be used to determine their values to make their unique Class charts and will be made available online for printing.

I appreciate any help or comments that others give.

Thanks!
User avatar
hgm
Posts: 27788
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Classes of chess pieces for chess variants

Post by hgm »

It is hard to say anything sensible about this without knowing what exactly these 'action cards' do, and how they are used in the game. If the capabilities of a piece can (temporarily) change during the game, that will without doubt affect the value compared to the one it would have when it had a fixed move.

I wouldn't trust Zillions too much. Its evaluation algorithm for piece values is proprietry, but it is unlikely to go much beyond the calculation of some weigthed average of mobility. Which is a very unreliable method; it would for instance put Archbishop in Capablanca Chess close to Rook, while in reality the value is very close to Queen.

Of course your circsquare board could have a profound effect on piece values. It should not be too difficult to make an engine that would be able to play on a cirqsquare board. (Which, on conventional GUIs, would probably best be represented as a 12x12 recatangular grid, where the 4 corner 4x4 areas are replaced by the 4 by one square (the 'triangle') and 3 L-shaped zones bending around it, represented by coordinates on the diagonal.) This could be done by creating a large table, which for every board cell lists all trajectories leaving that cell (in the various directions), each trajectry being again a list of squares visited by the trajectory. The move generator would then select the trajectories in the directions a given piece can move, and follow those (each step producing a move) up to where they run into an obstacle, or exceed the range of that piece in that direction. (Leaper moves would have range = 1, and only try the first square along each trajectory). Because some trajectories fork, they would have to occur as two unbranched trajectories, and to prevent duplicate generation of the moves to the parts that still coincide, these target squares of one should be somehow marked so that they don't produce moves, but are just checked for obstacles. (This is how Jocly does it.) Or, perhaps more efficiently, branch points should be marked with an alternative way to proceed along the trajectory, which would then be followed after the main trajectory runs out.

This is only a minor modification of normal move generation, taking the target squares from a table rather than calculating them by adding a fixed step to the previous square to get the next square.
RichV
Posts: 53
Joined: Sun Apr 14, 2019 5:33 pm
Full name: Rich VanDeventer

Re: Classes of chess pieces for chess variants

Post by RichV »

Thanks HGM. My Action cards give a piece an enhanced move (one that it normally cannot do) for one turn only. Here are some examples:
  • With a Class 4 Piece that can leap, make 2 or 3 normal moves from its current position anywhere on the board to an open space. Cannot capture, but may place the King in check.
  • Use a Clalss 4 non-leaper to jump over one Piece on the board at any point during one normal move. It cannot capture but may place the King in check.
  • Exchange any Class 3, 4, or 5 Piece in your Castle for any captured Class 3, 4, or 5 Piece.
  • Make a Horse or Secret Passage move without having to use a Weapon. Cannot move the King. The Piece cannot capture but may place the King in check.
  • Swap the positions of any two of your Pieces (except a King) inside your Castle. A Pawn must be swapped with another Piece on Pawn row.
  • Use a Weapon to capture any Piece except the Queen. At the start of the Turn, your Piece must have been able to capture the Piece without using the Weapon.
The first 3 Actions involve piece classes (which allows new pieces to be introduced into the game without having to rewrite my Action cards or make new ones). The last 3 Actions do not involve classes because they apply to all pieces, except maybe for the King. The cards that involve weapons are used with Castle Attack Chess (now Thrones Chess IV) and Castle Challenge Chess (now Thrones Chess V). A Horse and Secret Passage are single use 'board weapons'. The use of weapons is not programmed in the electronic versions. I don't know how to accomplish that in Zillions of Games or even if it is possible for Zillions of Games.

Each chess variant will have its own class list (0 to 12). The value ranges for each class should probably stay consistent, but the pieces will often be in different classes based on the piece values assigned by a chess engine for a particular game. A Queen might be in Class 9 for one game and be in Class 7 for another game based on the chess engine's assessment of the Queen's value in each game. Each variant would have its own printable class list showing the classes for each possible piece that can be used in the game. I have many more of the Musketeer Chess pieces to program in Zillions of Games so that I can add them to its Class list. Some of their pieces have moves that I don't know how to program in Zillions.

It took me about a year and half of part-time work to create Castle Siege Chess (Thrones Chess II) in Zillions of Games by reverse engineering the Zillions Script for classic chess. After writing the move descriptions, I then had to write the code for all the possible moves by using 'links'--chaining together the possible moves in all the different areas of the board where the pieces could legally move. Zillions limits each game to a maximum of 100 named link groups. I maxed it out and had difficulty later with adding new pieces. I had to figure out how to combine some of the existing link groups to make room for new ones.

I am afraid that I may be too old (75) and don't have enough time to learn how to work with other chess engines. Are there any other chess engines that use the linking method to write moves for chess pieces? Is using a table similar to linking?

My main concern here is to get opinions about the use of classes--number of classes and span of piece values for each class. And does my method of reducing the value of the Pawns down to 1 and dividing all the other piece values by the original Pawn value sound proper for allowing piece values and class piece value ranges to have numbers as small as possible? Is there a better to construct classes of chess pieces?
User avatar
Ovyron
Posts: 4556
Joined: Tue Jul 03, 2007 4:30 am

Re: Classes of chess pieces for chess variants

Post by Ovyron »

RichV wrote: Sat Jan 04, 2020 10:26 pm And does my method of reducing the value of the Pawns down to 1 and dividing all the other piece values by the original Pawn value sound proper for allowing piece values and class piece value ranges to have numbers as small as possible?
This method is sound, but not using Zillion's values, for the reasons H.G.M. mentioned. The values that Zillions gives to pieces depend on how you code them, and you can arbitrarily increase their value by using different code.

What you'd end up with is pieces that are very undervalued and others that are very overvalued (as was mentioned, the Archbishop should be on the same Class as the Classic Queen, so the method isn't working).
RichV
Posts: 53
Joined: Sun Apr 14, 2019 5:33 pm
Full name: Rich VanDeventer

Re: Classes of chess pieces for chess variants

Post by RichV »

This method is sound, but not using Zillion's values, for the reasons H.G.M. mentioned. The values that Zillions gives to pieces depend on how you code them, and you can arbitrarily increase their value by using different code.

What you'd end up with is pieces that are very undervalued and others that are very overvalued (as was mentioned, the Archbishop should be on the same Class as the Classic Queen, so the method isn't working).
Ovyron - thank you for saying that my basic approach to creating a class system for chess pieces is sound. I know that Zillions has a recognized problem accurately calculating the values of chess pieces used by its chess engine based on the Zillions script written by game programmers.

Here is a little more background as to why I am stuck with relying on the Zillions of Games game engine:

As you know, in classic chess the piece values are P=1, N=3, B=3, R=5 and Q=9. Thus on a classic chess board, a R is 1-2/3 as strong as a B or N; a Q is 3 times as strong as a B or N and about as strong as B + R. On the more dynamic and larger CirSquare board using just a classic chess set and 4 additional P, Zillions rates a P at about 2342 points, so I divide it by 2342 to get the whole number 1 and then divide all the major piece values by 2342 rounding the result to the nearest whole number, resulting in N=8, B=10, R=20, and Q=29 (the B, R, and Q gain additional power from the 4 triangular spaces that are 'forks in the road' while the N actually loses a slight amount of power because it cannot utilize the triangles and they actually take away a move when a N is next to them).

Since I almost always play my Castle Strife Games on the CirSquare board with additional new chess pieces in the 4 spaces behind the rank of classic pieces, the value of a classic Pawn goes up to about an average equal to 2800 according to Zillions. Using 2800 as the bench mark instead of 2342, the classic chess piece values become: P=1, N=7, B=8, R=16, and Q=24 (an extended N=9, which can also move one space further as a repositioning move only; that helps the N be able to immediately attack the center of the board the way it can in one move in classic chess). Notice that the relative powers among the N, B, R, and Q remain almost identical to those of classic chess: Q = about 3 Ns or Bs, and exactly the same as B plus R; and a R is twice the strength of a B because a R receives more power from the 4 triangles than a B does.

Since an ArchBishop moves like a Bishop or a Knight, I would expect its power to be equal to that of B + N. In the method in the last paragraph above, Zillions calculates the ArchBishop=17, a N=7 and a B=8. The ArchBishop is equal to a little more than N+B, which is ok with me. It is worth much less than a Q because a Q=B+R and an R is much more powerful than a N, especially on the CirSquare board.

Since my Castle Strife Games cannot currently be used in any other chess engine than Zillions, I have no choice but to use it. I know of no other chess engine that is open source and is still available that has any chess variants that use a circular board. Jocly had circular chess, but that site is no longer available. Being 75 years old, I am too old to quickly learn programs like C++, Java, JavaScript, HTML5, some server-side code programs, and all that is necessary to host a chess variant online. I would be buried and pushing up daisies before that would happen. And since I can't manage to find a programmer interested in taking on the challenge of programming Castle Siege Chess (aka Thrones Chess II) variant, my only choice at this time seems to be to trust Zillions.

Do you know of any chess variant programmers who might be interested in programming chess for a circular chess board that has a square board merged into its center?

Thank you for your help.
User avatar
hgm
Posts: 27788
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Classes of chess pieces for chess variants

Post by hgm »

RichV wrote: Sun Jan 05, 2020 9:02 pmSince an ArchBishop moves like a Bishop or a Knight, I would expect its power to be equal to that of B + N.
Indeed, that is what almost anyone expects. And it is totally wrong. In reality Archbishop beats Rook + Knight (two separate pieces) more often than not, on 8x8 or 10x8. Certainly from an opening position, but also in an end-game where these are the only pieces (apart from sufficiently many Pawns). Expectation is not the same as fact, and the two can be very far apart.

The only lesson that can be drawn is that such expectations, and the simple move-counting heuristic they tend to be based on, are not reliable.
RichV
Posts: 53
Joined: Sun Apr 14, 2019 5:33 pm
Full name: Rich VanDeventer

Re: Classes of chess pieces for chess variants

Post by RichV »

Indeed, that is what almost anyone expects. And it is totally wrong. In reality Archbishop beats Rook + Knight (two separate pieces) more often than not, on 8x8 or 10x8. Certainly from an opening position, but also in an end-game where these are the only pieces (apart from sufficiently many Pawns). Expectation is not the same as fact, and the two can be very far apart.

The only lesson that can be drawn is that such expectations, and the simple move-counting heuristic they tend to be based on, are not reliable.
Since Musketeer Chess uses a chess engine other than Zillions to determine new piece values, it should be good for a comparison. For Musketeer Chess, a Q=9.75, Archbishop=7.7, Chancellor=8, N=3, B=3, R=5. Thus on a classic chess board, the following seems to be true:
- Q is 127% stronger than a Ar
- Q is 122% stronger than a Chancellor
- Q is 195% stronger than a R
- Q is 325% stronger than a B or N
- Archbishop is 128% stronger than B+N (3+3)
- Chancellor is equal to R+N (5+3)
- R is 167% stronger than a B or N.

For Castle Siege Chess on the CirSquare 96 board, Q=24, Ar=17, Ch=25, N=7, eN=9, B=8, R=16. Thus on a CirSquare 96 board (using Zillions of Games) the following seems to be true:
- Q is 141% stronger than a Ar (using B or eN moves)
- Q is 96% as strong as a Ch (using R or eN moves)
- Q is 150% stronger than a R (it appears 2/3 of the Q's power comes from its R moves)
- Q is 300% stronger than a B (it appears 1/3 of the Q's power comes from its B moves)
- Q is 343% stronger than a classic N
- Q is 267% stronger than a eN (extended Night, which has replaced the classic N in CSC)
- Ar is the same strength as B+eN (8+9=17)
- Ch is the same strength as R+eN (16+9=25)
- R is 200% stronger than a B
- R is 229% stronger than a classic N
- R is 178% stronger than a eN

Since the Ar has 28% more power than B+N in Musketeer Chess, should I add 28% of 17 to the Ar to get a new value of 21? Or would that be a little too arbitrary and I should just leave the value at 17? An should I lower the Ch by 2 points, which would put it less than R+eN but 1 point less than the Q?

For the CirSquare 96 board, the increases in strength for pieces that have movements like a B or R seem appropriate because of (a) the 50% larger board--96 spaces, which yields higher coverage numbers for B, R, and Q (b) three directions of attack (primarily orthogonally; sometimes a piece can attack the same space along multiple paths), and (c) the 4 triangles that act as a fork in the road (they are more advantageous to orthogonal moves than diagonal moves). All of the pieces seem to have an appropriate increase in power, except maybe the Ar may be somewhat low and the Ch may be a little high. The power of the Chancellor being equal to R+eN is the same as in Musketeer Chess (R+N), while the Archbishop being the same as B+eN makes it comparatively less powerful than Musketeer Chess suggests. I believe that is because the Bishop moves for the Archbishop going through the triangles do not gain sufficient extra board coverage to give the Archbishop a large enough boost in power to keep up with the increase in power of the pieces that move orthogonally through the triangles. On a single move when aligned with a triangular space, pieces moving diagonally can pass through a maximum of 2 triangles, whereas pieces moving orthogonally can pass through as many as 4 triangles, thus a R gains considerably more board coverage than a B. So I do feel reasonably good about the current power values for them on the CirSquare board. However, I am anxious for the day when CSC is programmed in other chess engines.

Now for the hard work of determining the move scripts for the rest of the Musketeer Chess pieces and placing them 2 pair at a time into Castle Siege Chess to find out their power values as determined by Zillions of Games. Because some of the pieces have very unusual moves, I will not be able to script them because of the 100 link groups limitation of Zillions. Because of all the other work I have to do, that will take quite a while. Hopefully someday fairly soon I will find someone to program CSC in a popular, trusted chess engine for both classic chess and chess variants of virtually all kinds, including those that use custom circular boards. Then I will be able to find out just how good or bad Zillions is at calculating chess piece values.

Thank you HGM for your help/comments.
User avatar
hgm
Posts: 27788
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Classes of chess pieces for chess variants

Post by hgm »

Musketeer Chess is played on 8x8, and I don't expect the mechanism of introducing the pieces to affect piece values. So it seems the values you quote values are simply wrong.

That an engine was used to 'determine' them doesn't mean a thing if we don't know how exactly the engine was used. And what these values are supposed to represent anyway. (E.g. Opening, end-game, average strength of the armies....)

Note that I wouldn't say that Zillions 'determines' piece values. At best you could say that it 'guesses' piece values, perhaps in an 'educated' (albeit heavily misled) way. 'Determining' piece values would involve empirical feedback through game results. So what was the empirical result suggesting that the difference between Queen and Archbishop is not less than a Pawn, or that between Queen and Chancellor more than half a Pawn? It had better be convincing, because the values you quote contradict the results of tens of thousands of games by a large amount (more than a full Pawn!).
Jocly had circular chess, but that site is no longer available.
What is wrong with this, then?
User avatar
hgm
Posts: 27788
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Classes of chess pieces for chess variants

Post by hgm »

BTW, just out of curiosity: you say you also want to include other Musketeer Pieces. But some of those (e.g. Cannon) are not fully 8-fold symmetric. They have moves in some directions, but not in other symmetry-equivalent directions. But directions are not a well-defined concept on your CirSquare board, where rays that start out in parallel can later intersect perpendicularly. You could define the moves relative to a current 'orientation' of the piece, and have rules for the relation between orientation before and after the move. But the natural rules for this would not always conserve the orientation while moving along a closed path. In particular when the path encloses a triangle, a piece moving along it will experience a 90-degree rotation.
User avatar
Ovyron
Posts: 4556
Joined: Tue Jul 03, 2007 4:30 am

Re: Classes of chess pieces for chess variants

Post by Ovyron »

hgm wrote: Mon Jan 06, 2020 8:50 am the values you quote contradict the results of tens of thousands of games by a large amount (more than a full Pawn!).
I guess the question would be if there's a way to extract, determine, or "guess" the value of a piece given its mobility and known board's topology, because if the only way to know their value is to play tens of thousands of games it becomes a stumbling block.