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
Recognized Chess Variants. Index page listing the variants we feel are most significant. (Recognized!)[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sat, Apr 4, 2020 05:50 PM UTC:

I have just changed the text in queryinc.php to Featured Pages or to Featured Games when the Game type is selected. I am weeding through the currently featured games. I am checking how many members have favorited a game, its average rating and how many ratings it has, how popular it is on Game Courier, and whether it has a chapter in Pritchard's Popular Chess Variants or Gollon's Chess Variations. For now, I'll continue to feature games that meet one of these criteria. But I will list below some games that just scrape by and might be worth dropping from being featured:

  • Avalanche Chess is mentioned in PCV, but it hasn't proven popular on the CVP.
  • Capablanca Random Chess has a few positive reviews, though most don't actually mention the game. It is favorited by one member.
  • Dragon Chess by Gary Gygax is favorited by four members.
  • Janus Chess is favorited by five people.
  • Los Alamos Chess is favorited by one member. It has some positive reviews, but two are anonymous. I know it is of historical interest.
  • Magnetic Chess is favorited by two people, and Pritchard has a chapter on it in PCV.
  • Minishogi is favorited by four people.
  • Odin's Rune Chess has six excellent reviews and a good one, but it is the favorite of only one person, and it is fairly unpopular on Game Courier.
  • Raumschach is favorited by three people, and I believe Dickins mentions it in A Guide to Fairy Chess
  • Star Trek Tridimensional Chess is favorited by one person and has only two reviews, but it is very well known, and expensive sets are sold for it.

The following games do not meet any of the criteria above and are being unfeatured for now:

  • Byzantine Chess
  • Chess with Batteries has one review and is favorited by one person. It is not played on Game Courier.
  • Countdown
  • Crazy 38's is favorited by one person and has two good reviews. The one person who favorited it says in his review that he has not played it.
  • Diamond Chess
  • Flip Chess and Flip Shogi are favorited by one person, have no reviews, and are unplayed on Game Courier.
  • Pocket Knight
  • TenCubed Chess is favorited by only two people and is fairly unpopular on Game Courier.

🕸Fergus Duniho wrote on Fri, Apr 3, 2020 11:09 PM UTC:

The reason I want to use the word "Featured" is that it has a precise, concrete meaning. Something would be featured if we feature it, and it wouldn't be featured if we don't. In contrast, calling something "Recognized" or "Primary" suggests some external quality. The idea behind the Recognized Variants is to identify those that have won or merit some kind of recognition. This can lead to disagreement or uncertainty over which variants should be considered recognized. But the idea of Featured Games isn't tied to some nebulous external standard. We could feature or unfeature games for different reasons, permanently featuring some games, and temporarily featuring others. Since it's main purpose would be to draw attention to some pages in search results, I agree that it should not be broken into categories. This purpose would also put a practical limit on how many pages should be featured.


🕸Fergus Duniho wrote on Fri, Apr 3, 2020 08:47 PM UTC:

That's something that David Howe instituted so that the most important pages would be at the top of the list when listing search results. I think he largely included the Recognized Variants, though some other things are also included. It might be a good idea to replace Recognized Variants and Primary Items with Featured Games and Featured Pages, the former being a subset of the latter. Featured pages would be ones that we want to draw greater attention to or that we expect users would be looking for more. These could include links to games that enough of us think highly of, links to well-known or popular games, and links to commercially available commercial games. These could be featured at the top of search results, as Primary Items are, but referred to as Featured Pages instead. Also, they could be a bit more dynamic than Recognized Variants, meaning we could drop something from the Featured Pages, such as a commercial game no longer being made, or a game that has been reevaluated.


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 Fri, Apr 3, 2020 05:46 PM UTC:

I modified cond to work properly, and I updated the section on recursive functions. Since cond mimics the operation of ?: in PHP, I had written it using ?:. I rewrote it using if and else, and it is now able to work in recursive functions, because it no longer evaluates code that it shouldn't evaluate.


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 Fri, Apr 3, 2020 02:28 PM UTC:

I have added a new section called "Actual vs Potential Moves".


🕸📝Fergus Duniho wrote on Thu, Apr 2, 2020 10:02 PM UTC:

You have a bunch of lines beginning with or and and. Each of these lines is checking for islower space #1 or for isupper space #1, and that's where your problem lies. In potential moves, space #1 will contain what is on the space prior to making the move, which won't be the King, but for actual moves, it will contain the piece that has moved there. I gather you mean to be making sure that only the King whose first move is contained in the variable on that line gets to move. This works for actual moves, but it is not working for potential moves, because in potential moves, space #1 contains the value of the piece on the space prior to making the move.

In Chess, the King is allowed to castle on the first move, and keeping track of whether the King has already moved is handled by flagging the space the King begins on, then unsetting the flag with every subsequent King move. This easily works for both Kings, because each King begins on a different space. So, I recommend flagging the King's initial spaces rather than keeping separate K1stmove and k1stmove variables.

 


Apothecary Chess-Modern. Large board variant obtained through tinkering with known games.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Thu, Apr 2, 2020 09:37 PM UTC:

Comparing this page to your Game Courier code, I see things in your code that I don't see on this page, such as rules concerning Pawn promotion and the King's first move.


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, Apr 1, 2020 08:56 PM UTC:

I have just added a new section on breaking logic. It goes over the White_Pawn function in detail.


🕸📝Fergus Duniho wrote on Wed, Apr 1, 2020 02:14 PM UTC:

In your code, K1stmove just appears by itself, and it gets interpreted as a string literal that has no meaning. I expect it will always evaluate to true. So, your code should be logically equivalent to this:

def Apothecary_King or or checkleap #0 #1 2 1 checkleap #0 #1 1 0 checkleap #0 #1 1 1;

That should work for displaying Knight moves. So, I don't know why your code is not displaying Knight moves. But other things about it need to be fixed anyway.

Also, your logical operators are all at the beginning, which is wasteful. Learn to use them with single arguments so that you can break out of the function early when it already has the correct result, like this example does:

def Apothecary_King checkleap #0 #1 2 1 or checkleap #0 #1 1 0 or checkleap #0 #1 1 1;

Take a look at the Pawn functions for more complex examples of how to do this.


🕸📝Fergus Duniho wrote on Wed, Apr 1, 2020 01:02 PM UTC:

I see three problems with your code.

First, you're misspelling origin.

Second, it looks like you are using some operators incorrectly. Operators always take their operands on the right side. This is not like C or PHP, which lets you put operators between operands. To test for equality, put both values you want to compare on the right side of ==.

Third, try doing it backwards from how you're doing it, because it evaluates everything in reverse order. Place the normal King moves at the end. Just before that, include an and that checks a flag value. Before that, include the moves the King is allowed on its first move.

It's important to bear in mind how the logical operators are designed to break out of the function early if given only one operator instead of two. Compare these two lines:

def King or checkleap #0 #1 1 1 checkleap #0 #1 1 0 ;

def King checkleap #0 #1 1 1 or checkleap #0 #1 1 0;

The first one calls checkleap twice everytime, but the second calls checkleap a second time only if it was not a one space orthogonal move. As I mentioned above, operators always go on the right. The second is not an example of placing a logical operator between two operands. It is an example of a logical operator having a single operator on its right side. When or gets a single true value, it exits the function and returns true. This eliminates the need to evaluate checkleap #0 #1 1 1 when checkleap #0 #1 1 0 has already been evaluated as true.

Likewise, and will exit a function and return false if it gets a single false value. Use this to have your function evaluate the first move of a King only on its first move. Design your function so that it breaks out early if it is not a regular King move and the King has already moved. The way your function is currently designed, it does all the calculations for the King's first move everytime the King moves, and that is wasteful.

 

 


Recognized Chess Variants. Index page listing the variants we feel are most significant. (Recognized!)[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Apr 1, 2020 11:40 AM UTC:

I have a clear conflict of interest here. 

That hits the head on the nail. Conflict of interest is the main reason the Recognized Chess Variants project has been discontinued. This site is run by Chess variant inventors, and as inventors, we all want recognition for our own variants. But to do something like the Recognized Chess Variants project requires impartiality and the willingness to not use it to promote our own pet projects. The Favorites system works differently. Inventors may favorite their own games, but it's mainly how other people vote that determines whether a game rises to the top of the list. Prolific inventors are even encouraged to use this as a tool for designating their own favorites among their own games, because this is relevant information. I have not favorited all of my games, because I think it is more relevant for people to know which of my games are my personal favorites than it is for me to promote all my games equally. Even though I have invented my own games, I am detached enough from them that I can be critical of them and favor some over others. But I am not so detached from my games that I am uninterested in promoting any of them. Instead of demanding impartiality, the Favorites system allows partiality but minimizes its effect. This encourages more participation, and it provides a more accurate reading on how much recognition individual games actually have.


🕸Fergus Duniho wrote on Wed, Apr 1, 2020 12:57 AM UTC:

Is the fact that the recognised variants section wasn't updated from 2006 means that the administrators of chessvariants haven't found any new / recent variant worth to be added ?

No, it means that this project has been discontinued. This has nothing to do with the quality of Chess variants coming out since its discontinuation. It has been replaced with allowing members to designate their favorite Chess variants. This gives everyone who cares to participate an equal voice, which is more democratic than letting editors come up with a list. At present, 3 people have favorited Musketeer Chess.


🕸Fergus Duniho wrote on Mon, Mar 30, 2020 07:22 PM UTC:

Musketeer Chess is very young, and nothing has been added to this list since 2006. It has been replaced by the more democratic practice of letting users favorite games. You may play Musketeer Chess on this site with Game Courier.


Minishogi. A Minishogi association has existed, and may still exist, in Osaka.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Mon, Mar 30, 2020 05:43 PM UTC:

There was a problem with the form on this page. The form action had a query string in it, and the value for settings in the query string did not match the value in the input field. I deleted the query string, and I changed the value for settings in the input field to "default".


Possible issue on Shogi Drop[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Mon, Mar 30, 2020 05:24 PM UTC:

I had added the ability to enter moves backwards, but I hadn't taken into consideration that it also had to work with drops. I have now fixed that.


Minishogi. A Minishogi association has existed, and may still exist, in Osaka.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Mon, Mar 30, 2020 12:01 AM UTC:

I just clicked on the minishogi button, and it does go to a settings file that enforces the rules. Although the name of the settings file may be the only difference you see on the page, that one difference can make a major difference, because it points to an external file that contains the rule enforcing code.


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 Sun, Mar 29, 2020 09:37 PM UTC:

Subroutines should be reserved for moves that generate side effects. For the King, side effects may include unsetting a flag or updating the current position of the King. Bear in mind that you need to provide a function for every piece. Use a subroutine only if actual moves require some capability that goes beyond what your function can already do. If you don't want to use the King subroutine, you could use King as an alias to another piece name that doesn't have a subroutine written for it. For example:

def Apothecary_King blah blah blah;

def Apothecary_King-Range blah blah blah;

alias King Apothecary_King;

set k King;

set K King;

But if you don't use the King subroutine, make sure you unset flags and update the values of kpos and Kpos in the external code whenever the King moves.


🕸📝Fergus Duniho wrote on Sun, Mar 29, 2020 09:27 PM UTC:

After creating this page, I moved some earlier comments on the fairychess include file to this page.


🕸📝Fergus Duniho wrote on Sun, Mar 29, 2020 01:15 AM UTC:

If you tell me what the image was, I can purge it from the cache sooner.


🕸📝Fergus Duniho wrote on Sun, Mar 29, 2020 01:12 AM UTC:

Although they don't need it, I just added the same code to Chess and Grand Chess, so that it's there if someone copies the code from one of these.


🕸📝Fergus Duniho wrote on Sat, Mar 28, 2020 11:09 PM UTC:

I just made some modifications to Gross Chess and the fairychess include file to use aliases for alternate piece names. Instead of the code I just showed you before, you can use this code:

alias Archbishop Cardinal;
setconst A Archbishop;
setconst a Archbishop;

But you will also have to copy some code from the Post-Move sections. The main change is that I added realname in front of const in expressions where I needed the function or subroutine name. Where I want to use the alias for display purposes, I did not use realname.


🕸📝Fergus Duniho wrote on Sat, Mar 28, 2020 10:12 PM UTC:

Looking at your code, you used the names of Cardinal, Marshall, and Half_Duck instead of Archbishop, Chancellor, and Lion. To use other names, you need to copy the relevant functions and variables to new names. For an example, I used this code to change the Cardinal to an Archbishop in Gross Chess:


copyfn Cardinal Archbishop;
copyfn Cardinal-Range Archbishop-Range;
set Archbishop-Desc var Cardinal-Desc;
setconst A Archbishop;
setconst a Archbishop;

Gross Chess. Play this 144 square variant online with Game Courier.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sat, Mar 28, 2020 05:35 PM UTC:

The presets on this page now use the fairychess settings file, which uses the fairychess include file.


🕸💡📝Fergus Duniho wrote on Sat, Mar 28, 2020 04:44 PM UTC:

Thanks, I've corrected that.


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 Sat, Mar 28, 2020 04:44 PM UTC:

Okay, I've fixed the White and Black Charging Knights.


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 28, 2020 02:02 AM UTC:

I removed thespaces, since I couldn't find any use of it. Unlike spaces, which returned the keys to the $space array, it returned the $space array itself. In place of it, I made $space a readable and writable system variable.

I removed the answered operator and made $answered a readable and writable system variable. This variable gets set by ask and askpromote when they are answered. It is useful for writing code that stops asking the same question again and again after it has already been answered. I am going to update the White_Pawn and Black_Pawn functions to use it, so that I don't have to resort to the kludge of inserting "P-dest" or "p-dest" when a Pawn doesn't promote.

I just documented the baseurl operator. It returns the baseurl of the the Game Courier script.

I added and just documented the capturedpieces operator. This calculates and returns an associative array of the currently captured pieces. This replaces the use of $capturedpieces as a readable system variable with the system operator. It may still be overwritten with setsystem though, and it may also be accessed as a variable with a dollar sign before it. But this will return a value only if it has already been set, since Game Courier does not set the $capturedpieces variable until it has run through all the moves in a game.

 


Gross Chess. Play this 144 square variant online with Game Courier.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Fri, Mar 27, 2020 07:31 PM UTC:

It took me less time to do a new settings file for Gross Chess than it did for Grand Chess, because it builds on the work I already did for that game. The new one is now ready for beta-testing.

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


Question on PHP Engine or change on legal moves[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Fri, Mar 27, 2020 03:34 PM UTC:

Okay, that's now fixed. Thanks for reminding me how it was supposed to work.


Grand Chess. Decimal variant with Cardinals and Marshalls.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Fri, Mar 27, 2020 12:58 AM UTC:

Okay, I copied the test version of the fairychess include file to the official fairychess include file, and I updated this page to use the new fairychess settings file. I also removed debugging code from it and modified the descriptions of the Pawn and King to reflect the rules of Grand Chess.


Question on PHP Engine or change on legal moves[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Thu, Mar 26, 2020 08:06 PM UTC:

Thanks for mentioning that. I had forgotten about this ability, and I inadvertently introduced a bug that got rid of it. I have now restored it.


Grand Chess. Decimal variant with Cardinals and Marshalls.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Thu, Mar 26, 2020 07:04 PM UTC:

The new Grand Chess preset I've been working on is ready for some beta-testing. It is currently using a test version of the fairychess include file. If it looks like it's ready, I'll copy the test version to the official fairychess include file and officially release the new preset.

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


Gross Chess. A big variant with a small learning curve. (12x12, Cells: 144) [All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Wed, Mar 25, 2020 04:59 PM UTC:

I'll bear that in mind while working on a new preset for Grand Chess. With that as a foundation, I can start on a new and improved preset for Gross Chess.


Apothecary Chess-Classic. Large board variant obtained through tinkering with known games.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Mar 25, 2020 02:21 PM UTC:

One thing I just thought of is that the regular stalemated subroutine will not work for a game with the Joker. To factor in how moving a particular piece change's the checking power of the Joker, it should regulary update the value of lastpiece.

While looking up the correct name of the variable, I saw that I had used the wrong variable name in some places last night. When I corrected that, I was able to move the Joker in my fork of the Apothecary Chess 1 preset.

There are still more things to be done, but not right away.


🕸Fergus Duniho wrote on Wed, Mar 25, 2020 01:10 PM UTC:

Because then it is no longer that players turn, and a Joker is not allowed to move in the opponent's turn.

That's true of every piece on the board.

So during the opponent's turn it has no powers at all.

But that's not true of other pieces. Other pieces retain checking power during the opponent's move.

I would imagine that the Joker retains whatever power it used to move until the opponent moves another piece, thereby giving it a different power of movement. For example, if the Joker moves as a Rook and checks the King, the King would be in check, and one way to remove that check would be to move a Bishop, which would change the Joker's powers of movement.


🕸Fergus Duniho wrote on Wed, Mar 25, 2020 12:40 PM UTC:

The rule is that the joker moves like the last move of the opponent.

As stated, that's too ambiguous. Here are some possible interpretations:

1. The Joker has the same powers of movement as the last piece the opponent moved, which is what I've been trying to program with my Joker function.

2. The Joker mostly has the same powers of movement as the last piece the opponent moved, but there are exceptions for particular pieces. For example, it might not be able to promote or castle.

3. The Joker is limited to the type of move of the opponent's last move. For example, if the opponent moved a Queen, diagonally, the Joker would be able to move diagonally, but not orthogonally.

4. The Joker is limited to the type and direction of the opponent's last move. For example, if the Queen moved vertically forward, the Joker could move vertically forward, but it could not move vertically backward, horizontally, or diagonally.

5. The Joker is limited to the type, direction, and distance of the opponent's last move. For example, if the Queen moved vertically forward 4 spaces, the Joker could move vertically forward up to four spaces.

6. The Joker is limited to the type, direction, and precise distance of the opponent's last move. For example, if the Queen moved vertically forward 4 spaces, the Joker could move vertically forward 4 spaces, no more and no less.


🕸Fergus Duniho wrote on Wed, Mar 25, 2020 02:29 AM UTC:

In my fork of the Apothecary Chess 1 preset, the problem I've currently come up against may be due to endless recursion. When I try moving the Joker, the script crashes. What I think is happening is that after the Joker moves, it runs code for the other Joker, and now that the value of lastpiece is j or J, the Joker function recursively calls itself again and again without ever exiting. I just tried one way of fixing this, but it didn't solve the problem. Since it's late, I will not continue with any more attempts tonight. I just wanted to share what I think the problem is.


🕸Fergus Duniho wrote on Tue, Mar 24, 2020 08:15 PM UTC:

The problem was caused by using #lastpiece instead of var lastpiece. The former inserts the value into the line during preprocessing, which doesn't work out so well for null or empty values, while the latter looks it up while evaluating the expression. These will work instead.

def Joker fn const alias var lastpiece #0 #1;
def Joker-Range fn join const alias var lastpiece "-Range" #0;

One thing that has come up while examining your code is how you want the Joker to move after a piece that moves differently for each side, such as the Pawn. Should it move as the enemy Pawn, which is how it currently works, or as its own Pawn? For the latter, these should work:

def Joker fn const alias flipcase var lastpiece #0 #1;
def Joker-Range fn join const alias flipcase var lastpiece "-Range" #0;

While these changes eliminate the problem you were having, there is still a problem with actually moving the Joker piece. One problem is that the Joker doesn't properly handle pieces that use subroutines instead of functions. But even with pieces that just use functions, it is not working properly. I'm getting too tired to continue looking into this today. Maybe I'll make more progress tomorrow.


🕸Fergus Duniho wrote on Tue, Mar 24, 2020 03:33 PM UTC:

I was just getting the same kind of error while working on updating Grand Chess to use the fairychess include file. To fix it, I had to make sure my piece assignments were complete, and since I was using an alias for the Cardinal, I had to make sure that the alias operator got used in all the appropriate places.


🕸Fergus Duniho wrote on Tue, Mar 24, 2020 03:10 PM UTC:

Give me a link to where you are using this code with a list of moves that result in this error message.


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 Tue, Mar 24, 2020 01:47 AM UTC:

Comparing the code for Eurasian Chess to the fairychess code, the Pawn subroutines look very different. Much of the logic may be the same, but the two are written too differently to easily compare them. One point of difference is that the Eurasian code allows promotion only to a captured piece. Another is that a Pawn may advance to the last rank only if there is something for it to promote to, though this doesn't stop it from checking the king. These two things could be built into the already existing functions and subroutines for pawns if external code was used to dynamically update the values of wprom and bprom.

After thinking of this, I thought it might be more efficient to just use different functions and subroutines, because wprom and bprom would have to be updated every time a pawn promotes, and it would be simpler to keep that code in the pawn subroutines.

But one thing that has since occurred to me is that Game Courier now keeps track of captured pieces, which it didn't do when I originally programmed Eurasian Chess. So, if I were to reprogram this game using the fairychess code, I could make use of this in external code that dynamically updates the value of wprom and bprom. I would then just have to add code for limiting movement when the appropriate variable is empty.

Here's how it could work. It would begin by adding the current pieces to the captured pieces. It would then compare it to the original pieces. If there was an extra piece on the board with a matching captured piece, it would change the captured piece to a pawn. It would then compute an appropriate value for wprom or bprom from the captured pieces. I'll work on updating Grand Chess or Eurasian Chess tomorrow to make sure I have the code working right. Also, preliminary tests suggest that it is already doing some of the needed bookkeeping of captured pieces. I will look into that more tomorrow.


🕸📝Fergus Duniho wrote on Mon, Mar 23, 2020 04:05 PM UTC:

You should look at what's being done in the new fairychess preset for Chess. This is the one that is currently being used on the Game Courier page for Chess. Here is what the equivalent section looks like in that preset:

if sub const $moved $origin $dest and issub const $moved:
elseif fn const $moved $origin $dest and isfunc const $moved:
else:
  set name const $moved;
  set errmsg list "You may not move a" #name "from" $origin "to" join $dest ".<BR>";
  set desc join #name "-Desc";
  set errmsg str_replace "_" " " join #errmsg str_replace "%s" #name var #desc;
  die #errmsg;
endif;

Note that this is not using aliases. If you're using aliases, place alias before $moved. This code checks whether the piece has a subroutine defined for it. If it does, it calls the subroutine to check whether the move was legal. If it was legal, it does nothing. If one or both of these tests failed, it checks whether there is a function, and if there is one, it uses the function to check the legality of the move. If the move was legal, it does nothing. Finally, if the move failed both tests, it is illegal, and it reports an error message that uses the name of the piece and displays the description of how the piece moves.

It has occurred to me that if the subrountine is defined, and it fails the subroutine, it will then call the function. To prevent this, I have just added  and not issub const $moved to the end of the second line before the colon.


Tridimensional Chess (Star Trek). Three-dimensional chess from Star Trek. (7x(), Cells: 64) (Recognized!)[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sat, Mar 21, 2020 12:29 AM UTC:

Thanks for the information. I looked through the scenes in these two episodes, and I found the Gothic set in "The Naked Time," but I could not find any scene with 3D Chess in "Day of the Dove." Curiously, both episodes had Sulu wielding a sword.


Sign in to the Chess Variant Pages. Sign in to the Chess Variant Pages.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Fri, Mar 20, 2020 02:03 PM UTC:

Send me an email from the email address associated with your account, and I will reset your password.


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 14, 2020 05:19 PM UTC:

Now that you mention it, that's the game I did it that way for with Game Courier.

I have made a few tweaks to how clicking on an empty space first works. When there is only one legal move to that space, it highlights that space, fills it in as a move by the piece that can move there, and let's you complete the move by clicking on the same space again. To cancel the move, click on the piece rather than on the space. If multiple pieces can move to the same space, it highlights each of them, and you have to complete the move by clicking on one of them. You can cancel the move by clicking on any empty space.


🕸📝Fergus Duniho wrote on Sat, Mar 14, 2020 12:13 AM UTC:

There is already a simple solution available, which is to give the castling move to the Rook when the King moves one space. It's best to not allow players to enter reverse notation with mouse clicks, because it would rarely have any use, and it would more frequently just mess up regular moves. Also bear in mind that the JavaScript used to make moves is a simple client-side mechanism that cannot connect with the server-side code used for enforcing rules except by submitting a form. It does not have the rules programmed into it, and it has to operate on its own, its only data being a list of legal moves and a representation of the board.


🕸📝Fergus Duniho wrote on Fri, Mar 13, 2020 08:23 PM UTC:

So far, I have programmed the square-table rendering method to handle moves by entering the destination first. It works like this. When you click or tap on the destination first, it highlights the pieces that can move there. If you then click or tap on one of those pieces, it will then complete the move. But no matter what order you begin in, it will put the notation in the correct order. So, this doesn't change what notation can be entered through clicking or tapping.


🕸📝Fergus Duniho wrote on Fri, Mar 13, 2020 02:35 PM UTC:

Something like that would make it easier to do fission moves in Fusion Chess. However, what you suggest for one-space castling would also require a difference in notation between the two moves.


Fusion Chess. Variant in which pieces may merge together or split apart. (8x8, Cells: 64) [All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Wed, Mar 11, 2020 10:27 PM UTC:

On second thought, this makes the Queen immune to the Cavalier King capturing it as a Knight. However, the Queen is also immune to being captured at a distance by the other royal pieces. Each compound royal piece can capture two of the simple pieces at a distance. The Cavalier King can capture the Rook or Bishop at a distance, the Dragon King can capture the Bishop or Knight, and what I'm now calling the Pontiff can capture the Rook or Knight. So, it's all symmetrical, and if I made an exception for the Cavalier King's Knight leap, that would make it more formidable than the other two compound royal pieces.


🕸💡📝Fergus Duniho wrote on Wed, Mar 11, 2020 07:55 PM UTC:

It could not make a Knight leap if both spaces adjacent to it and its destination were checked. However, this would not apply to checks from royal pieces. This would allow the Cavalier King to check another royal piece with different powers of movement.

Not quite. To be in line with how other royal compounds work, it would be able to check another royal piece without restriction, but checks from the opponent's royal piece would still otherwise impede its movement.


🕸💡📝Fergus Duniho wrote on Wed, Mar 11, 2020 06:28 PM UTC:

Based on my experiences with Zillions of Games, I think that the Dragon King is too tough to checkmate (and, perhaps, so are the Pope and Eques Rex).

I'm thinking of borrowing a rule from Metamachy for limiting the movement of the Eques Rex, which I'm planning to rename Cavalier King. In that game, a King may leap two spaces on its first move, but it may not pass through check. To make a Knight move, it must have an unchecked path to the space. So, I'm thinking of limiting the Cavalier King in that way. It could not make a Knight leap if both spaces adjacent to it and its destination were checked. However, this would not apply to checks from royal pieces. This would allow the Cavalier King to check another royal piece with different powers of movement.

Cavalier Chess handles the power of this piece by giving greater power to the other pieces, but in Fusion Chess, the pieces have the same total power as they do in Chess, and all that's different is having the ability to more fluidly redistribute power among the pieces. So, weakening the royal piece in this game seems more called for.


Bishop-Nightrider compound. Piece that moves like bishop or nightrider.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Mar 11, 2020 02:36 PM UTC:

I added a link to the Bishop article and upgraded this to a Piececlopedia article.


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 Wed, Mar 11, 2020 01:25 AM UTC:

The difficulty in programming fast castling is that a King might castle by moving just one space, and that needs to be distinguished by a regular King move. When this has come up in other games that allowed the King to castle by moving one space, the solution was to give that castling move to the Rook.


🕸📝Fergus Duniho wrote on Tue, Mar 10, 2020 08:41 PM UTC:

I don't play Chu Shogi, but I'm aware that the Lion moves twice. I have programmed Marseillais Chess and Extra Move Chess, which both allow double moves more generally. These include the ability to prompt the player for a second move before completing that player's turn. While I have programmed double moves on the scale of a whole game, I have not done it for an individual piece. You might have to program the game in general to handle double moves by a single piece.

Actually, I have done this for Pawn promotions in Chess. So, you might be able to do it for the Lion more easily than I thought. You want to look into the continuemove command.


🕸📝Fergus Duniho wrote on Tue, Mar 10, 2020 08:35 PM UTC:

I don't yet have a clear idea of what you mean by fast castling. Are the King and Rook just swapping places? If that's what's going on, Game Courier has a swap command that should prove useful.


🕸📝Fergus Duniho wrote on Tue, Mar 10, 2020 06:30 PM UTC:

I was recently thinking about how to do a Chameleon piece with the new fairychess include file, though I haven't done anything yet. Here's what could work. Use a global variable to keep track of the last piece moved by the previous player. For example, put "set lastpiece $moved;" at the end of the Post-Move sections. Then define the piece like so:

def Joker fn const alias #lastpiece #0 #1;
def Joker-Range fn join const alias #lastpiece "-Range" #0;
If you're not using aliases for any pieces, you can omit the "alias" keyword. For earlier include files, the principle would be the same, but the code would be different.


Fusion Chess. Variant in which pieces may merge together or split apart. (8x8, Cells: 64) [All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sat, Mar 7, 2020 09:30 PM UTC:

> It would need some rule that you cannot move a royal slider through check, like in Caissa Brittannia, to make it a serious game.

Since I was just thinking of another rule I wanted to change, I opened my .zrf file for this game to see how I could make the change. When I did open it, I noticed that I made some rule updates in 2006, but I never changed the rules on this page. One of the rules was the one you suggested here. Here are my comments from the .zrf file:

; *** Rules changed in February 2006
; *** King cannot initiate fusion.
; *** Simple pieces may initate fusion with King.
; *** Dragon King and Pope may not move through check.

As the rules are currently written, the King may initiate fusion, but another piece may not initiate fusion with the King. Two of the rule changes above reverse this. This might be to prevent the King from using fusion to get out of check.

The new rule I'm thinking of adding limits the use of fission for getting out of check. I initially thought of just forbidding fission for getting out of check, but it seems simpler to forbid fission by a piece that is currently attacked. This prevents the two ways fission could be used to get out of check that would tilt the advantage in favor of defense. One is if a royal compound piece is in check, and the player splits off the non-royal component to block the check. The other is if a pinned piece is blocking one check, and it splits off one of its components to block another check. This is more permissive in some ways and more restrictive in some ways than the other condition I thought of. It is more permissive, because it allows a check to be blocked by splitting apart an unpinned piece. It is more restrictive, because it does not allow any attacked piece to split apart.

Its main advantage is that it will require less overhead. In Zillions, I can just add "not-attacked?" to the appropriate code, and in Game Courier, the legal fission moves will all correspond with other legal moves, which eliminates the need to write extra code for calculating possible fission moves. Since that advantage would be lost if I used both conditions, I will just use the simpler condition. So, the rule I'm thinking of adding is that it is illegal to split apart a piece that is attacked.

I am currently in the process of programming a Game Courier preset for Fusion Chess. When I have finished with that, and when I have updated the Zillions file, I'll officially update the rules.


Chinese Chess. Play Xiang Qi, the Chinese form of Chess.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Fri, Mar 6, 2020 07:09 PM UTC:

I have updated the presets on this page to use the new fairychess settings file, which uses the new fairychess include file. I tested it on several completed games, and I tested illegal moves. It seems to be working fine. The advantage of this new settings file is that it will refer to pieces by name, and it will include a description of how a piece moves when it makes an illegal move. I changed the default graphics for this settings file, and I have left the old settings file alone. If you want to compare the old one with the new one, you will find the old one at

https://www.chessvariants.com/play/pbm/play.php?game=Chinese+Chess&settings=GB-set


🕸📝Fergus Duniho wrote on Thu, Mar 5, 2020 04:45 PM UTC:

I have written a new settings file for Chinese Chess that uses the fairychess include file. It might be complete now, but I haven't taken the time to fully test it yet. You can find it at https://www.chessvariants.com/play/pbm/play.php?game%3DChinese+Chess%26settings%3Dfairychess.


UserID on CV site[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Tue, Feb 25, 2020 09:35 PM UTC:

Since the userid is limited to 16 characters, and ChessVariantDemos has 17, I could not make the change. Note that you have two different IDs on this site, though both are presently the same for you. These are the personid, which is limited to 32 characters, and the userid. The userid is the handle that you use to sign in, and it is also used when you play games on Game Courier. The personid is used to identify you when you post comments or contribute content. This site was using personids before userids were ever a thing here, and the original personids were based on a person's name, such as DavidHowe or FergusDuniho. Userids were meant as shorter handles for signing in. I could change your personid to ChessVariantDemos, though one based on your name would be preferable.


🕸Fergus Duniho wrote on Mon, Feb 24, 2020 05:22 PM UTC:

What do you want to change your userid to?


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 Mon, Feb 24, 2020 05:21 PM UTC:

It is used to evaluate possible castling moves without producing error messages. If you search for it, you will find it being used in the stalemated subroutine.

 


Grasshopper Chess. Each player has eight additional grasshoppers.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Feb 19, 2020 09:20 PM UTC:

Server load rarely gets very high, and the rare peak of high server load does not correlate with the site going down. So, even though tables could also work, I'm not worried that using single images will increase the load too much. Also, it has been simple enough to replace various JavaScript diagrams with generated images, because I could reuse the FEN string from the JavaScript with only occassional modifications.


🕸Fergus Duniho wrote on Wed, Feb 19, 2020 06:05 PM UTC:

I exempted it from the rule that Cloudflare will not cache PHP scripts. Cloudflare caches the output of this script for different query strings.


Diagram Designer. Lets you display diagrams without uploading any graphics.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Wed, Feb 19, 2020 03:26 PM UTC:

It can handle hexagonal boards and custom boards with spaces arranged in a grid, but I have not added in code for circular boards or for custom boards with custom spaces.


Grasshopper Chess. Each player has eight additional grasshoppers.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Wed, Feb 19, 2020 03:20 PM UTC:

As I mentioned to you not too long ago, the script used to draw this picture is cached by Cloudflare. Also, the previous diagram had ranks broken into two rows and looked really bad.


🕸Fergus Duniho wrote on Tue, Feb 18, 2020 10:08 PM UTC:

I replaced the diagram with a single image.


Caching[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Thu, Feb 13, 2020 08:15 PM UTC:

I set the rule to bypass the cache for https://www.chessvariants.com/membergraphics/MSinteractive-diagrams/betza.js. There might be a way to purge the cache with a script, but I have not studied the Cloudflare API well enough to know how to proceed with that, and I don't know anything about using Curl. I normally just log in to Cloudflare's website and do it manually from there. I have also just increased the caching time from 4 hours to 3 days, so that HTML pages will stay up when the server goes down.


🕸Fergus Duniho wrote on Thu, Feb 13, 2020 06:07 PM UTC:

I cannot control Cloudflare through scripts on this site. I have one page rule left. I could use it to disable caching on your script or on the directory it is in.


🕸Fergus Duniho wrote on Thu, Feb 13, 2020 04:54 PM UTC:

There are two levels of caching. One is browser caching, and the other is caching at the DNS/CDN level. The latter is handled by Cloudflare, and it reduces the server load quite a lot, which keeps this site quicker and more stable. I am able to control caching through page rules, but my free Cloudflare account gives me only three page rules. I have two rules right now. One disables caching for pages with a .php extension, and the other enables caching for the drawdiagram.php script, which is used for graphics. I can purge the cache for individual pages as needed, but I need to be asked to do that for a particular page. Complaining about caching in general will not help.


🕸Fergus Duniho wrote on Thu, Feb 13, 2020 03:17 PM UTC:

If caching on the site were broken, there would be no caching, and all changes would appear immediately. Your issue is that caching is working even when you don't want it to.


Game Courier. PHP script for playing Chess variants online.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Wed, Feb 12, 2020 03:05 PM UTC:

I would advise you to move away from using the chess include file to using the fairychess include file. The former is optimized for Chess, while the latter is designed to make it easier to adapt to other Chess variants.


Game Courier History. History of the Chess Variants Game Courier PBM system.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Mon, Feb 10, 2020 02:05 AM UTC:

I'm working on adding piece descriptions to the fairychess include file. One reason for this is to help programmers using the include file find the code for the pieces they want. But instead of putting them into comments, I am creating strings that can be used in error messages to remind players how a piece moves. I started with the Chess pieces while I took the time to hone the code for displaying the messages. The strings use "%s" instead of the piece name in case someone renames a piece. I had thought of using printf, but I ended up using str_replace, which I added to the language. Like the PHP str_replace, its arguments are search, replace, and string.


Game Courier Logs. View the logs of games played on Game Courier.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Mon, Feb 10, 2020 12:39 AM UTC:

For reasons unknown, the host went down for almost three hours today. I compensated interrupted games by three hours.


Bishop-Nightrider compound. Piece that moves like bishop or nightrider.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Sun, Feb 9, 2020 08:56 PM UTC:

Pocket Mutation Chess calls this piece a Cardinalrider.


Game Courier History. History of the Chess Variants Game Courier PBM system.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sun, Feb 9, 2020 07:09 PM UTC:

I have added to the fairychess include file the Shogi and CWDA pieces that weren't already in it.


🕸💡📝Fergus Duniho wrote on Sun, Feb 9, 2020 12:58 AM UTC:

The hyphen is in Spider-rider to separate the two adjacent r's.


🕸💡📝Fergus Duniho wrote on Sat, Feb 8, 2020 07:54 PM UTC:

I have removed $countextrasas from the system variables. It was not used in any settings file, and I could not figure out what it was for. My comments on it were not informative enough. I commented out the code that used the variable, since it appeared to be useless.


🕸💡📝Fergus Duniho wrote on Sat, Feb 8, 2020 06:03 PM UTC:

I am deprecating the use of global and setglobal as aliases for system and setsystem. I would like to eventually eliminate these from the language, since global variables have a different meaning in the language.

I have limited the power of the system built-in function. While it had prevented people from viewing a password with it, it did allow you to enter "system GLOBALS" to view all the variables, which could be a big security risk. I changed it to return values only from a whitelisted set of system variables. These correspond to the same ones that may be set with setsystem.

I introduced the use of the dollar sign as a system variable designator. When appearing at the beginning of a variable name, it will return the value of the corresponding system variable if it has been whitelisted. I also added support for $old and $moved, which return the values of $lastcaptured and $lastmoved. Since the dollar sign is also the designator for PHP variables, it is basically a way to get the values for some of the PHP variables with the same name. You may also think of the S in $ as standing for system.

Game Courier is already set up to recognize old, moved, origin, and dest as values of system variables, but I don't like this, because it prevents these from being used as ordinary words, and it might make the code more confusing if you don't already know their meaning. The use of $old, $moved, $origin, and $dest should now be preferred, though I can't phase out the old way without rewrting lots of code. I have at least made the changes in the new fairychess settings file for Chess, so that they can be used going forward.


Game Courier. PHP script for playing Chess variants online.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sat, Feb 8, 2020 04:13 PM UTC:

It doesn't look like you've done anything to change how castling works, and by default, the rook will move to the other side of the King when castling. Note that changes to variables set in the include file should be made after it has been included. Otherwise, the values set in the include file will overwrite the values you've already set.


🕸💡📝Fergus Duniho wrote on Sat, Feb 8, 2020 01:50 PM UTC:

Show me an example of a preset with code that is not working as you want it to.


Game Courier History. History of the Chess Variants Game Courier PBM system.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sat, Feb 8, 2020 01:53 AM UTC:

I'm glad you like it. The changes I made to constants came about while I was working on the fairychess include file. Since I planned on using constants to associate piece labels with piece names, I wanted to avoid collisions between constants and variables with the same name. I did a grep search on the settings files and changed a few to use the @ sign instead. Just in case constants are used in presets that are defined in forms instead of settings files, or in case someone inadvertently uses # for constants in the future, I let it continue to be used that way but with lower precedence. Even without replacing # with @ in a few settings files, this would have been enough, because they normally did not use the same names for both variables and constants. But if I name constants after piece labels and also use short variable names in functions, collisions could arise. So, I wanted to separate the namespace between them.


Chess. Play Chess online with other people, using Game Courier, a PBM system that works with any web browser on any computer.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Fri, Feb 7, 2020 06:24 PM UTC:

The presets on this page now use newly designed fairychess code instead of Chess3, though existing games will not be affected by this. The fairychess include file is designed to be easily adapted for other games. Unlike Chess3, it identifies pieces by name instead of label, and it uses constants to associate labels with piece names. It also contains many more piece definitions, and I'll add more as need for them comes up. Just assign piece names to piece labels using constants. If you want to change the name of a piece, you can copy its functions (and subroutine if need be) to another name, then assign your constants to the new name. Here's an example of what could be done in Chinese Chess:

copyfn Chinese_Elephant Elephant;
copyfn Chinese_Elephant-Range Elephant-Range;
copyfn Chinese_Elephant Minister;
copyfn Chinese_Elephant-Range Minister-Range;
setconst e Elephant;
setconst E Minister;

Note that copying functions should be done after the file has been included, since it contains the functions to be copied. I'm not sure what to do about copying subroutines except to copy the whole code and change its name, but few pieces use subroutines.


Game Courier. PHP script for playing Chess variants online.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Fri, Feb 7, 2020 01:45 PM UTC:

You can enable flexible castling by adjusting the values of the wcastle and bcastle variables. Free castling involves the ability to more freely position the rook when castling, but if you also want to expand the spaces a king may move to while castling, you need to adjust the wcastle and bcastle variables. Since I can't think of any games I have programmed with free castling, I would have to see what you're doing to give you any further help.


Game Courier History. History of the Chess Variants Game Courier PBM system.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Fri, Feb 7, 2020 01:31 PM UTC:

I have modified how constant values can be included in code. In the past, a constant could be used by preceding its name with the # sign, just the same way that variables can be used, and constant names would have higher precedence than variable names. This helped keep the value constant when the name was used for a constant. But I have decided that this is a bad practice, because it interferes with a function's ability to count on its local variables having higher precedence than anything else with the same name.

So, I have made two changes. First, the @ sign may now be used in place of the # sign to get a constant value. This works only for constants, and its use will make it clearer that a given name belongs to a constant. Second, the # sign may still be used to return a constant value, but it now has lower precedence than variables with the same name. This will provide backwards compatibility so long as your variables and constants do not use the same names.


Bishop-Nightrider compound. Piece that moves like bishop or nightrider.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Thu, Feb 6, 2020 10:08 PM UTC:

Using the bash shell in Windows 10, I did a grep search on every issue of Variant Chess, and I didn't find any mention of Banshee. I did another search for Nightrider just to make sure I was doing it correctly, and I got a list of results. Since Jelliss's page is dated even later than Betza's and Paulowich's use of the piece, it's still unknown whether the piece goes back any further than Betza's game in 1995.


🕸Fergus Duniho wrote on Thu, Feb 6, 2020 06:48 PM UTC:

I found a link to All the King's Men in a guide by David Howe. Unfortunately, it just gives the name and description with no further information.


🕸Fergus Duniho wrote on Thu, Feb 6, 2020 04:39 PM UTC:

Betza's use is earlier than Paulowich's, but if it has been used in fairy chess problems, the invention would probably predate Betza. What is your source on the Banshee name and its use in fairy chess? I tried to look up Banshee in A Guide to Fairy Chess by Anthony Dickins, but it wasn't listed.


Game Courier. PHP script for playing Chess variants online.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Thu, Feb 6, 2020 04:28 PM UTC:

You shouldn't need to call them directly.  They are called from the Checked function if I recall correctly.

In the chess include file, they are used in the stalemated and checkmated subrroutines. To test for checkmate or stalemate, these subroutines calculate every possible legal move. When no legal moves are found, each of these two subroutines will return true. When any legal moves are found, they will return false. But instead of stopping with the first legal move, they will continue to calculate all legal moves, so that an array of legal moves can be created for use in displaying legal moves. To find all the legal moves for a piece, it checks whether each piece can make a legal move to each space that falls within its range of movement. That second function is used to create an array of destination spaces to check for legal moves to.

Zillions-of-Games will do things differently. It uses a single movement definition to calculate where a piece may legally move. Instead of knowing how a piece moves, the chess include file for Game Courier relies on knowing how to check whether a move was legal and on knowing which spaces it is worth the trouble to check for a legal move to. Although this requires two functions instead of one, the two functions will normally be simpler.


🕸💡📝Fergus Duniho wrote on Wed, Feb 5, 2020 03:07 PM UTC:

To quote from what I already wrote:

The other function has the same name with a capital L at the end

It looks like you named them correctly.


🕸💡📝Fergus Duniho wrote on Wed, Feb 5, 2020 02:22 AM UTC:

When using the capablanca include file, which uses the chess include file, you need to create two functions for each piece. One function has the same name as the piece label, and it tests whether a move is legal. The other function has the same name with a capital L at the end, and it returns all the spaces a piece might legally move to. You have not created this second function for your new pieces. The purpose behind this function to reduce the calculations needed to find out which spaces a piece may move to legally. Instead of testing for a legal move to every space on the board, it tests for legal moves only to spaces within the piece's range of movement. This saves time, and since things are done this way, it will not find potential legal moves for a piece unless this function has been defined.


Raven. Can move as a Rook or a Nightrider.[All Comments] [Add Comment or Rating]
🕸Fergus Duniho wrote on Mon, Feb 3, 2020 03:54 PM UTC:

I borrowed that piece from David Paulowich's Unicorn Chess.


Sign in to the Chess Variant Pages. Sign in to the Chess Variant Pages.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sun, Feb 2, 2020 08:52 PM UTC:

I have been unable to log in using the same credentials that worked three days ago. The loging page demends I enable cookies and I have done so for chessvariants.com (my browser is Firefox v72.0.2).

I just logged in on this page using the same version of Firefox. Maybe one of the extensions you're running is affecting something.

The login page also complains my adblocker, failing to detect that I have whitelisted this site (Adblocker Ultimate).

I don't use that ad blocker, but as a test, I just disabled uBlock Origin for this site, and I still got the adblocker detected message instead of an ad. In case it was a caching issue, I tried reloading with "Reload Skip Cache", but it didn't help. Looking over my extensions, I don't have any other ad blockers.

Other pages of the CVP correctly detect this and don't complain about the ad blocker.

Yes, I'm getting the same behavior. Maybe there is a bug in this page specifically. But I haven't been able to figure out what it is.

This page had <BASE HREF="http://www.chessvariants.org/login/login.php"> in the head part, and I just changed .org to .com.


Game Courier. PHP script for playing Chess variants online.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Sun, Feb 2, 2020 07:48 PM UTC:
Yesterday, I was issued a personal challenge that was automatically accepted. Wasn't given the option to decline invitation. Perhaps something to look into.

If this happens again, report the specific log and leave it alone, so that I can investigate it.


🕸💡📝Fergus Duniho wrote on Sun, Feb 2, 2020 07:44 PM UTC:

https://www.chessvariants.com/play/pbm/play.php?game=Chess+with+Different+Armies&log=pallab-cvgameroom-2006-64-786

In this game, I was white and I won the game. However the game courier shows that my opponenet won the game.

To be precise, it correctly shows that white won, but it says your opponent played white. Since the black player mentions being the inventor of Lions and Unicorns Chess, this confirms that David Paulowich actually played black, not white. Comparing the log for this game to one in which I knew who won, the $opponent was the last player to move, but in your log, the $player was the last player to move. I don't know why this happened, but it may be fixed, since the other log was more recent. So, I manually switched the values of $opponent and $player in your log, then had it self-correct itself so that the database should be updated now too.


Clockwork Orange Chess. Condition your opponent's pieces to be non-violent.[All Comments] [Add Comment or Rating]
🕸💡📝Fergus Duniho wrote on Wed, Jan 29, 2020 02:08 AM UTC:

Okay, that's now fixed.


Sign in to the Chess Variant Pages. Sign in to the Chess Variant Pages.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Tue, Jan 21, 2020 02:15 AM UTC:

The problem is probably that your email address is not receiving email from us, or it is going into your spam folder. If you can't find the email in your spam folder, try a different email address.


Game Courier Logs. View the logs of games played on Game Courier.[All Comments] [Add Comment or Rating]
🕸📝Fergus Duniho wrote on Sat, Jan 18, 2020 04:54 PM UTC:

Once again, the site was offline, and I booted it back up. This time, it was down for nearly 14 hours, and I discounted that much from interrupted moves.


changing email address[Subject Thread] [Add Response]
🕸Fergus Duniho wrote on Fri, Jan 17, 2020 09:28 PM UTC:

If that address won't receive the email for changing your email, then it won't receive other emails from us. If that's important to you, then I recommend using another address.


98 comments displayed

LatestLater Reverse Order EarlierEarliest

Permalink to the exact comments currently displayed.