From 20926a222a5fbb659af2893f6e6544a4f800aeee Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Thu, 29 Mar 1990 23:24:30 +0000 Subject: [PATCH] Initial revision --- vms-empire.6 | 675 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 675 insertions(+) create mode 100644 vms-empire.6 diff --git a/vms-empire.6 b/vms-empire.6 new file mode 100644 index 0000000..f194d6f --- /dev/null +++ b/vms-empire.6 @@ -0,0 +1,675 @@ +.\" $Id$ - (c) Copyright 1987, 1988 Chuck Simmons */ +.\" +.\" Copyright (C) 1987, 1988 Chuck Simmons +.\" +.\" See the file COPYING, distributed with empire, for restriction +.\" and warranty information. +.\" +.TH Empire 6 +.SH NAME +empire -- the wargame of the century +.SH SYNOPSIS +empire [-w water] [-s smooth] [-d delay] +.SH DESCRIPTION +Empire is a simulation of a full-scale war between two +emperors, the computer and you. Naturally, there is only +room for one, so the object of the game is to destroy +the other. The computer plays by the same rules that you +do. +.TP 10 +.BI \-w water\^ +This option controls the amount of water on the map. +This is given as the percentage of the map which should +be water. The default is 70% water. \f2water\fP +must be an integer in the between 10 and 90 inclusive. +.TP +.BI \-s smooth\^ +This controls the smoothness of the map. A low value +will produce a highly chaotic map with lots of small +islands or lakes. A high value will produce a map +with a few scattered continents. Be forewarned that +a high value will cause the program to take a long +time to start up. The default value is 5. +.TP +.BI \-d delay\^ +This option controls the length of time the computer will +delay after printing informational messages at the top of +the screen. \f2delay\fP is specified in milliseconds. The +default value is 2000 which allows the user two seconds to +read a message. +.SH EXAMPLES +empire -w90 -s2 +.P +This produces a map with many islands. +.P +empire -w50 -s0 +.P +This produces a really strange map. These values +are not recommended for the faint at heart. +.P +empire -w10 +.P +This produces a map with lots of land and a few lakes. +The computer will have a hard time on this sort of map +as it will try and produce lots of troop transports, +which are fairly useless. +.SH INTRODUCTION +Empire is a war game played between you and the user. The world +on which the game takes place is a square rectangle containing cities, +land, and water. Cities are used to build armies, planes, and ships +which can move across the world destroying enemy pieces, exploring, +and capturing more cities. The objective of the game is to destroy +all the enemy pieces, and capture all the cities. +.P +The world is a rectangle 60 by 100 squares on a side. The world +consists of sea (.), land (+), uncontrolled +cities (*), computer-controlled cities (X), and cities that you +control (O). +.P +The world is displayed on the player's screen during +movement. (On terminals with small screens, only a portion of +the world is shown at any one time.) +Each piece is represented by a unique +character on the map. With a few exceptions, you can +only have one piece on a given location. On the map, you +are shown only the 8 squares adjacent to your units. +This information is updated before and during each of your moves. +The map displays the most recent information known. +.P +The game starts by assigning you one city and the +computer one city. Cities can produce new pieces. Every +city that you own produces more pieces for you according +to the cost of the desired piece. The typical play of the +game is to issue the Automove command until you decide +to do something special. During movement in each round, +the player is prompted to move each piece that does not +otherwise have an assigned function. +.P +Map coordinates are 4-digit numbers. The first two +digits are the row, the second two digits are the +column. +.SH PIECES +The pieces are as follows: +.P +.TS +center box tab(;); +l | c | c | r | r | r | c. +Piece;You;Enemy;Moves;Hits;Str;Cost +_ +Army;A;a;1;1;1;5(6) +Fighter;F;f;8;1;1;10(12) +Patrol Boat;P;p;4;1;1;15(18) +Destroyer;D;d;2;3;1;20(24) +Submarine;S;s;2;2;3;20(24) +Troop Transport;T;t;2;1;1;30(36) +Aircraft Carrier;C;c;2;8;1;30(36) +Battleship;B;b;2;10;2;40(48) +Satellite;Z;z;10;--;--;50(60) +.TE +.P +The second column shows the map representation for your +units. +.P +The third shows the representations of enemy units. +.P +Moves is the number of squares that the unit can move in a +single round. +.P +Hits is the amount of damage a unit can take before it +is destroyed. +.P +Strength is the amount of damage a unit can inflict upon an +enemy during each round of an attack. +.P +Cost is the number of rounds needed for a city to produce +the piece. +.P +The number in parenthesis is the cost for a city to +produce the first unit. +.P +Each piece has certain advantages associated with it that +can make it useful. One of the primary strategic aspects +of this game is deciding which pieces will be produced +and in what quantities. +.P +\f3Armies\f1 can only move on land, and are the only piece that can +move on land. Only armies can capture cities. +This means that you must produce armies in order to win the +game. Armies have a 50% chance of capturing a city when they +attack. (Attacking one's own city results in the army's +destruction. Armies that move onto the sea will drown. +Armies can attack objects at sea, but even if they win, they +will drown.) Armies can be carried by troop transports. +If an army is moved onto a troop transport, then whenever +the transport is moved, the army will be moved with the +transport. You cannot attack any piece at sea while on a +transport. +.P +\f3Fighters\f1 move over both land and sea, and they move 8 squares +per round. Their high speed and great mobility make fighters +ideal for exploring. However, fighters must periodically land +at user-owned cities for refueling. A fighter can travel 32 +squares without refeuling. Fighters are also shot down if they +attempt to fly over a city which is not owned by the user. +.P +\f3Patrol boats\f1 are fast but lightly armored. Therefore +they are useful for patrolling ocean waters and exploring. +In an attack against a stronger boat, however, patrol boats +will suffer heavy casulties. +.P +\f3Destroyers\f1 are fairly heavily armored and reasonably quick +to produce. Thus they are useful for destroying enemy transports +which may be trying to spread the enemy across the face of the +world. +.P +When a \f3submarine\f1 scores a hit, 3 hits are exacted instead of 1. +Thus submarines can inflict heavy damage in a fight against +heavily armored boats. Notice that healthy submarines will +typically defeat healthy destroyers two-thirds of the time. +However, a submarine will defeat a fighter about two-thirds +of the time, while a destroyer will defeat a fighter three-fourths +of the time. +.P +\f3Troop transports\f1 are the only pieces that can carry armies. +A maximum of six armies can be carried by a transport. +On any world containing a reasonable amount of water, +transports will be a critical resource in winning the game. +Notice that the weakness of transports implies they need +protection from stronger ships. +.P +\f3Aircraft carriers\f1 are the only ships that can +carry fighters. Carriers carry a maximum of the number +of hits left of fighters. Fighters are refueled when they +land on a carrier. +.P +\f3Battleships\f1 are similar to destroyers except that they are +much stronger. +.P +\f3Satellites\f1 are only useful for reconaissance. They can not +be attacked. They are launched in a random diagonal orbit, and +stay up for 50 turns. They can see one square farther than other +objects. +.P +All ships can move only on sea. Ships can also dock in a +user-owned city. Docked ships have damage repaired at the +rate of 1 hit per turn. Ships which have suffered a lot +of damage will move more slowly. +.P +Because of their ability +to be repaired, ships with lots of hits such as Carriers and +Battleships have an additional advantage. +After suffering minor damage while destroying enemy shipping, +these ships can sail back to port and be quickly repaired before +the enemy has time to replenish her destroyed shipping. +.P +The following table gives the probability that the piece listed +on the side will defeat the piece listed at the top in a battle. +(The table assumes that both pieces are undamaged.) +.P +.TS +center box tab(;); +l | c | c | c | c | c | c | c | c. +;A;F;P;D;S;T;C;B +_ +A;50%;50%;50%;25%;33%;50%;13%;10% +F;50%;50%;50%;25%;33%;50%;13%;10% +P;50%;50%;50%;25%;33%;50%;13%;10% +D;75%;75%;75%;50%;33%;75%;27%;17% +S;67%;67%;67%;67%;50%;67%;40%;20% +T;50%;50%;50%;25%;33%;50%;13%;10% +C;88%;88%;88%;73%;60%;88%;50%;29% +B;90%;90%;90%;84%;80%;90%;71%;50% +.TE +.P +Notice, however, that when a ship has been damaged, the odds of +being defeated can go up quite a bit. For example, a healthy +submarine has a 25% chance of defeating a battleship that has +had one hit of damage done to it, and a healthy submarine has +a 50% chance of defeating a carrier which has suffered two hits +of damage. +.SH "MOVEMENT FUNCTIONS" +There are a variety of movement functions. The movement functions +of pieces can be specified in user mode and edit mode. +Cities can have movement functions set for each type of piece. +When a movement function for a type of pieces is set for a city, +then every time that type of piece appears in the city, the piece +will acquire that movement function. Be forewarned that moving +loaded transports or loaded carriers into a city can have undesirable +side effects. +.P +Normally, when a movement +function has been specified, the piece will continue moving according to +that function until one of the following happen: +.TP 5 +.B * +An enemy piece or unowned city appears next to the piece. In this case +the piece will be completely awoken, unless its movement function has +been set to a specific destination. +Armies on ships and pieces inside +cities will not be awoken if the enemy piece is gone by the time it is +their turn to move. +.TP +.B * +You explicitly awaken the piece. +.TP +.B * +The piece can no longer move in accordance with its programmed function. +In this case, the piece will awaken \f2temporarily\fP. You will be asked +to move the piece at which time you may awaken it. +.TP +.B * +The piece is a fighter which has just enough fuel (plus a small reserve) +to get to the nearest city. +In this case, +the piece will awaken completely, unless its movement function has +been set to a specific destination, or its movement function has been +set to \f2land\fP. +.P +The rationale behind this complexity is that fighters must be awoken +completely before they are out of range of a city +to prevent one from accidentally forgetting to waken the +fighter and then watching it fly off to its doom. However, it is presumed +that when a path is set for the fighter, the fighter is not in danger of +running out of fuel. +.P +Pieces do not completely awaken when their function has been set to a +destination because it is slightly time consuming to reset the destination, +but very simple (one keystroke) to wake the piece. +.P +The movement functions are: +.TP 10 +.B Attack +This function applies only to armies. When this function is set, +the army will move toward the nearest enemy city, unowned city, or +enemy army. This is useful when fighting off an invading enemy or +taking over a new continent. When an army is set to this mode, +it will also explore nearby territory. This tends to make +the "grope" movement mode pretty useless. +.TP +.B Awake +When pieces are awake, you will be asked for the direction in which +the piece should move on each turn. +.TP +.B Fill +This function applies to carriers and transports. When this function is +specified, these ships sleep until they have been filled with fighters or +armies respectively. +.TP +.B Grope +This function causes a piece to explore. The piece heads toward the nearest +unseen square of the map on each of its moves. Some attempt is made to +explore in an optimal fashion. +.TP +.B Land +This function applies to fighters and causes the fighter to head toward +the nearest transport or carrier. +.TP +.B Random +This movement function causes a piece to move at random to an adjacent +empty square. +.TP +.B Sentry +This movement function puts a piece to sleep. +The function of a city cannot be set to 'sleep'. +.TP +.B Transport +This movement function only works on armies. The army sleeps until +an unfull transport passes by, at which point the army wakes up and +boards the transport. +.TP +.B Upgrade +This movement function only works with ships. The ship will move +to the nearest owned city and remain there until it is repaired. +.TP +.B +Pieces can be set to move in a specified direction. +.TP +.B +Pieces can be set to move toward a specified square. In this movement +mode, pieces take a shortest path toward the destination. Pieces moving +in accordance with this function prefer diagonal moves that explore +territory. Because of this, the movement of the piece may be +non-intuitive. +.P +As examples of how to use these movement functions, typically +when I have a new city on a continent, I set the Army function of the +city to \f2attack\f1. Whenever an army is produced, it merrily goes off +on its way exploring the continent and moving towards unowned cities +or enemy armies or cities. +.P +I frequently set the ship functions for cities that are far from the +front to automatically move ships towards the front. +.P +When I have armies on a continent, but there is nothing to explore +or attack, I move the army to the shore and use the \f2transport\f1 +function to have that army hop aboard the first passing transport. +.SH COMMANDS +There are three command modes. The first of these is "command mode". +In this mode, you give commands that affect the game as a whole. +In the second mode, "move mode", you give commands to move your +pieces. The third mode is "edit mode", and in this mode you can +edit the functions of your pieces and examine various portions of +the map. +.P +All commands are one character long. The full mnemonic names are +listed below as a memorization aid. +The mnemonics are somewhat contrived because there are so few +characters in the English language. Too bad this program isn't +written in Japanese, neh? +.P +In all command modes, typing "H" will print out a screen of help +information, and typing will redraw the screen. +.P +.SH COMMAND MODE +In command mode, the computer will prompt you for your orders. +The following commands can be given at this time: +.TP 10 +.B Automove +Enter automove mode. This command begins a new round of movement. +You will remain in move mode after each of the computer's turns. +(In move mode, the "O" command will return you to command mode +after the computer finishes its next turn. +.TP +.B City +Give the computer a random unowned city. This command is useful if you +find that the computer is getting too easy to beat. +.TP +.B Date +The current round is displayed. +.TP +.B Examine +Examine the enemy's map. This command is only valid after the computer +has resigned. +.TP +.B File +Print a copy of the map to the specified file. +.TP +.B Give +This command gives the computer a free move. +.TP +.B J +Enter edit mode where you can examine and change the functions +associated with your pieces and cities. +.TP +.B Move +Enter move mode for a single round. +.TP +.B N +Give the computer the number of free moves you specify. +.TP +.B Print +Display a sector on the screen. +.TP +.B Quit +Quit the game. (Note that your game will be saved in 'empsave.dat' +after each command you give, and after each move you make.) +.TP +.B Restore +Restore the game from empsave.dat. (Currently, this command is useless +since the game is restored when the program first starts up, and the +game is saved after each move.) +.TP +.B Save +Save the game in empsave.dat. (Currently, this command is useless +since the game is saved after each of your commands and after each move.) +.TP +.B Trace +This command toggles a flag. When the flag is set, +after each move, either yours or the computer's, +a picture of the world is written out to the file +'empmovie.dat'. \f3Watch out! This command produces lots of +output.\f1 +.TP +.B Watch +This command allows you to watch a saved movie. +The movie is displayed in a condensed version so that +it will fit on a single screen, so the output may be +a little confusing. This command is only legal if the +computer resigns. If you lose the game, you cannot replay +a movie to learn the secrets of how the computer beat you. +Nor can you replay a movie to find out the current positions +of the computer's pieces. When replaying a movie, it is +recommended that you use the \f2-d\f1 option to set the delay +to around 2000 milliseconds or so. Otherwise the screen will be +updated too quickly for you to really grasp what is going on. +.TP +.B Zoom +Display a condensed version of the map on the screen. The user map is +divided into small rectangles. Each rectangle is displayed as one square +on the screen. If there is a city in a rectangle, then it +is displayed. Otherwise enemy pieces are displayed, then user pieces, +then land, then water, and then unexplored territory. When pieces are +displayed, ships are preferred to fighters and armies. +.SH MOVE MODE +In move mode, the cursor will appear on the screen at the position +of each piece that needs to be moved. You can then give commands +to move the piece. Directions to move are specified by the +following keys: +.P +.fp 5 TT +.ft 5 +.nf + QWE + A D + ZXC +.fi +.ft 1 +.P +These keys move in the direction of the key from S. The +characters are not echoed and only 1 character is +accepted, so there is no need for a . Hit the +bar if you want the piece to stay put. +.P +Other commands are: +.TP 10 +.B Build +Change the production of a city. +.TP +.B Fill +Set the function of a troop transport or aircraft carrier to +\f2fill\f1. +.TP +.B Grope +Set the function of a piece to \f2grope\f1. +.TP +.BI I dir +Set the direction for a piece to move. +.TP +.B J +Enter edit mode. +.TP +.B Kill +Wake up the piece. If the piece is a transport or carrier, +pieces on board will not be awoken. +.TP +.B Land +Set a fighter's function to \f2land\f1. +.TP +.B Out +Cancel automove mode. At the end of the round, you will +be placed in command mode. +.TP +.B Print +Redraw the screen. +.TP +.B Random +Set a piece's function to \f2random\f1. +.TP +.B Sentry +Set a piece's function to \f2sentry\f1. +.TP +.B Transport +Set an army's function to \f2transport\f1. +.TP +.B Upgrade +Set a ship's function to \f2upgrade\f1. +.TP +.BI V "piece func" +Set the city movement function for the specified piece +to the specified function. For example, typing "VAY" would +set the city movement function for armies to \f2attack\f1. Whenever +an army is produced in the city (or whenever a loaded transport +enters the city), the army's movement function +would be set to \f2attack\f1. +.TP +.B Y +Set an army's function to \f2attack\f1. +.TP +.B ? +Display information about the piece. The +function, hits left, range, and number of items on board are +displayed. +.P +Attacking something is accomplished by moving onto the +square of the unit you wish to attack. Hits are traded +off at 50% probability of a hit landing on one or the +other units until one unit is totally destroyed. There +is only 1 possible winner. +.P +You are "allowed" to do \f3fatal\f1 things like attack your +own cities or other pieces. If you try to make a fatal +move, the computer will warn you and give you a chance to +change your mind. +.P +You cannot move onto the edge of the world. +.SH EDIT MODE +In edit mode, you can move around the world and examine pieces +or assign them new functions. +To move the cursor around, use the standard direction +keys. +Other commands are: +.TP 10 +.B Build +Change the production of the city under the cursor. +The program will prompt for the new production, and you +should respond with the key corresponding to the letter of the piece +that you want produced. +.TP +.B Fill +Set a transport's or carrier's function to \f2fill\f1. +.TP +.B Grope +Set a piece's function to \f2grope\f1. +.TP +.BI I dir +Set the function of a piece (or city) to the specified direction. +.TP +.B Kill +Wake all pieces at the current location. If the location is a city, +the fighter path will also be canceled. +.TP +.B Mark +Select the piece or city at the current location. This command +is used with the "N" command. +.TP +.B N +Set the destination of the piece previously selected with the "M" +command to the current square. +.TP +.B Out +Exit edit mode. +.TP +.BI Print sector +Display a new sector of the map. The map is divided into +ten sectors of size 20 by 70. Sector zero is in the upper-left +corner of the map. Sector four is in the lower-left corner of +the map. Sector five is in the upper-right corner, and sector +nine is in the lower-right corner. +.TP +.B Random +Set a piece to move randomly. +.TP +.B Sentry +Put a piece to sleep. +.TP +.B Transport +Set an army's function to \f2transport\f1. +.TP +.B Upgrade +Set a ship's function to \f2upgrade\f1. +.TP +.BI V "piece func" +Set the city movement function for a piece. +.TP +.B Y +Set an army's function to \f2attack\f1. +.TP +.B ? +Display information about a piece or city. +For a city, the production, time of completion of +the next piece, movement functions, and the number of fighters and ships +in the city are displayed. +.P +Note that you cannot directly affect anything inside a city with +the editor. +.SH HINTS +After you have played this game for a while, you will probably +find that the computer is immensely easy to beat. Here are some +ideas you can try that may make the game more interesting. +.TP 5 +.B * +Give the computer one or more extra cities before starting the game. +.TP +.B * +Try playing the game with a low smoothness value (try using the +-s2 or even -s0 option). +.TP +.B * +When starting the game, the program will ask you what difficulty +level you want. Here "difficulty level" is a misnomer. To compute +a difficulty level, the program looks at each continent and counts +the number of cities on the continents. A high "difficulty level" +gives the computer a large continent with many cities, while the +user gets a small continent with few cities. A low "difficulty level" +has the opposite effect. It may be the case that the computer will +play better when the "difficulty level" is low. The reason for this +is that the computer is forced to move armies to multiple continents +early in the game. +.SH HISTORY +Apparently, this game was originally written outside of Digital, +probably at a university. The game was ported to DEC's VAX/VMS +from the TOPS-10/20 FORTRAN sources available around fall 1979. +The original authors listed in my old documentation are +Mario DeNobili and Thomas N. Paulson. +Support for different terminal types was added by Craig Leres. +.P +Ed James got hold of the sources at Berkeley and converted +portions of the code to C, mostly to use curses for the screen +handling. He published his modified sources on the net in +December 1986. Because this game ran on VMS machines for so +long, a previous version is known as VMS Empire. +.P +In 1987 Chuck Simmons at Amdahl +reverse engineered the program and wrote a +version completely written in C. In doing so, he completely +modified the computer strategy, the commands, the piece types, +many of the piece attributes, and the algorithm for creating maps. +.SH FILES +.TP 10 +\f2empsave.dat\f1 +holds a backup of the game. Whenever empire is run, +it will reload any game in this file. +.TP +\f2empmovie.dat\f1 +holds a history of the game so that the game can be replayed as +a "movie". +.SH BUGS +No doubt numerous. +.P +Satellites are not completely implemented. You should be able to +move to a square that contains a satellite, but the program won't +let you. Enemy satellites should not cause your pieces to awaken. +.SH AUTHORS +.nf +Original concept by Mario DeNobili and Thomas N. Paulson. +Support for different terminal types added by Craig Leres. +Curses support added by Ed James. +C/Unix version written by Chuck Simmons +.fi +.SH COPYLEFT +.fn +Copyright (C) 1987, 1988 Chuck Simmons + +See the file COPYING, distributed with empire, for restriction +and warranty information. +.fi -- 2.43.0