Game Courier History
The PBM system is created by Fergus Duniho. It supports square and hexagonal boards in both ASCII and graphic formats. It enables email play of Chess variants by encoding the board configuration as FEN code, which it sends as an encoded URL along with other information, including a player's latest move. Games could be logged as clumsy html files. It functions only as an electronic version of a physical set. It lets players move pieces anywhere and does not enforce any rules.
During the Summer of 2003, the PBM system was completely overhauled. It gained many new features, changed the basic way it works, and got the name Game Courier. Here are the primary changes:
- Only registered members of Chessvariants.org can play games by email. Whenever you move, you have to enter your Chessvariants.org password to confirm your identity.
- The log format is completely changed, and all games are played through log files. The new log format is a list of variable assignments, similar to what was once encoded in URL's, but it can hold more information. Logs may be completely public, hidden, or password-protected.
- Players are identified in games by Chessvariants.org User IDs, not by email addresses. When the script needs to send you email, it will retrieve your address from a database.
- Instead of sending the move as the latest position + the last move, it sends the opening position + a list of all moves, including any comments a player sends with his move. This is useful for keeping track of your game.
- Since many new features break old games anyway, code for backwards compatibility with earlier versions has been eliminated.
- All moves are logged, and past moves can be taken back by branching off part of the movelist. So, whenever you take back a move, it shows up in the log. In tournament play, this has the advantage of letting you take back illegal moves while otherwise allowing you to enforce a no take-backs policy.
- The logging of moves also allows you to play in real-time. When you're waiting for your opponent to move, the PBM will regularly refresh until your opponent updates the log by moving. It will then alert you, show you the new position, and give you a form for entering your move.
- New board shapes and rendering methods have been added. Custom boards are available, and background images may be used for boards. New rendering methods include CSS for background images and absolute positioning of pieces, the generation of PNG images, and the generation of JPG images. It should now be possible to make presets for even the most unusual of boards.
- Game Courier can automate various features of games. It has been used to automate a rotating board for Motorotor. And it has been used for putting captured pieces in hand for Shogi and similar games.
- Game Courier can support dice, cards, and other random behavior. This has allowed it to support games like Vegas Fun Chess, which is played with Chess dice, Fischer Random Chess, which randomizes the initial setup, and Magic Chess, a game I am currently developing that makes use of Chess cards.
- Game Courier has gained sophisticated time controls. These may be finetuned for both short games played in real-time and long games played by email.
- Game Courier's automation language has become much more sophisticated, gaining features of regular programming languages, such as if-elseif-else, various functions, logic and math operators, and more.
- Game Courier has gained functions for checking the legality of moves. Automation code can now be written for enforcing the rules of games.
- Instead of copying the preset to each log, Game Courier can now use presets that are stored in separate files. This is useful for long code that enforces rules, because it saves bandwidth and disk space, and it allows debugging of complex code without interrupting ongoing games.
- Added three modes for printing a game. These are all accessed from buttons in View mode. The Print mode reduces clutter, displaying mainly just the board diagram and the move list. The PNG and JPG modes work the same as the Print mode, but they also force the rendering method to be PNG or JPG. These are useful when a game uses a rendering method that your printer has trouble printing accurately. They are also useful for getting a single image of a game's position.
- Automation code evolved into GAME Code programming language. Game Courier now frames moves and automation code as a complete computer program in GAME Code, and it functions as an interpreter for the GAME Code programming language. New features include functions, subroutines, control structures, and include files. These enhancements have allowed Game Courier to spot check, checkmate, and stalemate in many different games.
- Added GIF rendering method, because the GD library now allows creation of GIF files.
- Game Courier Ratings system added. This is a holistic method for estimating the relative playing strengths of players. It may be used for specific games, for all games in general, for groups of games, or for games played in tournaments. It can also be used on any game or only on officially rated games.
- Made boards display from the player's perspective whenever a player enters his userid. The previous behavior was to display the board from the perspective of whichever player's turn it was to move.
- Added a system variable for limiting the number of moves a player may enter.
- Added support in the ban command to ban types of moves.
Written by Fergus Duniho
WWW Page Created: 26 February 2006.