Game Courier User's Guide
Game Courier is a web-based system for playing games with other human opponents on-line. It lets you play by email or in real-time. It can also be used for playing a game by yourself, for displaying annotated games, and for setting up fairy chess problems. This guide describes the things you can do with it and how to do them.
- First Things First: Get a Userid
- How to Start a Game
- How to Join a Game
- How to Change the Appearance of Your Game
- How to Play a Game by Email
- How to Play a Game in Real-Time
- How to Log an Email Game
- How to Play in Solitaire Mode
- How to Move with the Mouse
- How to Enter a Move Manually
- Piece Labels
- Algebraic Coordinates
- Moving with the - (hyphen) operator
- Dropping pieces with the * (asterisk) operator
- Entering complicated moves with the ; (semicolon) operator
- Entering inline comments with the // operator
- Commands for Card Moves
- How to Take Back a Move
- What to do when your Opponent Makes an Illegal Move
- How to Resign from a Game
- How to Record or Annotate a Game and Put it on a Webpage
- How to View a Game
- How to Do Fairy Chess Problems
- How to Compose and Publish a Fairy Chess Problem
First Things First: Get a Userid
The first thing you must do before using Game Courier to play games is to get a Chess Variant Pages userid. If you don't already have one, follow this link to get one:
When you sign up, you will have to verify your identity. You can do this by first signing in with an OpenID or through email verification. Getting and keeping a userid is completely free. Game Courier uses userids and passwords for identity verification. This allows games to be stored in publicly viewable logs without letting anyone else move in your place. Identifying you by userid also lets Game Courier keep your email address safe from spammers. Instead of storing your email address in its logs, it stores only your userid, using it to retrieve your address from our database. Besides being used for playing Games with Game Courier, a userid can also be used for posting comments on pages and voting in polls.
How to Start a New Game
To start a new game, you should select a game, go to its preset, then issue an invitation. The Games for Game Courier page will help you find the various games you can play on Game Courier. It features a small selection of the over 600 games Game Courier supports, and it provides links to browse through the rest. After you select a game, you will have to select a preset. Most games have only one preset, but some games offer you a choice. After you select a preset, it will show you the board with a set of buttons beneath it. Click on the "Invite" button. This will bring you to a form for inviting someone. Fill out the form and click "Invite" again.
Two Types of Invitations
You may issue a personal invitation or an open invitation. A personal invitation is directed to a single person. You should identify your intended opponent by his CVP userid. If you don't know this, you may use his CVP personid or his email address instead. As long as you use a userid or a personid, only your intended opponent will be able to accept your invitation. When someone lacks a userid, your only option may be to use your intended opponent's email address. But when you use an email address, no safeguards will be set up to stop someone else from accepting the invitation. In this case, you may wish to hide your game from public view, so that no one else will know of the invitation.
Setting Time Controls
There are two main ways of timing a game. One way is to time the whole game, and the other way is to time each move. Game Courier allows both ways of timing a game, and it allows for various combinations of these two methods. Giving a set amount of time for the whole game makes most sense for games played in realtime at one sitting, as face-to-face games usually are. But Game Courier is designed mainly for correspondence games between people who play on different schedules or from different time zones. For this type of play, giving each player a set amount of time for the whole game would give an advantage to the player with a more convenient schedule. For example, if one player was in a slightly later timezone than the other, he could routinely make the last move of the day, causing the other player to lose time while they both slept. This can be fixed by giving a fixed amount of time after each move that includes enough time for sleeping and other daily activities that may delay making a move. The main disadvantage to giving a fixed amount of time after each move is that it is not flexible. You get flexibility by giving each player a pool of time for the whole game. This allows a player to have more time when he needs it and rewards a player for moving quickly. To gain both the fairness needed for correspondence play and the flexibility to take more time when needed, it helps to use both types of time control.
Game Courier allows you to use both types of time control together. When you do, it starts the time per move clock first, and when that runs out, it starts the time for the whole game clock. Time per move is called Grace Time, because this is intended as a grace period in which you can move without losing any time. Time for the whole game is called Reserve Time, because you use this only when you run out of Grace Time. As long as you move within the grace period set by Grace Time, your Reserve Time is held in reserve. While there is only one setting for Grace Time, there are several for Reserve Time.
For time controls to work, each player must have a positive amount of Grace Time or Reserve Time. Grace Time is given with the Grace Time setting. To give each player Reserve Time at the beginning of the game, you must use either Spare Time or Min Time. Spare Time is the initial amount of Reserve Time given to each player. Min Time is the minimum amount of Reserve Time a player will have after each move. If Reserve Time is ever below the minimum when it is time for a player to move, his time is first raised to the minimum before the clock starts. Using Min Time by itself would work just like using Grace Time by itself, giving each player a fixed amount of time per move. The only difference would be which clock is being used, and that makes a difference only if you set Reserve Time with other controls.
Extra Time is an amount that is added to Reserve Time after each move. It is sort of like collecting $200.00 each time you pass Go in Monopoly. If you set Spare Time and Extra Time to the same amount, and you set no other time controls, then it combines the ideas of time for the whole game with time per move. You get time on a per move basis, but you can keep what you don't use up and use it when you need to take longer on a later move.
Bonus Time is an amount added to your Reserve Time when you complete your move within a certain Bonus Period after the expiration of any Grace Time. The Bonus Period should be set to zero if you want to give a bonus simply for moving within the Grace period. While Extra Time and Bonus Time both add to Reserve Time on a per move basis, Bonus Time is better at enforcing a strict pace, because it gives additional time only to players who are moving quickly enough.
Max Time is the maximum amount Reserve Time is allowed to get up to. This is a failsafe in case combinations of time controls inflate the Reserve Time of each player. A maximum of zero is understood as no maximum at all, since infinity cannot be entered, and a zero maximum would be useless.
Pace is a pace to keep to prevent your Reserve Time from falling below the initial value set by Spare Time. The Pace is measured in terms of moves per period of time. Each player's pace will be measured in terms of how many moves he has made divided by how long the game has lasted. Therefore, the pace kept by one player will affect the pace kept by the other player, and each player will keep a similar to pace to the other. This seems faulty, because the pace of each player will mainly be determined by the pace of the slower player. So this is now deprecated. Code for this will be kept for backwards compatibility with games using it, but it will be left off the time controls available for new games.
How to Join a Game
To join a game, you should accept an invitation offered by someone else. This should be an invitation directed to you personally or an open invitation. If the invitation has been sent to you personally, you should have received an email with a link for you to follow. But even if the email failed to reach you, you should see a link to the game when you view your games on the logs page. If you belong to the mailing list that an open invitation has been sent to, you should receive an email about it. Since most open invitations go to The Chess Variants Gameroom, this is the mailing list you want to join if you want to be regularly notified of new open invitations. You may also find a list of all currently open invitations on the logs page. Whenever you follow the "Your Games" link from one of your own games, you will find the current open invitations listed along with your own games. However you learn of an invitation, you can accept it by following the link for accepting it, fill out the form with your userid, password, and which side you want to play, then click on the "Accept" button. After you do this, it will notify your opponent that the invitation has been accepted, and if you chose to move first, it will immediately give you the opportunity to make your first move. Otherwise, it will notify your opponent that he is to move first.
How to Change the Appearance of Your Game
Even before you begin playing, you may wish to change the board or pieces to something more to your liking. In the form you use for making your move, you will find some form fields for changing the appearance of your game. Which form fields you see may vary from game to game. Here are the various fields you may see:
You can use the Piece Set field to select a different set of pieces than the one you currently see. Click the "Preview" button to see the new piece set. Note that you will be able to change your piece set only if multiple piece sets have been mapped to the same pieces and grouped together. Some presets use a unique set that is not mapped to the same pieces as any other set.
When Game Courier draws the board, it will let you choose which colors it uses to draw the board. Colors may be entered as six-digit hexadecimal numbers or by name. Compare the colors you see listed with the colors of the board to tell which color is for what. Or just experiment with changing colors until you get something you like.
When Game Courier draws a hexagonal board as an HTML table, it lets you select colors from a more limited pallette. You must enter colors by name, and these are your choices: red, green, blue, orange, yellow, indigo, violet, cyan, magenta, black, white, firebrick, olivedrab, and royalblue. Nowadays, it is rare that you will ever play a game that uses the Hex Colors field, because it is better to display hexagonal boards as single images, and this allows you access to the full pallette of the Colors field.
This field lets you choose whether Game Courier will render the board with an HTML Table, images overlayed with CSS code, or as a single graphic image (JPG, GIF, or PNG). The CSS method requires the use of a graphic image for the board. The others may draw the board from scratch, though the JPG, GIF, and PNG methods can also make use of a graphic image for the board. If you have broadband, PNG is a good choice for any board. If you use dialup, JPG is good for boards with many colors, and GIF is good for boards with only a few colors.
This field lets you choose the background image used for the board. To use an image for your board, it must be rendered with CSS code or as a single graphic image (JPG, GIF, or PNG). When your board is rendered as an HTML Table, the value of this field will be ignored.
This field will let you resize the board when it is drawn as a single graphic image. The number in this field is the percentage of its normal size that it should be drawn in. This value will not affect the size of boards drawn as HTML Tables or with CSS. This field is mainly useful for reducing the size of the board when the full-size board will not fit on your monitor.
How to Play a Game by Email
Whenever your opponent moves, the log will be immediately updated, and you will be sent an email notification that it is your turn. But you don't have to rely on getting email to know that it is your turn. You may instead go to the Logs page to find out whether it is your turn. In case you are playing any games that are not publicly viewable, you will need to enter your userid and password on the logs page to see all of your games. To move, first follow the link to your game. This link will be on the logs page, and it will also be in the email sent to you. You should then view your opponent's move, enter your own move, click the "Preview" button, then view your move. Then, if you entered the move you intended, you should confirm your move by giving your password and clicking the "Send" button. This will email the move to your opponent, who will then follow the same procedure. Whenever it is not your turn, you will be able to view the board, but you will not be able to move. The log of your game will keep track of whose turn it is, allowing each player to move only on his own turn.
How to Play a Game in Real-Time
If you and your opponent wish to play a game in one sitting, Game Courier will accomodate you. After you make a move, click the "Continue" button to return to the game. While you wait for your opponent to move, the page will periodically refresh itself. Once your opponent does move, this will be recorded in the log. Since the page reloads the log upon each refresh, it will be able to notify you when your opponent has moved. Once it is your turn again, the page will gain focus, which moves it in front of other windows, it will emit an audible beep, and it will show you your opponent's move and tell you that it is now your turn. The beeping sound will be continuous if your brower supports the EMBED tag. This is to better alert you in case you've stepped away from your computer. You can stop it by clicking on the stop button of the plug-in that will show up on the page. You then make your move, return to the game, and wait for your opponent's next move.
How to Log a Game
All games are automatically logged. A logname will be automatically generated for you. The log is a list of PHP variable assignments that includes such things as board and piece set parameters, the userids of both players, a record of whose turn it is, and a list of all moves and comments made during the game. The logfile cannot be accessed directly. Instead, it is read by Game Courier, which makes use of the variables to display the game and enable you to play it.
How to Play in Solitaire Mode
Besides playing against an on-line opponent, you may play a game with yourself, or you may use Game Courier to play a game with someone in the same room. You would do this by playing in solitaire mode. From the main menu for a preset, click on the "Move" button. Then make one move at a time. Since you don't send any moves in solitaire mode, you don't go through the extra step of verifying your move. Once you make a move, it shows you your move and lets you make your next one. If you did make the wrong move, you can correct it by using the Back button on your browser to return to the previous page.
Although this mode does not log games, it does retain a record of all your moves within each page it generates. You may, at any time, go from this mode to the Record mode, from which you can retrieve all your moves in a manner that you can include on a webpage to let others view your game.
How to Move with the Mouse
Here's a video demonstrating how to move with the mouse:
How to Enter a Move Manually
You can make a move, or even a complex series of moves, by entering it in the Moves field. Technically, all moves are written as programming code in the GAME Code programming language. But this is not as forbidding as it sounds. Most moves are written with a very small subset of this language, using nothing more than piece labels, algebraic coordinates, a couple operators, and the occasional semicolon. In general, moves should simply be written as explicit algebraic notation, such as "P e2-e4". When a preset is not automated in any way, every move must be written explicitly. For example, a King-side castle for White would be written as "K e1-g1; R h1-f1". But more and more presets are being programmed for rule enforcement and the automation of some complex moves. For example, in the presets programmed to enforce the rules of Chess, the same castling move would be written as "K e1-g1", and the preset would automatically move the Rook. Most often, in such presets, castling and en passant are automated. Other presets automate events that don't happen in Chess, such as putting a captured piece in hand in Shogi. In general, a programmed preset should include a "Notation" section that explains any special notation you need to know for the game. Otherwise, you should write out any move explicitly.
Although it will not recognize shortcuts like "e4" for "e2-e4" or "Nc3" for "N b1-c3", Game Courier's notation is more powerful than regular algebraic notation. It allows six basic operations, half of which are never used in Chess. Five are performed with the hyphen operator, and the sixth is performed with the asterisk operator. Furthermore, it allows you to enter very complicated moves by using the semicolon operator to string together simple moves. In Chess, this ability would be used for castling, en passant, and promotions. In other Chess variants, this ability has many different uses. Besides its three operators, Game Courier also recognizes various commands. Most commands are intended for automation and rule enforcement and are covered in the Developer's Guide. Commands for playing with cards are covered futher below.
Every piece is identified by a piece label, and to make your moves easier to read, it is recommended that you place the appropriate piece label before each move. Piece labels are most frequently individual upper and lower case letters. Piece labels are case-sensitive, with uppercase normally being used for White pieces and lowercase normally being used for Black. For example, in Chess, the piece labels for White's pieces are K, Q, R, B, N, and P, and those for Black's pieces are k, q, r, b, n, and p. Other pieces will normally have other labels, and which label is used for a piece will depend upon the set of pieces used. This allows the same letter to be used for different pieces in different games, such as C/c for the Champion in Omega Chess and also for the Cannon in Chinese Chess. Some pieces will have longer labels. This is necessary for games with more than 26 different kinds of pieces, such as Xorix Shogi. To find out what labels are used to identify pieces in a game, you can hover your mouse over the piece on the board, consult the rules displayed underneath the board, or consult the display of pieces at the bottom of the page for your game.
Almost every board uses algebraic coordinates. On most boards, file and rank labels are displayed along two edges. The default is for letters to indicate the files and for arabic numerals to indicate the ranks, though this can be changed for individual games. The main thing to remember is that each coordinate is in file-rank format. For example, a1 means the coordinate at file a and rank 1. In Shogi, which does not use the defaults, 1a means the coordinate at file 1 and rank a, and a1 is not a coordinate. By putting together a positions file and rank, you get the coordinate for the space. One method of creating a board uses special labels for spaces, but most methods enforce the use of algebraic coordinates. Regardless of how a board's coordinates are defined, each position is known by a particular label. This label can be seen in the ALT text that shows up when you let the mouse pointer hover over it. No labels should ever contain spaces. For example, a1 is a valid coordinate, but "a 1" is not.
Moving with the - (hyphen) operator
The hyphen is the most commonly used operator. All moves in Chess require it, and so do all moves in most variants. The hyphen can be used for five basic operations. Three of these are moving, adding, and removing a piece. The remaining two are adding and removing a space.
To move a piece, write its starting coordinate, a hyphen, and its destination. For example,
e2-e4 indicates the King Pawn opening in Chess. Any time a piece moves, its starting position is emptied, and it replaces whatever was in the space it moves to. Contrary to the more usual algebraic notation, the hyphen is used for both capturing and non-capturing moves. The letter x, along with the entire alphabet, is reserved for identifying pieces used in Chess variants.
To add a piece, write the letter for the piece, a hyphen, and the destination. For example,
N-f3 places a Knight on f3. If this is your first move in Chess, it will give you a third Knight, because this notation is not used for moving a piece from one place to another. This operation is commonly used for handling promotions. Adding a piece always replaces the contents of the space you add a piece to. It will not add multiple pieces to the same space. Although it is analogous to dropping a piece, as is done in Shogi, the asterisk operator, described further below, is better suited for that task.
There are two ways to remove a piece. One is to drop an at-sign, @, on the space, as in
@-f3, because the internal code uses an at-sign to represent an empty space. The other way is to move a piece nowhere, as in
f3-, because moving a piece always removes it from its starting position.
To add a space where there wasn't one, you can either add a piece there, which will automatically add a space too, or you can just drop an empty space on the location. You can do this by using the @ sign to represent an empty space. For example,
@-a9 would add a new empty space at the location a9.
To remove a space, move nothing to it, as in
-f3, which tells the program that neither a piece nor an empty space should occupy location f3.
There is also some primitive move checking. When you specify both the piece and the starting coordinate in a move, as in
N g1-f3, it will check whether there is an N on g1. If there isn't, it will notify you that it couldn't make the move, asking you to go back and try again. Note that piece labels are case sensitive, and your pieces are normally the opposite case of your opponent's. Since Game Courier will not always check the legality of a move for you, it will generally be good practice to write your moves in this slightly longer format, because it will help keep you from making moves you didn't mean to make. It will also make it easier for your opponent to see what your move was. For parsing purposes, this notation requires a space between the piece and its coordinate. It would not know what to do with something like
Dropping pieces with the * (asterisk) operator
The asterisk operator, *, is used to drop a piece held in hand onto the board. This task is done with information provided through automation. When a preset has been programmed to automatically process captured pieces, the command used for moving the captured piece to an off-board location also identifies what the off-board locations are. To use the asterisk operator, you should enter the notation for the piece, an asterisk, and the destination. For example, b*5e would drop a Black Bishop on 5e. It will then search the off-board areas for a piece of the specified sort and move it from its off-board location to the designated destination. If it cannot find a piece of the type designated, it will return an error message and not complete the move. Although it was designed for use with Shogi, it is not limited to dropping a piece on an empty space. It may drop a piece even on an occupied space. It is left to a rule-enforcing preset to prevent this in games where it is illegal.
Entering complicated moves with the ; (semicolon) operator
To handle special moves, such as castling or en passant, you are allowed to string together move primitives into a single move. Separate each move primitive by a semicolon. Here are some examples of special moves. Note that automated presets may eliminate the need for entering some of these moves so explicitly. Check with the individual preset you're using to know which special moves it automates for you.
|King-side Castling||K e1-g1; R h1-f1|
|Queen-side Castling||K e1-c1; R a1-d1|
|Pawn promotes to Queen||P f7-f8; Q-f8|
|En passant||P f4-g3; p g4-|
|Rook merges with Knight as Marshall, as in Fusion Chess||R a1-b1; M-b1|
|Knight moves away from Marshall at b1, leaving Rook behind, as in Fusion Chess||N-c3; R-b1|
|2. Nf3 follows 1. e3, d6 in Magnetic Chess||N g1-f3; P e3-a3; p f7-f4|
|In Voidrider Chess, a Voidrider moves its space from b1 to d1||V b1-d1; -b1|
When you string simple moves together into a complicated move, you should know that each simple move is performed sequentially. Remember, this is all actually programming code, and programming code is normally performed sequentially. Two different simple moves are never performed simultaneously. Thus, if you were to swap two pieces, it would not be enough to move each piece to the other's location. One of the pieces would disappear this way. For example, on a board setup like the initial position in Chess, "e1-d1; d1-e1" would first move the King to d1, causing the Queen to go away, then move the King back to e1. Instead of swapping King and Queen, it would just remove the Queen. Instead of this, you should use something like "K e1-d1; Q-e1" to swap the King and Queen.
Entering inline comments with the // operator
After you write a move, you may use the same field to include an inline comment. Unless it gets too long, this comment will appear on the same line as the move in the movelist, which will allow your opponent to read it without clicking on the movelist. To enter an inline comment, first enter two slashes, //. This symbol is commonly used in some programming languages, such as C++ and PHP, for inline comments. Everything appearing after the two slashes will be understood to be a comment rather than part of the move. So don't begin writing your comment before you finish writing your move. You ought to put a space before the two slashes, so that they won't be interpreted as part of a previous string. Inline comments are most useful for short game-related comments, such as calling check or providing an alternate notation for your move. Note that you don't need to use the // operator to enter comments in the Comments field.
You should never enter a short inline comment without preceding it with the two slashes. If what you type is not recognized as a move, your move won't go through, and you will get an error message. If it does get recognized as a move even though that wasn't your intent, it will probably do something that you do not want. So always precede inline comments with a pair of slashes.
Commands for Card Moves
Game Courier now allows you to make use of cards in your games. The main purpose behind this is to allow us to play games similar to Knightmare Chess and Chaos Chess online. These are games that make use of cards to alter the rules of the game. There is a deck of playing cards, made by Oxymoron, which are available for use under the GNU Public License. In time, I expect we can come up with other sets of cards. Here are the commands you can use in the Moves field to use cards:
- deal #
- Returns all cards to the deck, shuffles the deck, and deals out a specified number of cards to each player. This command should normally be used in the pregame automatic move, but it can also be useful during the course of some games.
- discard C1 ... Cn
- Discards a list of one or more cards from a player's hand, identified by short abbreviations for the cards. The playing cards use two letter abbreviation in rank/suit form. All lowercase, a is for ace, 2-9 for Two through Nine, t for Ten, j for Jack, q for Queen, k for King. Clubs, Diamonds, Hearts, and Spades are c, d, h, and s. For example, ad for Ace of Diamonds. Each card goes into the discard pile in the order listed. The last card listed will show up on the top of the discard pile. You cannot discard cards that are not in your hand.
- displace C1 ... Cn
- Removes listed cards from display area and put into discard pile. See the "place" command below.
- draw # [discard]
- By default, draw a specified number of cards from the top of the main deck, putting each in your hand. If the main deck runs out of cards, this command dumps the discard pile into the main deck, reshuffles it, and then continues to let you draw cards. If the keyword "discard" follows the number of cards, cards are drawn from the discard pile instead of the main deck. If the discard pile runs out of cards, you just can't draw anymore from it.
- load cards <name>
- Load the named deck of cards from the server. This needs to be used only once, normally in the pregame automatic move. You need to use this command before you try to do anything else with cards. Otherwise, you will have no cards to do anything with. The "cards" keyword is required in case I wish to extend the use of "load" in the future. At present, the only available deck is known as "oxymoron" after its designer. So put "load cards oxymoron" in the pregame automatic move to use it.
- place C1 ... Cn
- Put cards in a permanent display area. This is intended for continuing effect cards, such as are used in Knightmare Chess. I don't know if it would be useful for the usual card games.
- play C1 ... Cn
- Lets you play cards in your hand. All played cards go into the discard pile. This command differs from discard by showing your opponent images of the cards you played.
- shuffle cards
- Shuffles the main deck of cards. The "cards" keyword is required, because without it, the shuffle command is used for shuffling the contents of spaces on the board.
In case you're wondering how this is possible, here's how. The game stores its own seed, based on the time when the game begins. This seed guarantees that the same sequence of random numbers is generated during the course of the game. So, when you load a log that your opponent has saved, it generates all the random numbers it generated for your opponent. Thus, it shuffles the cards in the same way, and deals out the same cards. By saving the seed, there is no need to save any record of the cards in the logs.
How to Take Back a Move
To take back a move, first go back to the last move your opponent made before the move you want to take back. You do this with the dropdown menu below the diagram. Select the move to go back to, then click on the Preview button. If the move to take back is yours, make a different move now. If the move to take back is your opponent's, repeat your last move, allowing your opponent to redo his response to your last move.
What to do when your Opponent Makes an Illegal Move
Since Game Courier does not let anyone move except the person whose turn it presently is, you must move before your opponent can correct an illegal move. Therefore, you should not simply notify your opponent by email and wait for him to correct it. He will be unable to correct it until you move. What you should do is go back to your opponent's last legal move, repeat the move you made after that move, use the comment area to tell your opponent that his move was illegal, and send your move, which makes it your opponent's turn again.
How to Resign from a Game
To resign, enter the resign command as your move. This is just the word resign.
How to Record or Annotate a Game and Put it on a Webpage
In brief, you can use Game Courier to record and annotate a game, then get code that you can put on a webpage to share your annotated game with others.
First, click on the "Record" button to enter Record mode. In the top field, enter a brief description of your game. In the second field, enter moves and annotation. Put each move on a single line, and put all moves in order. You may place a turn number before each move. This will make it easier for another person to read, though the script will not factor this into its move calculations. Adding turn numbers will merely be for the convenience of your readers. You could enter a game without any turn numbers, and the script will be okay with that. Typically, the first two moves should be labeled "1.", the next two "2.", and so on, because each turn has one move by each player.
After any move, you may insert comments, typically annotations to your moves. The script recognizes the symbol // and anything following it on a line as a comment. This style of commenting is common to the programming languages C++ and PHP. It is appropriate to put short comments on the same line as the move. This is useful for brief annotations and for providing the reader with more descriptive notations of each move, since the script itself uses a very bare bones notational system. You may also put a comment on its own line. When you do this, put any comments about a move after the move, because the script will associate any comments immediately after a move with that move. It is alright to enter blank lines, because these will be treated the same as comments.
It is also possible to include alternate lines of play in an annotated game. This is useful when you want to examine moves that someone could have made but didn't. To introduce an alternate line of play, place a vertical bar, the | symbol, at the very beginning of the line. Include the bar at the very beginning of every line and comment in the alternate line of play. When you want to return to the previous line of play, stop adding the bar to the beginning of your line. You may include multiple alternate lines of play on the same move by nesting lines of play or by punctuating lines of play at the same level. To nest lines of play, add another bar for an alternate line of play that occurs in an alternate line of play. You may do this indefinately, adding as many nested lines of play as memory will allow. You may also separate alternate lines of play at the same level by punctuating them with a blank line or comment at a lower level.
To check your work, you can click on the "View" button to view the game you are recording. If you check nothing else, look at the last move of the game and make sure it matches the final position of pieces in the game, as originally played. If you include multiple lines of play, it is also important to test the termination of each line of play. When you are finished testing, use the Back button on your browser to go back to the game you are working on.
When you are ready to insert your game on a web page, click on the "Get Code" button to get the HTML code you should place on your webpage. By placing this code on your webpage, you will provide your readers with a record of the game that can be read from your webpage, as well as viewed move-by-move with the aid of the PBM script. As it appears on your webpage, your game will appear in one or two READONLY TEXTAREA boxes, along with a SUBMIT button that says "View". There may be a box with a brief description, and there will always be a box listing the moves in the game.
How to View a Game
When someone provides a sample game, as described in the previous section, or a game is listed on the Logs page, you may use Game courier to view it. Begin by clicking on the button or link for viewing the game. This will take you to a display of the game in its starting position, or to the problem with the solution hidden. You will be provided with a menu of all the moves. For a game, the first move will automatically be selected for you. Whenever you view a move in a game, the next move will be selected in the menu. At the opening of the game, this is the first move. This is to make it easier for you to move through the game just by clicking on the "View" button. Whenever you select a comment instead of a move, you will be shown the move associated with that comment. When you view a game, you will not be able to edit anything. All you will be able to do is navigate through it.
You can find an example of an annotated game on my page for Voidrider Chess.
How to Do a Fairy Chess Problem
Depending on your background, you may be familiar with Chess problems or Shogi Tsumi. These give you a position in a game and a task to complete, such as checkmating Black in three moves, what would be called a mate-in-three. The same thing can be done with any Chess variant. In general, the field of Chess variant problems is known as fairy chess, and it includes not just problems for variants that people actually play together but also for sets of rules people don't actually play games with. Game Courier allows you to compose fairy Chess problems (see below), and you can go to the Problems index to view and solve the problems published on this site.
How to Compose and Publish a Fairy Chess Problem
You can compose problems for any of the Chess variants you can play on Game Courier, and the problems you compose will be listed in the Problems index. To start, find a game and click the Compose button. You can do this from the main preset for a game or from a position in a game you are viewing a log of. This will bring you to the problem composer. Here, you can change the board position, set the stipulation for the problem, describe it, select whose turn it is, and enter a solution. You can change the board position by entering new FEN code or by moving pieces manually. You can move pieces with the mouse or enter commands for moving pieces. Once you have the position you want, have entered the stipulation and who should move, you should enter the solution. Click on the Move button when no fields have been changed. This will bring you to where you can enter the solution by moving pieces. Once you have finished the solution, click the Compose button to go back to the problem composer, and from there enter your userid and password if need be and click the Publish button. This will store your problem on the website, and it will be accessible from this page.
Written by Fergus Duniho
WWW Page Created: 11 August 2003.