Check out Alice Chess, our featured variant for June, 2024.

The Chess Variants Game Courier FAQ

What is a preset?

A preset is a set of values for the different parameters that can be changed in Game Courier. The parameters control such things as board size and shape, piece positions, graphics used for boards and pieces, methods for rendering diagrams, and code for automating complicated moves or for enforcing rules. In brief, a preset is a set of parameters that define a particular game with a particular appearance. A preset is normally expressed as a set of default values and changes to the defaults. It may be provided as an URL to the play.php script with a query string or with a form.

What is a settings file?

A settings file is a PHP file that contains a new set of default values that override Game Courier's native default values. Game Courier defines default values with an array called $default. Although Game Courier gives this array a set of default values, a settings file changes the values of the default array, thereby creating a new set of defaults. So there are two kinds of default values. There are native defaults, and there are custom defaults. The native defaults are defined in the program, while the custom defaults are defined in a settings file. When it comes time to write a log, Game Courier enters into the log only those values that differ from the defaults. This saves space, and it allows automation code to be debugged without needing to touch individual log files.

What is the difference between a preset and a settings file?

When I first started working on what became Game Courier, it was a script that would display different boards and positions when fed different parameters. These parameters could be provided in a query string or in a form. I chose to call a collection of parameters a preset, because I was using this term when I was writing a synthesizer program for my Commodore 128 a decade earlier. On a synthesizer, a preset is the collection of settings that define a particular instrument sound. As I originally used the term with Game Courier, a preset was a collection of settings that defined a particular board and position. The diagram designer, which is based on Game Courier, still works like this today.

When I started developing Game Courier's programming language, GAME Code, and it finally became rich enough to handle rule enforcement, using presets alone was no longer adequate. A query string cannot contain a large computer program, and placing programming code in a form meant that the code would be duplicated in individual logs, which would make updating or debugging code more difficult than it needed to be. So, I added the ability to store parameters for a game in its own PHP file. This provided the space I needed for programming code, and it kept it in one central location, which made updating and debugging easier. Unlike a preset, which changed the default values of some variables, a settings file would change what the defaults were. This would reduce the parameters that had to be included in logs or individual presets. Instead of including every parameter that needs to be changed, a preset could contain just enough information to identify the settings file, which are the values for game and settings. Additionally, the same values could be used for multiple presets that run the same underlying code but differ in appearance.

What browsers can I use with Game Courier?

To fully make use of all its features, you will need a modern browser that handles JavaScript, CSS, cookies, and PNG images. It works very well in the latest versions of all the major browsers for Windows 10: Brave, Chrome, Edge, Firefox, and Vivaldi. It should also work well in these or related browsers on Linux, the Mac, and other versions of Windows. Although it makes use of features lacking in early browsers, it will let you move without JavaScript by entering the notation for a move, it can render boards as GIF or JPG images for early browsers like Mosaic or Netscape, and it can render boards as ASCII diagrams for Lynx, the text-based Unix browser. The main question these days is with mobile browsers. In my experience, it works well with Chrome on my iPad 2 or my Likebook Mars. But it is not working well with many Android browsers on my rooted Nook. The main cause seems to be that my Nook uses Android 2.1, a very early version of Android, and the latest versions of browsers expect features in later versions of Android.

