NOW A COMPUTER CHESS PROGRAM (DRAFT) Imagination Enterprises Mark Lefler December 1991 Version 0.1 Introduction NOW is a state-of-the-art (?) computer chess playing program for the IBM-PC line of computers. NOW will work on any 8088, 80286 or 80386 machine with CGA, EGA or VGA displays. For text only displays, the program will use a simple text only representation of the board instead of the fancy graphics. NOW is not a profit making program. Funds received on this shareware program are used to pay duplication costs, salaries of a business manager and to buy new development hardware. Your contribution will help develop a stronger, more feature-filled program. End of commercial. NOW did rather well in the 1991 Microcomputer Chess Championship. It finished with the best score for an amateur program running on a PC with only M-CHESS beating it on a PC. Other programs which beat NOW ran on very fast RISC-based processors, much faster than NOW's 40 MHz 80386 machine. NOW is not meant to compete with other powerful commercial programs, such as M-CHESS, ZARKOV or Chessmaster 2100. It is simply a shareware option. You will find that NOW has some pretty nifty features, such as an easy-to-use user programmable opening book. You can even help me in developing a stronger program (See the COMPUTER GEEKs section later on). How strong is NOW? I really do not know. In my testing, it has easily beaten many commercial stand alone chess machines, when played on my 40 MHz 80386 computer. I know that NOW seems stronger than: Fidelity Designer 2000 Radio Shack Chess Champion 2150 and 1450 Saitek's Cavalier and other, less strong programs. Based on its strength against other commercial chess computers, I estimate its playing strength at about 1500 on a PC, 1600 on a turbo PC, and higher on faster hardware (perhaps 2100 on a 33 MHz 80486). NOW also does rather well in some standard computer chess problems. NOW was named since it is the program I am working on now. GETTING STARTED Note that some keyboards mark the key with a label or a bent arrow pointing to the left. Just substitute for in the instruction below. You can copy NOW to a hard disk. Just make sure to copy all of these files over to the other disk: NOW.EXE (The program itself) NOW.BOK (NOW's opening book) NOW.HLP (NOW's help file--this manual on disk) CGA.BGI (For CGA graphics) EGAVAG.BGI (For EGA or VGA graphics) You can give friends copies of this version of NOW, provided that these instructions stay with the copies and you charge absolutely no fee. Imagination Enterprises retains all overseas distribution rights to NOW. USING NOW Load NOW by typing: NOW You have several options. If you include an 'X' after the program name, you will see "extra" information while NOW runs such as the program's current best move and number of positions searched. You can get a list of these options using: NOW ? from the command line. MAKING MOVES To play white, just type in your moves using algebraic chess notation (Column, Row). For example, to move the king's pawn two spaces forward, type: e2e4 You do not need to press to finish your entry of a move. To play black, see the section Switching Sides below. If you have a mouse, then just point to the piece you want to move, and click and release the left mouse button. Next point to the square you want to move it to and click again. You must load your Microsoft Mouse compatible driver before beginning the NOW program (see the instructions that came with the mouse). The program will ignore from clicks on pieces you cannot move. Who's Move Is IT? It is easy to see who is to move next by looking at the chess clocks in the upper right corner of the screen. You will see a > symbol next to the side about to move. For example, >W:You 3:45 B:NOW 2:23 means that it is now your move, you are playing white (W) and you have taken 3:45 of time when you last made a move. In the lower right corner is the elapsed time you have taken so far on this move. This will be added to the total elapsed time once you make a move. Special Moves Enter castling moves by moving the king two squares (the rook will tag along). En-Passant moves are entered by moving the pawn--the opponent's pawn will be taken off for you. When a pawn reaches the eight rank, you will be asked to select a new piece (N-Knight, B-Bishop, R-Rook or Q-Queen). If the board gets messed up, the d command will redisplay the entire board. Do not remove the disk while NOW is running since NOW needs to get and save information on the disk while it is running. SWITCHING SIDES To switch sides (for example, to play black), type: s The program will change sides, and immediately begin thinking of a response. Using the EDITOR and the S command, you can enter chess problems and have NOW look for a solution. You may also want to use the Reverse Board (rb) command to turn the board around. REVERSING THE BOARD You can reverse the board (rotate it) by typing: rb You may want to do this if you are playing black. GETTING HELP You can press f1 or ? to get a screen of help information. To return to the game, press ESC. If you would like to read the online manual, press any other key. You can also get help by clicking the mouse on the f1-help label in the upper right corner of the screen. FORCING NOW TO MOVE You can force NOW to make a move immediately by pressing the ESC key while NOW is calculating. SAVING A GAME (POSITION) To save a current game position, type: sg You will then be prompted for a name to call the saved position. sg is short for save game. You will find that the game save format is easy for a human to read, and can be imported into text files or printed out for a record of your moves. This format is based on the format that a very powerful commercial chess program called ZARKOV uses. LOADING A GAME (POSITION) To load back in a game, type: lg then the file name. 'lg' is short for load game. SETTING THE TIME With NOW, there are four different time modes. You can set the Average Time per move, play a traditional Tournament Time controlled game, play with Equal Times or set the total Game Time for each side. The current default is 300 seconds for the entire game--good for speed chess games. Note that NOW will not call for a win (or make obnoxious beeps at you), if you go over time. In each of these modes, you can enter times in seconds (like: 36), or minutes and seconds (like 1:00) or hours, minutes and seconds (like 2:00:00). To set the average time per move, type: t (or at) and enter the new time. SETTING TOTAL GAME TIME You may also set the total time each side has for a game by typing: gt then entering the time like above. For example, for a one hour per side game, you could enter 3600 or 1:00:00. For a 5 minute per side game enter 300 seconds or 5:00. NOW will try to play all of its moves before this time limit expires (sudden death mode). EQUAL TIME MODE You can have NOW take approximately the same amount of time to make its moves as you do by using the Equal Times command: et NOW will try to match your time per move. This is a good mode to use if you are not sure how long you are going to take for each move of the game. TOURNAMENT TIME MODE To set tournament time control, use: tt NOW will make its first 40 moves within 2 hours, and each additional 20 moves within an additional hour. SETTING THE CHESS CLOCKS You can set the elapsed Human Time (chess clock) by typing ht. Then give the total human elapsed time. You can set the current Computer's Elapsed Time using ct. TURNING THE BEEPER/MUSIC ON AND OFF To turn the Beeper on and off, type: b If the beeper is OFF, NOW will make a quiet click instead of a loud beep. To turn the music on or off use the No Music toggle: nm EXTRA INFORMATION To display or stop displaying the "Extra" information, type: x This will show somewhat cryptic information about the computer's search for a move, including its guess at the game continuation, search depth, score for the position, number of positions (nodes) examined and so on. You may find this inside analysis useful in examining master level games. The score NOW shows is based on how well it thinks it is doing. A positive score means that NOW thinks it is ahead. a Pawn is worth about 1, and Rook about 5 and so on. Score about 80 or below -80 mean a mate is coming up soon. M in 5 means NOW thinks it can mate you in 5 or fewer moves. You will find more about the Extra command in the COMPUTER GEEKS section. QUITTING OR STARTING A NEW GAME To quit the game or start a new game, type: q You will be asked if you want to save the current game. NOW will always save the current game to another file called NOW.GAM-- just in case you wish to continue the game again later. You also may use the - key to undo the last move, in case NOW has mated you and you want to try another move. You will then be asked if you want to play another game. Y will give you a new game, and N will stop the program. EDITING THE BOARD POSITION To Edit a board position or setup a chess problem, type: e You can move the bright square to the desired location using the arrow keys or by clicking the mouse, then type the following to place the pieces: p - pawn n - knight b - bishop r - rook q - queen k - king (Note only one king per side) You should always position the kings first. NOW will warn you if you try to put another piece on top of the king. You can Switch to the other color by using s. The last side changed to will be the color you will have from then on in the game, or until you switch sides. A SPACE will delete a piece on the board. Make sure the current displayed To Move color is set to the color you want to move next (you can use s on an empty square), then press ESC to get out of edit mode. When you exit edit mode, NOW assumes you want to move next. If you want NOW to begin calculating, use the s-switch sides command described above. TAKING BACK A MOVE To take back a move use the - (minus) key or type: un If NOW is calculating a move, you must first press ESC to force it to move. Then press - to undo NOW's last move, and - again to undo your last move. You can backup the game all the way to the beginning, if you want. The "tb" (Take Back) command will take back a full move for each side. THE GAMES FILE While NOW runs, it will store information about your games in a file named 'GAMES'. You can delete this file if you wish, or use it to keep a record of your games against NOW. To get a printout of this file, from DOS type: copy GAMES prn You can also get e printout of the current game from within the program by using the save game (sg) command. Simply save to the printer by giving prn for the file name. COMMENT MODE You can also add comments to the GAMES file while using NOW. Just type c and you will be prompted for your comments a line at a time. Just press on a blank line when you are done entering comments. The comments will be added to the GAMES file. NO COMPUTER RESPONSE MODE If you do not want the computer to make a response to your moves, then type: nc for No Computer. Another nc will reset the computer so it will respond after you make a move, or type s to switch sides. You can use this mode to have the computer act as a referee, since it will not allow any illegal moves. It is also useful in entering a series of move, for example to have NOW analyze Master games or games you have played. Make sure to turn off No Computer when you want NOW to play against you again. SETTING COLORS You can set the colors of pieces and squares using the following commands: wc - White Piece Color bc - Black Piece Color dc - Board Dark Square Color lc - Board Light Square Color In each case, you will need to enter a number for the new color you want. Use 0-3 for CGA and 0-15 for EGA/VGA. Some color combinations may make pieces vanish so be careful. The default color set on EGA/VGA is the classic white and black pieces on a green and beige board used in real tournaments--I can't stand the purple and orange combinations used in some programs, but I give you the choice to change them. The changes are automatically stored in the NOW.SET file, for the next time you run NOW. THE OPENING BOOK To turn on or off the opening book, type: ob Unlike most commercial programs, NOW stores actual positions in its opening book. This lets NOW find all possible transpositions very quickly. You can't fool NOW by making the some position using a different series of moves. NOW has a very neat feature, where you can add more positions to the opening book. To do this, make the moves on the on screen board (Hint: the nc, no computer replay mode makes this easy). Next type: ap to Add the Position. You will be asked for a score for that position. Enter a number from -100 to 100. Higher numbers mean that the program will think the position is better for the side which just moved. You can change the score of a position in the opening book by using cs (Change Score). By carefully changing scores, you can encourage the program to play certain specific openings. Just use the nc mode to make the moves and change the score with cs. NOW currently will store about 4500 positions in its opening book. Future version will allow bigger user books. If you want to delete a position from the book, use the dp command--but you should make sure you keep a copy of the old book file (NOW.BOK) just in case. REPLAYING A GAME You can have NOW "rewind" and replay a game using the Replay Game command: rg The board will be restored to the starting position. Each time you press +, NOW will make one more move in the game. You can stop the replay at any time by pressing ESC. You might want to do this if you wish to play from one position in a different way to see what would happen. You can have NOW play each move in an animated fashion by pressing a. MAKING NOW PLAY WORSE If NOW plays too good for you, you can greatly reduce its playing ability two ways: 1. Set the average time (t command) to about 5 seconds or less. The less time NOW has to think, the poorer it will play. 2. Set the search depth to a small number by typing: sd then enter a small number, like 1 or 2. This will limit the depth NOW searches. MATE SEARCH MODE NOW has a special Mate Search mode. This mode will force NOW to look only for mates. Turn on Mate Search by typing: ms You will also want to set the time you want now to search using the Average Time (at) command above. To get NOW to begin calculating, use the s Switch Sides command. Make sure to use ms to turn off Mate Search if you want to resume normal play. NOW will stop searching when its per move time limit is reached, or when it Search Depth limit is reached, so to search for deep mates, make these numbers big. FOR COMPUTER GEEKS ONLY Warning! This section goes into hairy technical detail and may cause neural damage! Read with care! For the computer chess geeks among you, NOW uses the Alpha-Beta algorithm with selective search extensions. On AT's and faster machines, it typically searches 5-6 plies. This version of NOW includes more selectivity and extensions for certain types of moves than earlier versions. NOW is written in Turbo Pascal, with a few lines in assembly for speed. Here is what some of the Extra info mentioned above means: 5/03/35 - means that NOW has examined up to the third move out of 35 in the fifth ply of its search. Of course some moves like checks and captures are examined more deeply than this. 3567 n/s - means that NOW examined about 3500 nodes (positions) each second while selecting its last move. 34343 - means NOW examined about 35,000 nodes when making its last selection. 235456 mvs - means that NOW generated this number of moves in its search (but only serached the number above). The line of moves found on the right edge of the screen on EGA/VGA screens it the principal variation found the last time NOW computed a move. The current principle variation will be found below the clocks, along with an estimate of NOW's current score. The GUESS: e2-e4 line indicates that NOW thinks you will play e2-e4 on your next move. It tries out this move and calculates a response for it while you are deciding on your move. You can help make NOW more powerful by using a secret feature called "Auto Testing". To do this, you must make a special .BAT file like thise: :START NOW -z 10 -ds 3 -sm1 5 -sm2 10 -sm3 20 NOW -z 10 -ds 2 -sm1 10 -sm2 20 goto START Don't worry. I will explain all of these number to you. This file should be called something like AUTO.BAT. This file will automatically start up the versions of NOW, one after the other and have them play against each other. The results of the match will be put in the file CHESS.TST. This file will contain a listing of winners or DRAW for each game played. By using the USCF rating formula, you can calculate which program is strongest, and by how much: Rating = 400 * (# wins - # losses)/# games Now for the numbers after NOW above: -z 10 means to autoplay with an average of 10 seocnds per move. -ds 3 means to use a selective depth of 3. Higher this number, the more moves that are thrown out, at the benefit of a deeper search but at the risk of throwing out a possibly good move. -sm1 5 means use a Selective Margin of 5 for depth 1. The smaller this number, the more moves are thrown out. The bigger this number, the fewer moves are thrown out. Here are some reasonable starting numbers: NOW -z 5 -ds 3 -sm1 5 -sm2 5 -sm3 50 If you come up with better numbers, let me know so I can improve the program. You should play at least 100 games in each round to eliminate statistical variations. You can get NOW to log all of the moves in file by using the -lg command. For instance: NOW -z 5 -lg FRED will have NOW make a move, and store info about this move in the file named FRED. I want to thank the author of the wonderful program ZARKOV (John Stanbeck) for his suggestions about auto testing. Buy his program! QUESTIONS/COMMENTS/HOW TO SEND MONEY NOW is still under development. To report a bug, give me comments and program suggestions or make a contribution towards its development, write to: Imagination Enterprises 11877 Mintwood Ct. Orlando, FL 32837 Make checks payable to Imagination Enterprises. The suggested contribution is $20, or the entire contents of your wallet. A special, faster IBM-AT/386 version is available from the same address. Please specify 3.5" or 5 1/4" disk. You can contact Imagination Enterprises with the address: IMAGINE on GeNIE.