These are features scheduled for future 2.x releases. ---------------------------------------------------------------------- General Features - Enable the chat module, and base its interface on what TNT does - Merge chess-announce and chess-sound, and use style modules on top of the underlying module - Create a generic chess-output interface, for outputting games to a particular format (PGN, HTML, LaTeX, etc) - Display in the modeline which game in the database we're in, and what the positional evaluation is - Add a `force' event for forcing an engine to move, and a command from chess-display to send this event - If you are playing a puzzle game, and the engine is thinking, and you hit space to move to the next puzzle, then when the last move is finally received from the engine it causes an error. - Clean up chess.el, and let people override the chess-default-* lists - Write chess-descriptive.el, and have the code in general use chess-ply-to-string and chess-string-to-ply, so that users can use descriptive notationas an alternative to algebraic. - Write chess-html.el, for outputting a game to HTML - Write chess-latex.el, for outputting a game to LaTeX - Use TrueType or other chess fonts for displaying positions; this might be the best way of displaying positions on Windows - Change chess-announce/sound so that it reads from the text rendition of the move; this way it will work with either descriptive or algebraic notation. Also, chess-announce and chess-sound can be collapsed into one module, with different "styles" of announcing. - Write chess-epd.el, which is based on chess-fen, and is also a database module for accessing positions within an EPD file - Make ( create variations in a display, and keys to move into and out of them. At the moment, variations are supported programmatically, but not in the UI. - Make a display read-only mode, which allows people to view/browse but not alter a game. This could be used for remoting displays in order that people on other X servers might observe a game. - Implement the "50 moves after irreversible" draw rule in chess-ply - Port the code to XEmacs - Find a way to display pieces on Windows platforms, or at least document how to build XPM support into Emacs for Windows - Add a way to include the chess-ucb module in the list of default modules created via M-x chess. Right now there is no facility for having two engines associated with a single game (and chess-link is not what we want in this case). ---------------------------------------------------------------------- ICS Client - Add a completion function against logged in users - Copy some of ics.el's nicer functionality into chess-ics.el ---------------------------------------------------------------------- Chess by Mail - Add support for adjournments; also, implement this is such a way that an e-mail or postal game is basically a game that's adjourned after every move; use BBDB if available - Use MIME attachments (application/x-chess-pgn) for sending e-mail chess games back and forth. ---------------------------------------------------------------------- Database Interaction - Enable UI commands in chess-display to interact with databases. As of 2.0, this support is programmatic only. - Follow what `edit-env' does, in order to make chess-query.el. ---------------------------------------------------------------------- Training/Tutorials - Write a scripted chess-tutorial. - Allow the opponent to give hints. - Add a warning mode that will use the results of an analysis to warn the user (and ask for confirmation) before doing something that might lead to an inferior position. - Add a chess tutor program, to teach people how to play chess ---------------------------------------------------------------------- Analysis features - Add slots to each position for keeping track of positional evaluation (these values can be automatically determined when parsing ICS12) - Add an engine function for obtaining an evaluation of the current position. Then, allow M-x chess to startup a non-game oriented engine, solely for the purpose of submitting position evaluations, and displaying the result in the modeline. (Also, look at crafty's kibitzing feature). - Add a Map command, that will colorize the squares depending on whether they are reachable by either side. Green if reachable by you, Red if by your opponent, and blue if by both. With a prefix argument, colorize only the squares that have pieces on them. This is a stable modes that remains in effect until turned off. It also requires the ability to pass a color to the chessboard highlighting routine. - Using gnuplot-mode, allow evaluation trends to be plotted - Add an analyze command that will indicate which pieces are defended, how well, which are attacked, which moves would increase defense/attack/both, etc. Basically, everything that can be known about the current board, and one move ahead (on both sides). ---------------------------------------------------------------------- Other variations - Need a way to play bughouse/crazyhouse games. ---------------------------------------------------------------------- Other features - Keeping a player database in BBDB - Managing a tournament, setting up pairings, calculating ratings