Are there any known problems with specific browsers?

  • Moving by mouse or touch no longer works on some early browers that do not support a recent enough version of JavaScript. These include Safari 5.1.7., which is the latest version available for Windows, and the experimental browser on the Paperwhite 4.
  • If you're playing in real time, you will need the ability to play wave files with your browser. Internet Explorer has this ability built in, but Mozilla-based browsers (Netscape, Mozilla, and Firefox) require a plug-in. As long as your plug-in for playing wave files works, you should have no problems. But I am currently having a problem with Firefox, which is my main browser, because it isn't working with the Quicktime plug-in. This problem may well be specific to my computer and not exist for others. Firefox is a great browser, and I do recommend it despite this problem I am having with it.
  • Many mobile browsers have not been working well with Game Courier on my rooted Nook Simple Touch. This device runs Android 2.1, an early version of Android, and most of the browsers I've tried with it are the latest versions. I expect they have been designed with later versions of Android in mind, causing them to have bugs when running on an earlier version of Android.

    One particular mobile browser, UC Browser Mini, has a speed mode, which speeds up downloads by fetching compressed pages from a server, and which also rearranges webpages to focus more on text. Other mobile browsers have similar features. This kind of feature can cause problems for Game Courier if it changes anything on the page. On my tablet, on which I assume it is running bug free, speed mode disables the menu and the ability to move a piece to an empty space by touching it. With speed mode turned off, it works fine.

Does Game Courier use cookies?

Yes, Game Courier uses cookies. The cookies it uses are PHPSESSID, which keeps track of the PHP session, cvpuser, which keeps track of your userid, and landscape and portrait for remembering screen sizes on mobile devices, which it uses for fitting a diagram to the available space. The first two cookies are used not only by Game Courier but by other pages on our site. The first lets us use sessions to note whether you're logged in and to keep some information about you on hand for customizing the web pages served to you. The advantage of storing your information in a session is that it is kept protected on the server-side instead of being placed insecurely in cookies. But the use of sessions does require the use of a session cookie. The other cookie lets you log in more quickly by keeping track of your userid even when you're not logged in.

My opponent tells me he moved, but I didn't receive the email from Game Courier. What should I do?

To move, go find your game on the Logs page. Enter your userid in the Userid field and hit submit. It will show you your recent games, and it will provide a link for moving in any game for which it is your turn. The link will use your name as its link text, and it will show up under the "Next Move For:" column.

If you didn't see the email in your inbox, check your junk folder for it, if you have one. The email may have been stopped by a spam filter, perhaps because Game Courier forges email from your opponent's address. If you can, put your opponent's email address on a white list to prevent the email of his moves being interpreted as spam.

I didn't see my game on the logs page. How can I find it?

If it's not a publicly viewable game, it will not show up unless you also enter your password. Enter both your userid and password to see it.

If it's not a recent game, it may have been filtered out because of its age. Extend the maximum age allowed for the logs that show up.

If your game has finished, it will no longer show up among the ongoing games. Change the status filter to allow finished games to show up.

If it's still not showing up, make sure the Log and Game filters are both set to *.

What happened to the cvgameroom Yahoo group?

Yahoo stopped providing Yahoo groups. So, it no longer exists.

How do I resign a game?

Enter the word resign in the same place you normally enter your move. This is a command which will automatically change the game status to say that your opponent has won.

What has happened to the Status field?

I have hidden it. Many presets are now programmed to update the status automatically, and for those that aren't, there are commands available for updating it from the Moves field. If you have won a game, enter won to mark your victory. If you have lost a game, and your opponent has not already entered won, you should enter lost to mark your defeat. This functions the same as resign, but it should be reserved for losing normally, such as by checkmate, rather than for resigning.

What has happened to the second background field?

To better accomodate user customization, certain background images are now paired together in the code for the program. If the background image you chose has a pair, its pair will show up as the background image for the second player. If you create a set of paired background images, you should contact me about adding some lines to the code for pairing them together.

How do I convert a Zillions Rules File to GAME Code?

There is no straightforward way to do this, since the ZRF language and GAME Code are too dissimilar. You will have to know how to program in both languages, and it will generally be best to just program a game in GAME Code from scratch. That said, GAME Code does include the ability to use logical directions, which are the only type of directions available in Zillions-of-Games. In the developer's guide, look up map, link, logleap, logleaps, lograys, and logride. Using these may allow you to adapt some of the code from a ZRF.

Written by Fergus Duniho
WWW Page Created: 10 November 2004.