home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d1xx
/
d118
/
empire.lha
/
Empire
/
doc
/
Empire.doc
< prev
Wrap
Text File
|
1987-12-03
|
45KB
|
1,097 lines
What Empire is All About
Empire is a fairly rich simulation of international politics, economics and
war. It is played over a period of a couple of months by 2 or more people.
The Empire world consists of a toroidal grid of sectors consisting of
regular land, mountains and water. Players govern countries, which start
out as a pair of adjacent sectors and soon spread into large areas
requiring much management and protection. Various sector types can be
created which build ships, bridges, guns, shells, airplanes, and which make
medical and technological breakthroughs. Others are things like radar
stations, weather stations, fortresses, highways, warehouses, etc. A
typical Empire game is only over when just one country remains. A special
country, the Deity, is available, which has godlike powers to modify
sectors, ships, etc. The Deity is normally run by someone not playing
another country and has the responsibility of fixing up any problems which
occur.
Running This Version of Empire
****** Daily time is vital to Empire. The system time MUST be set *******
****** consistently or the game will not be playable. *******
****** Make sure the disk you boot from specifies an AmigaDos stack *******
****** size of at least 8000. *******
The first step is to create the world. Set up an empty disk for the Empire
data files. Pick the size of the world that you want. The sizes available
are:
16 x 16 - good for 2 players
32 x 32 - good for 3 - 6 players
64 x 64 - good for 7 - 15 players
128 x 128 - for the truly adventurous (probably needs a hard disk)
Run 'EmpCre' from your empty disk, giving it the appropriate 'par' file as
input. E.g. to create a 32 x 32 world (the most common size), you would
type:
empcre <par32
There will be a lot of output as EmpCre attempts to create a suitable
world. It may take some time. It is possible that the random numbers were
such that the creation failed. This is not fatal, just try again. The
limit on attempts is there to prevent infinite loops when the parameters
selected (see 'EmpCre.doc') are such that EmpCre can't manage the job.
The Empire program itself is quite large, so the best way to run it is to
make a CLI window for it and leave it running all the time. User's can run
their countries from the normal Amiga keyboard, or can connect via the
serial port (over a modem) at 300, 1200, or 2400 baud. Either 8 bits no
parity or 7 bits even parity are accepted. Hit RETURN's to get your parity
recognized and to start things up. A couple of special commands allow the
remote user and the owner of the system to communicate. The 'message'
command will ask for a single line of text and will write this to the
Amiga's screen. The system owner can enter one of four things when Empire
is running. 'play' will allow the local user to enter the game proper.
'QUIT' will cause Empire to terminate, 'message', entered when a remote
user is connected, will send a message to the remote user after they next
complete a command, and 'bump' will add one minute of connect time to the
remote user's timer. This latter is to compensate for the connect time used
up in receiving and replying to a message from the local user. If 'play' is
entered when a remote user is active, then when that remote user logs out,
Empire will start the login sequence for the local user. If 'QUIT' is
entered when a remote user is active, the remote user will be told that the
system owner wants the system, and Empire will exit when the remote user
logs out.
The previous settings of the serial driver are saved when Empire starts up
and are restored when Empire exits. Empire uses the DTR signal to tell the
modem to accept calls and expects it to signal CD when a connection is
made and to remove it when the connection is broken. Empire will drop DTR
when the remote user exits. If the parameter 'private' is given when Empire
is started up, the serial port will not be activated, and the local user
will go immediately to the normal Empire login. Note that you should set
your modem to be totally quiet when a connection is made, since the first
characters received after CD is signalled are used to attempt to determine
the incoming call's baud rate and parity setting.
On some older Amiga 1000's (including mine), the serial device doesn't drop
the DTR line when it is closed. This results in the modem continuing to
accept incoming calls. To get around this, Empire pokes directly at the
appropriate hardware register and drops DTR when it exits. Also, when a
remote user logs out, Empire similarly forces DTR low for a few seconds to
ensure a disconnect between the modems.
Empire opens the serial port with control-S/control-Q handshaking. This
means that the remote user can suspend output by typing a control-S, and
restart it with a control-Q. It occasionally happens that line noise
accidentally generates a control-S - if a remote user sees output suddenly
stop, typing a control-Q can often restart it. Note that the Amiga serial
device does not appear to clear the suspended condition when the connection
is terminated, thus the suspension can last until the next connection. THIS
WILL TOTALLY LOCK UP EMPIRE. The matching control-Q to free up the works
must be at the same baud rate and parity as the one that locked it up.
Also, it appears that a break condition received on the serial port will
unlock the suspension, regardless of baud rate/parity setting. Good
solutions to this problem require the use of multiple tasks, doing things
like timing out after a given period of no activity, along with using the
SendIO/CheckIO pair to do I/O instead of DoIO.
Getting Started
When a country first starts out, it will have 2 adjacent sectors, both
designated as sanctuaries. Sanctuaries cannot be attacked or fired upon by
other countries, so the late starter is protected from aggressive
neighbours. Each sanctuary will have 64 civilians, 64 military, 64 tons
of ore, 100 mobility units, and will be 100 percent efficient. The first
command will usually be
map -1:1,-1:2
to produce a small map of the sectors around the sanctuaries. Next will
come 'move' commands to move civilians and/or military into the
neighbouring sectors to claim them. Census commands will then show the
mineral and gold deposits in the land sectors; further map and move
commands will explore and claim more territory; sectors will be designated
as banks, harbours, mines, gold mines, etc. This first phase of the game is
one of exploration, development, and setting up management (delivery
routes). Soon, however, two countries will meet, and the possibility of
conflict will arise. Since much of the fun of your first Empire game is
figuring out what you should be doing before everyone else does, I won't
say any more than that. Instead I'll just summarize the concepts and
commands.
Concepts
An efficient government (I haven't seen one of those for a long time!)
doesn't waste time or effort. To encourage this, Empire has the concept of
Bureaucracy Time Units (BTU's) which are required to execute many commands.
The game prompt consists of '[', followed by the number of remaining BTUs,
a ':', the number of remaining minutes of time for the day, ']' and the
prompt " Command: ". As you play, keep an eye on the two numbers, and make
sure you get the important things done. BTUs are created by your active
capital in accordance with the number of civilians there and the efficiency
of the capital. Connect time is reset at or after midnight.
Money is needed to build ships and bridge spans, for upkeep of various
types of sectors, for military supplies, etc. It can be earned as interest
on gold bars at banks, by contracting production of appropriate sectors, by
selling things to other players, or by making loans to other players.
Technology level controls your technology factor, which affects the range
of guns, airplanes, ships, etc. Technology level is increased by the
efforts of technology center sectors.
Research level, in combination with technology level, affects your
likelihood of catching the plague. Research level is increased by the
efforts of research institute sectors.
Both technology and research levels go up 1 for each 25 units of production
available in the appropriate sectors. Both also decay away at the rate of
1% per day.
Sector Types
. - sea
Ships can sail here, other land-based operations can't happen. You
can't own sea sectors.
^ - mountain
These are land sectors, but you can't designate them. They cost a LOT
of mobility to move onto.
- - wilderness
Most of the usable world starts out this way. They are the default type
of land sector. They cost more to move onto.
s - sanctuary
You start with 2 of these. They cannot be attacked. You can't designate
more.
c - capital
Your active capital is the center of your coordinate system, and
supplies you with BTUs. Defend harder. Can do anti-aircraft fire.
u - urban area
Ore => increased civilians, which are are bundled in units of 10.
d - defense plant
Ore => production => guns.
i - shell industry
Ore => production => shells.
m - mine
Time => production => ore. Mineral deposits are not consumed.
g - gold mine
Gold deposits => production => gold bars. Gold deposits are consumed.
h - harbour
Ore => production => ships (via build command).
w - warehouse
Ore, shells and guns stored in bundles of 10.
* - airfield
Ore => production => airplanes. Can do anti-aircraft fire.
t - technology center
Ore => production => technological breakthroughs.
f - fortress
Can fire guns, defend other sectors. Fight harder. Anti-aircraft fire.
r - research lab
Ore => production => medical breakthroughs.
+ - highway
100% highway costs nothing to move onto. Other countries can use
highways unless they are checkpointed.
) - radar station
Can see ships at sea and other sectors.
! - weather station
Used to predict and map weather.
# - bridge head
Ore => production => bridge spans in orthogonal directions (via build
command).
= - bridge spans
Like highways, but over water.
b - bank
Collect interest on gold bars. Defend harder. Anti-aircraft fire.
x - exchange
Used in international trade.
Ship Types
NOTE: it is possible for the Deity to change these values.
type name cost sp vis rng civ mil sh gun plns ore bars vrng
------------------------------------------------------------------
p PT boat 30 50 6 1 - 10 10 1 - - - 4
s submarine 70 25 1 2 - 25 25 2 - - - 3
b battleship 127 25 25 8 - 127 127 4 - - - 6
d destroyer 60 35 15 3 - 80 40 2 - - - 4
f freighter 80 20 20 - 127 - 127 127 - 127 127 3
m minesweeper 50 20 20 1 - 25 10 1 - - - 3
t tender 100 30 20 1 - 100 127 30 - - - 3
c carrier 127 25 25 2 - 60 40 2 127 - - 4
cost - number of production units needed, also need cost * 9 dollars
sp - speed factor - the smaller the better
vis - how visible the ship is to radar and lookout
rng - twice the maximum gun firing distance
civ - number of civilians it can carry
mil - number of military it can carry
sh - number of shells it can carry
gun - number of guns it can carry/fire (tender can fire one, freighter 0)
plns - number of planes it can carry
ore - number of tons of ore it can carry
bars - number of gold bars it can carry
vrng - how far it can see (radar and lookout) - subs are special
Submarines can launch torpedoes (the torpedo command) and have sonar to see
other submarines. Destroyers can drop mines (mine command) and depth
charges (via the drop command) and have sonar so they can see submarines.
Minesweepers remove mines when they move into a sector. Tenders can
resupply other ships at sea (the tend command). Carriers are like mobile
airfields.
Ships must be at least 60% efficient before they can do anything. If they
drop below 20% efficient (as a result of shelling, torpedoes, etc.) they
will sink.
Updating
This section is quite detailed. The details are provided so that those who
want to run their country optimally can see what they need to see. Others
(especially beginners) should just ignore this section until they have
played for a while, at which point they should scan it to get a feel for
how things happen.
The sector update algorithm is central to Empire. It is based on steady
change over half-hour time units. It can be summarized as follows (values
are either for the sector being updated or for the owner country of the
sector; all calculations are integral):
NOTE: The Deity can change most of the magic numbers.
proc makeProduction():
q := min(work * efficiency / 100, ore);
if <sector not contracted> then
if money > 0 then
q := min(q, 127 - production);
production := production + q;
fi;
else
q2 := q * priceInNickels / 20;
money := money + q2;
fi;
ore := ore - q;
corp;
/* in an urban center, people are lazy, so every 10 counts as 1 here */
workForce := civilians + military / 5;
if lastUpdate = 0 or lastUpdate > CurrentTime then
lastUpdate := CurrentTime;
fi;
deltaTime := CurrentTime - lastUpdate;
if deltaTime > 256 then
deltaTime := 256;
fi;
work := deltaTime * workForce;
if work >= 100 and (<I own this sector> or work > 48 * 2 * 100) then
if weather <= -9 then
/* hurricane */
damageSector(random(21) + 70);
elif weather <= -8 then
/* no construction happens */
else
q := 0;
if weather <= -7 then
if money > 0 then
q := min(work / 200, 100 - efficiency);
fi;
mobility := min(127, mobility + deltaTime / 2);
else
if money > 0 then
q := min(work / 100, 100 - efficiency);
fi;
mobility := min(127, mobility + deltaTime);
fi;
efficiency := efficiency + q;
money := money - q;
fi;
/* civilian growth */
q := deltaTime * civilians;
if designation = <urban area> then
q := min(127, civilians + min(q / 100, ore)) - civilians;
civilians := civilians + q;
ore := ore - q;
elif designation = <bridge span> then
civilians := civilians - q / 400;
elif civilians > 31 and civilians < 97 then
civilians := min(127, civilians + q / 200);
else
civilians := min(127, civilians + q / 400);
fi;
/* mobility increase */
mobility := min(127, mobility + deltaTime);
lastUpdate := lastUpdate + deltaTime; /* NOTE THIS!!! */
/* military supplies */
q := military / 32 * deltaTime / 8;
money := money - q;
if <this is owner's active capital> then
BTUs := min(96, BTUs + deltaTime * civilians * efficiency / 5000);
researchLevel := researchLevel - researchLevel * deltaTime / 4800;
techLevel := techLevel - techLevel * deltaTime / 4800;
fi;
case plague_stage:
incase 3:
/* terminal plague stage */
<kill some people off>;
<send telegram, make news>;
if plague_time <= deltaTime then
plague_stage := 0;
else
plague_time := plague_time - deltaTime;
fi;
incase 2:
/* infectious stage */
if plague_time <= deltaTime then
plague_stage := 3;
plague_time := random(33) + 32;
else
plague_time := plague_time - deltaTime;
fi;
incase 1:
/* gestatory stage */
if plague_time <= deltaTime then
plague_stage := 2;
plague_time := random(33) + 32;
<send telegram, create news>;
else
plague_time := plague_time - deltaTime;
fi;
incase 0:
/* not infected - see if it should become so */
plagueFactor :=
((civilians + military) / 254) *
((techLevel + ore + 100) /
(researchLevel + efficiency + mobility + 100));
if random(100) < plagueFactor then
plague_stage := 1;
plague_time := random(33) + 32;
fi;
esac;
/* note that 'move', and deliveries will pass the plague when it is
in the infectious stage */
<do any deliveries out of this sector - special handling is done
when delivering civilians or military into a sector that hasn't
been updated for a long time>
if efficiency >= 60 then /* NOTE THIS!!! */
case designation
incase <bank>:
/* interest */
money := money + deltaTime * goldBars / 2;
incase <capital>:
incase <radar station>:
incase <weather station>:
/* utilities */
money := money - deltaTime;
incase <technology center>:
incase <research institute>:
/* utilities */
money := money - deltaTime;
if money > 0 then
q := production / 25;
production := production - q * 25;
if designation = <technology center> then
techLevel := techLevel + q;
else
researchLevel := researchLevel + q;
fi;
fi;
makeProduction();
incase <defense plant>:
if money > 0 then
q := min(production / 10, 127 - guns);
production := production - q * 10;
guns := guns + q;
fi;
makeProduction();
incase <shell industry>:
if money > 0 then
q := min(production / 2, 127 - shells);
production := production - q * 2;
shells := shells + q;
fi;
makeProduction();
incase <airfield>:
if money > 0 then
q := min(production / 25, 127 - planes);
production := production - q * 25;
planes := planes + q;
fi;
makeProduction();
incase <harbour>:
incase <bridge head>:
makeProduction();
incase <gold mine>:
q := min(production / 5, 127 - goldBars);
production := production - q * 5;
goldBars := goldBars + q;
q := min(goldSample * work * efficiency / 1000000, goldSample);
if <sector not contracted> then
if money > 0 then
q := min(q, (127 - production) / 2);
production := production + q * 2;
fi;
else
q2 := q * 2 * priceInNickels / 20;
money := money + q2;
fi;
goldSample := goldSample - q;
incase <mine>:
q := mineralSample * efficiency * work / 10000;
if <sector not contracted> then
if money > 0 then
ore := min(127, ore + q);
fi;
else
q2 := q * priceInNickels / 20;
money := money + q2;
fi;
esac;
fi;
fi;
Ship updates are much simpler:
if lastUpdate = 0 or lastUpdate > CurrentTime then
lastUpdate := CurrentTime;
fi;
deltaTime := CurrentTime - lastUpdate;
if deltaTime >= 3 then
lastUpdate := lastUpdate + deltaTime;
if weather <= -9 and shipType ~= 's' then
damageShip((random(21) + 10) * shipDamageFactor(shipType));
elif weather <= -8 and shipType ~= 's' then
/* bad weather halts construction */
else
if weather <= -7 and shipType ~= 's' then
/* bad weather delays construction */
deltaTime := deltaTime / 2;
fi;
mobility := min(127, mobility + deltaTime);
efficiency := min(100, efficiency + deltaTime);
fi;
fi;
Command Syntax
Users directly on the Amiga (i.e. not logged in over the serial port) can
send output to a file by following the command name with '>' and a file
name (to create the file and write to it) or with '>>' and a file name (to
append to the file). Using '>prt:' is quite handy.
All commands will prompt for their needed arguments, so if you are unsure
of how to use one, just give it with no arguments to get prompts.
Some syntactic elements:
<country> - a country name (in full, case significant) or country
number.
<sector> - a sector specified as row,column (e.g. 4,-7)
<sectors> - a region given as toprow:bottomrow,leftcolumn:rightcolumn
optionally followed by '?' and a set of conditions anded together
with '&'. Conditions test things in the sector against each other
or against constants. Operators are '=', '#', '<' and '>'. A realm
number (# followed by 0 - 3, or just # for #0) can be used instead
of the row/column range. Either range can be a single number. E.g.
census #
will do a census of realm #0, which is automatically built by the
update command to encompass your entire country. E.g.
map -5:5,-5:6
will map the region around your capital. E.g.
designate -3,1:5 f
will designate a row of 5 sectors into fortresses. E.g.
des -10:10,12?designation=-&minerals>50&civ>99 m
will designate all wildernesses in the region which have a mineral
sample larger than 50 and more than 99 civilians as a mine.
The units in a sector which can be tested are: efficiency,
mobility, defended, military, planes, minerals, production,
contracted, shells, ore, gold, checkpoint, civilians, guns, bars,
designation and owner. The last is only useful for the Deity. As a
special case, a '/' followed by a designation code can be used as a
condition to select all sectors of that designation. E.g.
des #2/- +
will turn all wildernesses in realm 2 into highways.
<ship> - the number of a ship
<fleet> - a fleet letter (a-z, A-Z, or * for the default fleet)
<ships> - a designation of a group of ships. Can be a fleet letter, a
<sectors> range or a list of ship numbers separated by '/'s.
Optionally followed by a condition as above, but which is applied
to the ships instead. Units which can be tested in a ship are:
civilians, military, shells, guns, planes, ore, bars, designation
(ship type), efficiency, mobility and owner.
It is often desireable to interrupt the actions or output of commands which
process several sectors or ships. This can be done on the Amiga by typing
a control-C. It can be done when connected over the serial port by typing
a control-C, a DEL or by sending a BREAK. The computation done by the
'power' command can also be stopped this way.
Commands
accept <loan #>
if the indicated loan is an outstanding loan offer to you, then you
are accepting it. The loaner will be informed and a news item
generated. Beware of not paying back loans promptly. See also:
ledger, lend, repay, collect.
assault <sector> <ship>
attempt to take over the sector with military from the ship. Costs
BTUs. The sector may fire back and may be defended. The assaulting
troops are at a disadvantage w.r.t the defenders. Also, capitals
and forts fight twice as hard against assault as other sectors.
See 'attack' for more details on fighting.
attack <sector>
attempt to take over a sector with military from orthogonal
sectors. Costs mobility and BTUs. The sector may be defended.
For each orthogonal sector you own, you will be asked how many of
the military there you wish to commit to the attack. Troops from a
100% efficient fort have a 4 to 1 defending advantage, and troops
from 100% efficient capitals or banks have a 2 to 1 advantage.
Troops attacking from a 100% efficient fort have a 2 to 1
advantage. Attacks cost BTUs at the rate of .15 per attacking troop
killed. Also, mobility is used up in the attacking sectors
depending on the terrain types as follows:
type of sector being attacked
attacking from (+) (?) (-) (^)
(+) highway .125 .208 .291 21.3
(?) others .167 .250 .333 21.3
(-) wasteland .208 .291 .375 21.4
(^) mountain 10.7 10.8 10.9 31.9
The running battle will be displayed using '*'s, '!'s and '@'s.
A '!' indicated a defender has died, an '@' indicates an attacker
has died, and a '*' indicates an entire attacking sector has run
out of attackers.
board <ship> <ship>
attempt to board the first ship with military from the second. You
can only board a freighter if there are no ships in the same fleet
in the same sector which have military on board.
build <sectors> <what>
build ships (give the letter) at harbours or bridge spans (give one
of udlr for direction) at bridge heads. Costs production units and
money. See an earlier table for the costs of various kinds of
ships. Bridge spans require 127 production units and $2000.
buy <lot #>
the specified lot, if it is still for sale, will be shown to you,
and you will be given a chance to purchase it. If the lot is a
ship, the purchase is straightforward. If the lot is items at an
exchange, you will be asked how many of each item to buy and which
exchange of yours to deliver the items to. See also: price, report.
bye
exit Empire
census <sectors>
prints detailed census for sectors. Some entries:
* - checkpointed - allows others access if they know the code
cmsgpob - delivery direction for item - 0 is up, go clockwise
$ - sector's production is contracted
% - sector is defended by a fort
change country <country>
change name
change password
switch to another country, or change this country's name or
password.
checkpoint <sectors>
set checkpoint codes at sectors. 0 means no checkpoint. You will be
asked for your country's password as authorization. Sectors which
are checkpointed can be moved onto (navigated into for harbors) by
other countries, if they know the checkpoint code. Note that
highways and bridge spans can be moved onto UNLESS they are
checkpointed. (If someone moves things onto your highway or bridge
span and leaves them there, they become yours.) The presence of a
checkpoint code is indicated by a '*' in the census listing.
collect <loan #>
if the given loan is an outstanding defaulted loan owed to you, you
will be given the opportunity to confiscate a sector from the
debtor in full or partial payment of the loan. Empire uses some
magic to determine the "value" of a sector, which must not be too
much greater than what you are owed. Note that you can only
confiscate sectors that are orthogonally adjacent to a sector that
you own. See also: accept, ledger, lend, repay.
contract <sectors>
production in shell industries, defense plants, airports, harbors,
bridge heads, mines, gold mines, research institutes and technology
centers can be contracted. You will be offered a price per
production unit. If you accept, then you will earn money as
appropriate when the sector is updated. If you decline, the sector
is left uncontracted. The presence of a contract is indicated by a
'$' in the census listing.
country
list the countries in the world along with some info about them.
declare war|alliance|neutral <country>
declare your relationship to the other country. This affects the
spy command and anti-aircraft fire.
defend <sectors> {%|sector}
if the '%' is given, then you will be asked for your password, and,
if correct, the defender for any defended sector in the specified
area is displayed. Otherwise, you need to enter the location of a
fort to defend the given sectors. If no defender is given on the
command line, you will be asked for the defender for each sector in
the specified area. When a defended sector is attacked, assaulted
or fired on, the defending fort will attempt to fire on the
attacker. The presence of a defense is indicated by a '%' in the
census listing.
deliver <what> <sectors> {<threshold>} {<sector>}
after playing Empire for a while, you will notice that moving
various supplies from sector to sector on a regular basis takes up
too much time and BTU's. Automatic deliveries are the cure for
this problem. Any of civilians, military, shells, guns, planes,
iron ore and gold bars can be automatically delivered from a given
sector to any neighbouring sector (orthogonal or diagonal). The
'deliver' command is used to set up and query delivery settings.
Delivery directions will also show up on the 'census' listing. In
its simplest form, a delivery is specified as in this example:
deliver c 0,0 (50) -1,0
This specifies that whenever sector 0,0 is updated, and it contains
more than 50 civilians, the excess civilians should be moved to
sector -1,0 (subject to the player owning sector -1,0 and sector
0,0 having enough mobility). The threshold (50) can be omitted, in
which case a threshold of 0 is used. A more complex example:
deliver o -2:0,-3:-1 (20)
Here, Empire will prompt for each owned sector in the specified
region, as to where to deliver ore to. Again, the threshold can be
omitted. Also, on the individual replies to the prompts, the
destination sector can be followed by a threshold in parentheses
which will be used for that particular delivery. If the form
deliver b -10:10,-10:10 +50
is used, then the thresholds for, in this case, gold bars, will be
changed without changing any delivery destinations. The final form:
deliver s -5:5,-2:7 -
will simply print out the delivery destinations and thresholds for
each sector in the region which has a delivery set up.
Deliveries are performed whenever sectors are updated. A message of
the form "delivery walkout between r,c & r,c" indicates that a
sector was trying to deliver to a sector you don't own. See also:
route.
designate <sectors> <what>
designate sectors to be a new type. The efficiency and production
in the sectors will be set to zero unless the sector was already of
the given designation. Your current capital cannot be redesignated
as anything else. The LAST sector designated as a capital will be
your current capital, which is at 0,0 in your co-ordinate system.
drop <target-sub> <dropping-destroyer>
drop a depth charge on a submarine from a destroyer. If the
submarine is able, it will fire a torpedo back (which might miss
anyway). The two must be in the same sector.
dump <sectors>
dumps sector information in a very compact, hexadecimal format.
Useful for those who want to set up tools to display more useful
maps, etc. The format is as follows:
rrccdCCmmppMMeessggPPoobbddiiGG[dt*7]OK
where
rr - row, 0 => size of world
cc - column, 0 => size of world
d - designation character
CC - civilian count
mm - military count
pp - production
MM - mobility
ee - efficiency
ss - shell count
gg - gun count
PP - plane count
oo - iron ore count
bb - gold bar count
dd - relative location of defender (rowDelta + 8, colDelta + 8)
ii - iron mineral deposit
GG - gold mineral deposit
dt - delivery direction and threshold for
civilians, military, shells, guns, planes, ore, gold bars
O - 0/1 indicating sector is contracted
K - 0/1 indicating sector is checkpointed
When the Deity does a 'dump', the following is appending to the
output lines:
oossttuuuuuuuu
where
oo - owner of the sector
ss - plague stage
tt - plague time
uuuuuuuu - last update time
The sector output will be preceeded by a line giving the time and
date of the dump. Note that some sectors "bundle" some items -
urban centers bundle civilians, warehouses bundle shells, guns and
ore, and banks bundle gold bars. The counts shown are the number of
bundles. Bundles are bundles of 10, except for gold bars which are
bundles of 4 in banks.
enlist <sectors> <total-required>
turn civilians into military. Not more than 50%, none in urban
areas. The enlistment will be spread fairly uniformly over the
eligible sectors.
fire <sector>|<ship> <sector>|<ship>
fire gun(s) at sector or ship from fortress or ship. If the target
is a fortress it will try to fire back. If the target is any land
sector that is defended, the defending fort will try to fire back.
If the target is a ship, any ships belonging to the same country
which are in the same fleet will attempt to fire back. The amount
of damage done depends on how many guns are fired (from a ship),
and on the type of the target ship.
fleet <fleet> <ships>
add the ships to the given fleet. All start out in fleet '*'. Valid
fleets are A-Z and a-z. The first ship specified will be the
flagship of the fleet - when it can no longer navigate, the entire
fleet will stop. For non-flagship ships in a fleet which is moving,
the ship will drop behind if it can't move. A ship can be removed
from a fleet by adding it to the '*' fleet.
fly <ship>|<sector> <plane-count> <bomb-count> <directions>
fly planes (possibly with bombs) from ship or airfield. Directions
are:
u - up
/r - up right
r - right
\r - down right
d - down
/l - down left
l - left
\l - up left
e - end of flying (land or crash)
v - view sector below
b - drop some bombs
Movement prompt is <fuel left:planes:bombs each:position>. Fuel
comes from the starting airfield or carrier. Landing chances vary
greatly. Watch out for anti-aircraft fire. Fuel units per plane is
calculated as:
fuelAvailable := sectorOrShipMobility * 4;
fuelUsed := min(fuelAvailable, 32); /* fuel tank size */
fuelUnits := techFactor * fuelUsed;
Note that these, as well as most other "magic" constants can be
changed by the Deity. In good weather, when carrying no bombs,
planes can fly one orthogonal sector per fuel unit. Fuel used rises
by 1 for each bomb rack required (each rack can hold 3 bombs) and
by 0.2 for each bomb carried. Diagonal flying takes 1.414 times as
much fuel.
forecast <sector> <time>
forecast weather near the given weather station for the given
number of half-hours into the future (max is the number of
civilians there). The range of the forecast depends on the
efficiency of the station.
grant <sector> <country>
grant a sector to a country it is beside.
headlines {days}
print newspaper headlines for the given number of days (default 1).
help
?
list commands and their BTU costs.
ledger
lists outstanding loans and loan offers that you are a participant
in. See also: accept, collect, lend, repay.
lend <country>
offer a loan to someone. You get to pick the amount, interest rate
and term. A telegram is sent to <country> informing them of the
offer. See also: accept, collect, ledger, repay.
load <ship> <percent>
load stuff onto a ship in a harbour. If no <percent>, prompts for
each type of stuff. <percent> is percent of ships capacity to load.
Ship capacities are listed above with other ship information.
lookout <ship>|<sector>
visual lookout - reports on nearby ships and sectors. In good
weather, orthogonal and diagonal land sectors can be seen; in bad
weather, only orthogonal neighbours.
map <sectors>
shows the designation of the sectors you or god owns within the
region. Other people show up as '?'. You can see sectors beside
ones you own. When the Deity does a map, he/she can see all
sectors, and water shows up as spaces instead of dots.
message
send a one-line message from the remote user to the local window.
mine <ship> <count>
drop mines from a destroyer. When ships move into a mined sector,
they may hit them, doing damage. When a minesweeper moves into a
mined sector, it can remove up to 5 mines.
move <what> <sector> <count> <directions>
<what> is cmsgpob. <sector> is where to move from. <count> is how
many to move (watch out for bundling). <directions> are as above,
but with no 'b'. Movement prompt is <mobility:position>. Mobility
costs vary with sector type, weather, and what is being moved.
Costs for an orthogonal move onto a "standard" sector in good
weather are:
c - 1 mobility per 5 civilians
m - 1 mobility per 5 military
s - 2 mobility per 5 shells
g - 2 mobility per gun
p - 4 mobility per plane
o - 1 mobility per 5 tons of ore
b - 10 mobility per gold bar (armoured cars, guards, etc.)
Some sectors are better at moving some items than others. For
example, warehouses can move ore, guns and shells in bundles of 10
for the cost of 1 unit; banks can move gold bars in bundles of 4.
Also, moving onto a 100% efficient highway costs no mobility.
nation
shows some info about your country
navigate <ship>|<fleet> <directions>
sail ships. <directions> are as above, but no 'b' or 'v'. Costs
vary with ship type and technology level. Watch out for mines.
Movement prompt is <flagship mobility:minimum mobility:position>.
If fleet is '*', then the flagship is the lowest numbered ship in
fleet '*', otherwise the flagship is the first ship given when the
fleet was set up. When the flagship can no longer navigate, the
whole fleet. Sailing into a hurricane can damage your ships. Ships
use less mobility for navigating as your country's tech factor
increases.
newspaper {days}
print headlines and detailed news for the given number of days
(default 1). A bulletin from the system operator may be printed
before the headlines.
power {force}
display summary of statuses of countries. Rebuilt if more than 12
hours old, or if 'force' specified. Power is calculated based on
the following magic formula:
(a * g + d) / 3 + (b + c + e + ii) / 10 + j / 100 + f + i + h * 5
where
a - number of sectors
b - number of civilians
c - number of military
d - number of guns
e - number of shells
f - number of planes
g - average sector efficiency
h - number of gold bars
i - number of ships
ii - total ship tonnage
j - money
price <ship> {<price-per-ton>}
price <sector> <what> {<new-price-per-unit>}
set the sale price on a ship or on the goods at an exchange. Each
ship for sale will be a new lot, and each exchange with things for
sale will be a new lot. Your offering will be visible on the trade
report, and is open to anybody. Purchasers may buy however much
they want of whatever is offered at your exchange. See also: buy,
report.
radar <ship>|<sector>
do a radar scan from a ship or a radar station. Shows the ships you
find and a small map of what the radar sees. Range varies with
ships and with sector efficiency. Note that submarines do not show
up on radar (destroyers and submarines have sonar, however), and
that PT boats are very hard to see. Also, radar does not show
ownership of sectors it displays, so beware of relying on radar to
see an enemy approaching overland.
read
read your telegrams. Most are from the Deity regarding nasty things
other countries are doing to you.
realm <number> {<sectors>}
(No '?' pattern allowed.) Set the realm (0 - 3) to the indicated
rectangle of sectors. Realm 0 (written as #0 or #) is also set by
the update command. You should set up some realms, so that you
aren't in danger of mistyping a sector range.
repay <loan-number>
repay some or all of a loan you owe money on. See also: accept,
collect, ledger, lend.
report {naval|land}
produce a trade report showing what is for sale for how much. You
do not see who is making the offer, but you can often deduce that.
'naval' will restrict the report to ships, 'land' will restrict it
to offers at exchanges. See also: buy, price.
route <what> <sectors>
like map, but shows delivery routes for <what>, and doesn't show
things you don't own. The delivery directions are shown as follows:
^?^ - deliver to sector above this one
?/ - deliver to sector up-right
?> - deliver to sector to the right
?\ - deliver to sector down-right
v?v - deliver to sector below this one
/? - deliver to sector down-left
<? - deliver to sector to the left
\? - deliver to sector up-right
ships {<ships>}
like census, but for ships. If no argument is given, all of your
ships will be reported on.
spy <sectors>
attempt to spy on the sectors from any neighbouring ones of yours
with military in them. The owner's relationship to your country
determines what happens to spies who are caught. The chances of
your spy being caught is dependent on the number of military
guarding the sector you are spying on.
telegram <country> {file}
Send a telegram to the given country. Reading a telegram from a
file is not allowed for users connecting over the serial port. A
telegram typed at the terminal is ended by an end-of-file
(control-backslash) or by a period by itself on a line. The Deity
can send a telegram to everyone by using '*' as the country.
tend <ship> <tender>
tend a ship from a tender in the same sector. This allows stuff to
be transferred at sea. As for most naval operations, the weather
must be good enough. You can't tend freighters or carriers.
torpedo <victim-ship> <submarine>
Launch a torpedo against a ship from a submarine. Maximum range is
less than 2 sectors. Destroyers in your sector may drop depth
charges on you. Each torpedo costs 3 shells from the submarine. The
chances of the torpedo hitting drop greatly as the distance
increases. To prevent submarines from being too powerful, a penalty
is imposed for using the torpedo command - the sub's mobility drops
to 0, and by a further 10 for each torpedo fired.
unload <ship> <percent>
like load, but the other way around.
update {<sectors>} {verbose|quiet}
perform the update operation on the given sectors. Other commands
that need to change a sector will do an update too, as will census.
Order of access is from top-to-bottom, left-to-right. This can
affect how you want to set up deliveries, since this is when they
are done. If no <sectors> is given, then the whole world is done
(sort-of - other people's sectors are only ever updated if they
haven't been for two days), and your realm 0 is set to a rectangle
containing all of your sectors. 'verbose' will supply more messages
than you would normally get about the updating. 'quiet' will
suppress nearly all update messages.
weather <sectors>
display a map of the current weather over the given rectangle and
indicate the current location of the high and low extremes.
Relation to Peter Langston's Old Empire
For those of you who know all about Empire, this is a totally new re-
implementation (in Draco of course) of the Peter Langston version of Empire
(also known as Old Empire). This is not the single-player game available on
some PC's which is played in a few hours. For the old pros, the only
feature not implemented in this version is treaties. Pretty much everything
else is present. One other major change is that sector co-ordinates are
row,column instead of x,y. This version has been implemented by me (Chris
Gray) in my spare time with some help from Chris Thierman and play testing
by Al Covington, Don Reble, Tim Breitkreutz and Randy VanKooten. We
originally worked from a copy of Peter Langston's documentation, which is
often incomplete, contradictory and just plain wrong, so there are
differences between this and the original. After getting the decompiled Old
Empire source from Tom Fisher, the features we added were more in line with
Langston's original, but still not identical. In particular this version of
Empire can only be used by one person at a time, and has had some disk I/O
optimization added to make it usable on a floppy disk. It is also in one
large program instead of a set of seven overlays. Also, there is no
'empfix' program - the functions of that program are incorporated into the
Empire program itself.
Short History of Empire
The first widely available version of Empire was written by Peter Langston
(who also wrote the 'wander' adventure game system). It was available (as
far as I know) only in PDP-11 object code format for running under UNIX
Version 6. I played two games with that version on a PDP-11/45 at the
University of Alberta. The game appears to have been popular within the
North American UNIX community, and its absence on other machines was a sore
point. Tom Fisher took exception to this and proceeded to de-compile the
object module into C. His version is now available and will run on most
UNIX systems. It is difficult to modify, however, because much of its
structure reflects the decompilation process - it is a maze of labels and
goto's. It also reflects the memory limitations of the PDP-11 and is
structured as a set of 7 different programs which are accessed as overlays.
Another version of Empire, presumeably a re-implementation, has been done
by people at Berkeley (I think). I've never seen this version, so can't say
much about it, except to say that it has been augmented with farms,
bombers, tanks, nuclear weapons, etc. I have recently heard of another
project to re-implement Empire, in which the sources will explictly NOT be
made available. The sources to this Draco version are now available (they
are probably on the disk you are reading this from). Chris Thierman took it
upon himself to implement Empire for the University of Alberta's Amdahl
mainframe nearly two years ago. The project proceeded, but was never
completed. We both bought Amigas about that time and eventually I had Draco
ported and Chris was using it a bit. He decided to port Empire to the Amiga
and requested my aid in doing a translation from QC (a compiler of mine for
the 360/370 series) to Draco. I agreed and soon found myself headlong in
the implementation of Empire. The game you have here is the result.
Happy Empireing!!