Initial revision
authorEric S. Raymond <esr@thyrsus.com>
Thu, 29 Mar 1990 23:24:30 +0000 (23:24 +0000)
committerEric S. Raymond <esr@thyrsus.com>
Thu, 29 Mar 1990 23:24:30 +0000 (23:24 +0000)
vms-empire.6 [new file with mode: 0644]

diff --git a/vms-empire.6 b/vms-empire.6
new file mode 100644 (file)
index 0000000..f194d6f
--- /dev/null
@@ -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 <dir>
+Pieces can be set to move in a specified direction.
+.TP
+.B <dest>
+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 <ctrl-L> 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 <Return>.  Hit the <Space>
+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