xbattle concurrent multi-player battle strategy game Steve Lehar (slehar@park.bu.edu) Greg Lesher (lesher@park.bu.edu) DESCRIPTION This is patch 3.1 to be applied to version 3 of xbattle, by Greg Lesher, based on the original by Steve Lehar released earlier this year and including certain enhancements, modifications and bug fixes suggested by a number of contributers from all over the world. The new changes are outlined below. xbattle is a concurrent multi-player battle strategy game that captures the dynamics of a wide range of military scenarios. It is based on X windows, which you must have installed to run this game. Players play from separate displays, and commands are executed concurrently, i.e. the players do not take "turns", they all issue their commands simultaneously. There can be any number of players, and each player is assigned to a color team (or black, white & gray for monochrome monitors). The game board is a matrix of squares that can be occupied by colored troops, and the aim of the game is to eliminate the enemy from the board by attacking squares occupied enemy troops. If you are interested in the philosophical and game design issues of xbattle, or want to get immediate notice of the latest changes bugs, and bug fixes, send email to slehar@park.bu.edu or lesher@park.bu.edu and we will put you on the xbattle mailing list. INSTALLATION Version 3.1 of xbattle may be obtained by anonymous ftp from park.bu.edu, or by applying the patch to version 3.0 of the game. To apply the patch, cd to the directory ABOVE the one containing xbattle (called, presumably "xbattle"), copy the patch file to that directory, called, say, "patchfile3.1". Now type the command... patch xbattle < patchfile3.1 This will apply the patch to the entire directory of xbattle, patching each file in that directory as necessary. DIFFERENCES BETWEEN VERSION 3 AND VERSION 3.1 Added new option "-repeat" whereby you can repeat the last command using the right mouse. If for example your last command to a square consisted of a "move up" command by clicking near the top edge of the square, you can now command other squares to also move up by clicking in those squares with the right mouse. That way you no longer have to aim your click exactly at the top side of those squares, but can click the right mouse anywhere in that square, which saves time. This command is supported in biased games- i.e. it can be set for one team but not another. The "-repeat" option proved so useful that the paratroop and artillery commands (formerly done with the right mouse) have now been redefined so that paratroops are ALWAYS launched with "shift right mouse" (with or without "-guns") and that artillery is now ALWAYS fired with "control right mouse" (with or without "-para"). Alternatively, you can now command paratroops with the 'p' key, and guns with the 'g' key. Added new option "-bound", whereby commands can be made to apply to more than one square. This is achieved by defining a bounding rectangle within which the command is valid. For instance, to command a block of squares to all move up simultaneously, you place your mouse near the top edge of a square (may be unoccupied, or enemy occupied) and press the button (setting the command "march up", then you drag the mouse to another game square where you release the button. The start and end squares of the mouse drag define the opposite corners of a rectangle within which all the game squares occupied by your troops receive the command "march up". This command is also supported in biased games. Added a new way to quit the game activated by "control-w" (stands for "watch") whereby you lose all command of your troops but may watch the other players play out the rest of the game. When playing with any of the horizon options, all horizon restrictions disappear, and you can watch the dispositions of all the enemy troops on the board. Added new option "-march " whereby troops may be commanded to march in a particular direction and to continue in that direction without further commands. March commands are activated with shift left or shift middle mouse button. For example, if you click near the top edge of a square with "shift left mouse", the troops will begin to march up, and on arrival in the next square they will transfer the march command to that square so that they will continue marching upwards to the next square, and so forth. To prevent marching columns from travelling much faster than manually commanded troops, the march argument defines the number of game update cycles that the troops must wait in each new square before marching on to the next square, so that "-march 1" will result in a fast march, whereas "-march 10" will be slow. The "march command" is indicated on the game board by a double command vector (looks like an "=" sign) in the appropriate direction, and the march command is always passed on to the head of the column. March commands may be set in squares that are NOT occupied by your troops, (best done with "-grid") and will be activated when a marching column arrives in that square. This allows you to define turns in the path of the marching column to avoid obstacles. A "stop march" command may also be set to program the marching column to stop in that square. This is achieved by clicking "shift left mouse" in the center of that square, and will be displayed as an empty box in that square. When set with the left mouse, the march vector is overwritten on to existing command vectors encountered in the march path, whereas when set with the middle mouse the march vector removes and replaces existing command vectors. March commands are cancelled by clicking on the square without the shift key. March commands may be set in squares that are beyond the visible horizon in the normal way , and will appear as a double vector in that square so long as that square is not a "sea" square. If the target square contains invisible enemy troops, then the march command vectors will appear initially, but disappear again as soon as the enemy is approached close enough to be visible. March commands are specific to the team that sets them, and different march commands may be set by different teams in the same game square. The double command vectors are visible only to the team that sets them. Added option "erode " which limits the longevity of game squares that belong to you but in which there are no troops. Normally, a passing column of troops leaves behind it a "supply line" of command vectors that can be used any time in the future to send further troops along the same path, and the game board eventually becomes cluttered with such supply lines, many of which are no longer active. With "-erode " such disused supply lines will begin to erode away stochastically with time 10* update cycles after the time of the last occupation. Changed color map loading to add the xbattle colors to the existing color map, rather than creating a new color map altogether. With this change the other windows on your display do not disappear when you move your mouse into the xbatle window. For systems whose color maps are pretty much full, this feature can be de-activated by setting NEWCOLORMAP to TRUE in global.h. Changed the text line so that instead of sharing two text lines between all the teams, each team is given a single text line. This change is also a compile time option, you can revert to the old system by setting MULTITEXT to FALSE in global.h. Modified the "-rbases" option (when used with horizon) so that all randomly placed bases are placed out of view of other enemy bases. fixed bug in sea option which caused sea argument to be ignored at times. Fixed scuttle/build bug with towns. (Used to always rebuild towns to full sized bases) Fixed font initialization bug. Changed test for 8 bit plane displays- it now tests for "at least" 8 planes, i.e. for displays with > 8 planes it uses 8, not 1. COPYRIGHT Copied from the GNU Emacs 'copyleft' policy. Basically, you are free to copy, modify and distribute this program as long as you do not sell it or use it in a product that you sell. COPYING POLICIES 1. You may copy and distribute verbatim copies of xbattle source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy a valid copyright notice "Copyright (C) 1991 Steve Lehar" (or with whatever year is appropriate); keep intact the notices on all files that refer to this License Agreement and to the absence of any warranty; and give any other recipients of the xbattle program a copy of this License Agreement along with the program. You may charge a distribution fee for the physical act of transferring a copy. 2. You may modify your copy or copies of xbattle source code or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains or is a derivative of xbattle or any part thereof, to be licensed at no charge to all third parties on terms identical to those contained in this License Agreement (except that you may choose to grant more extensive warranty protection to some or all third parties, at your option). c) You may charge a distribution fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another unrelated program with this program (or its derivative) on a volume of a storage or distribution medium does not bring the other program under the scope of these terms. 3. You may copy and distribute xbattle (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal shipping charge) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs. 4. You may not copy, sublicense, distribute or transfer xbattle except as expressly provided under this License Agreement. Any attempt otherwise to copy, sublicense, distribute or transfer xbattle is void and your rights to use xbattle under this License agreement shall be automatically terminated. However, parties who have received computer software programs from you with this License Agreement will not have their licenses terminated so long as such parties remain in full compliance. NO WARRANTY BECAUSE XBATTLE IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE XBATTLE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL STEVE LEHAR OR ANY OTHER PARTY WHO MAY MODIFY AND REDISTRIBUTE XBATTLE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY STEVE LEHAR) THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.