cg@ami-cg.UUCP (Chris Gray) (06/05/90)
Those of you who read comp.binaries.amiga will have seen Dave Wright's
Empire v2.1w there recently. I thought I would provide a bit more information
on its origin and on some possible problems with it.
I (Chris Gray) started work on Empire V2.0 several months (a year?) ago. I
essentially took the original single Empire program and split it up into 3
parts: the server 'EmpServ', the AmigaDOS shared library 'Empire.library',
and the clients 'Empire' and 'SEREmp'. I also redid and greatly expanded
my documentation. Much of the material in the 'Docs' directory is new. The
major changes were:
- splitup to server model. This allows several people to connect to
Empire at the same time. Some effects of this:
'chat' mode - open communication among connected players
'message' sending to other connected players
selectable immediate notification of things done to you by
other players
use with BBS systems. At least 2 BBS's now have Empire clients
which allow their users to play Empire. The effect of this
is much like the multi-player games on CompuServe, etc.
multiple players made it feasable to add the 'fast' settings,
where updates happen much faster than normal (e.g. every
10 seconds instead of every 30 minutes). This allows a game
to be over in a weekend, and makes for a much different
flavour of game.
- added full WorkBench support. All programs can be run from the
Workbench, and the system can be shut down from there as well.
- added stack checking - stack overflows were likely a cause of problems
that some users reported.
- numerous bug fixes and minor enhancements
- the switch to the server model didn't require a total rewrite, but
it was close - issues such as locking and unlocking resources,
broadcasting global changes, etc. arose.
I posted V2.0 to CompuServe a few months ago, and a bunch of us here proceeded
to play a full game, to test it out. A number of bugs were found and fixed.
The resulting version, V2.1, I sent to Tad Guy (moderator of comp.binaries.
amiga) about 3 weeks ago. Since then, only two minor bugs have been found.
I sent a version of V2.0 to Dave Wright a couple of months ago, and it is
on this version that his V2.1w (and I hear, V2.2w (beta)) are based. I sent
my V2.0 bug list to Dave, but I don't know how much of it he incorporated.
I haven't seen his sources (have you sent them yet Dave?), so I can't comment
on his changes. I have noticed the following, however:
- Dave obviously didn't understand what the 'reader' program in the Help and
Doc directories was all about. He edited file 'files' in the Doc
directory such that 'reader' no longer works properly - it should
contain JUST the file names, nothing else. He also didn't update the
'files' file in the Help directory when he shuffled/added things there.
- Dave has renamed many of the Help files, and has edited a bunch of them,
removing my 'Help' and 'Doc' references, replacing them with single
'See also' lines. He also added some files and lines (you need a proof-
reader Dave!)
- in a mail message, Dave said he stopped the server from flushing its
caches and closing files when a user logs out. I consider this to be a
bad idea. Without those flushes and closes, the damage done to the
world by a system crash, power outage, etc. is much more severe.
For reference, here is my list of bugs fixed between my V2.0 (which Dave's
version is based on) and my V2.1:
1) news about torpedoing of ships now lists the name of the victim, not the
name of the attacker.
2) empire.log records the device name as well as the unit number for
connect and disconnect messages.
3) a picky user said that 'move' shouldn't charge BTU's if the quantity
isn't typed correctly. Fixed. This, unfortunately, means that you also
don't get charged if you try to move stuff from a sector you don't own.
My feeling is that 'syntactic' errors should be free, but 'semantic'
ones shouldn't.
4) slight log message changes in ServerMain.d - put '*** ' in front of all
of the error ones, and made all the normal ones start with a capital
5) changed things a bit so that a country with no active capital and no
BTU's can still designate a new capital.
6) cleared the CNTRL-C signal bit after each command. This only affects
people playing locally with 'Empire'.
7) when a deity redesignates a sanctuary, don't generate news
8) when sort-countries-by-name is in effect, 'idle' countries don't show
up for non-deities. This allows a deity to get rid of a country from
the list altogether, by marking it as idle (status = 4)
9) when sending a telegram to a deity or when a deity sends an individual
telegram, don't generate news.
10) allow 'change country' to a Visitor country. Also 'message'. This
involved adding a parameter to 'reqCountry' and 'getCountry'.
11) when a deity does 'telegram *', the telegram goes only to active and
deity countries.
12) changed the default logfile to be 'empire.log', not 'RAM:empire.log'
13) changed EmpCre to initialize iron & gold in sea and mountain sectors
as well - this allows a deity to build land easier
14) added server message type 'rt_readLocal' to read a file from the
server's current directory (the default file directory) into the data
portion of a telegram. Added '< file' syntax to 'telegram' and
'propaganda' to use this facility.
15) broke up 'getText' in 'messages.d' into a series of routines. Added the
'append' option to the editing options.
16) added CLI flag '-t' to EmpServ and Empire. This causes them to use name
"Empire test port" instead of "Empire port" for the public Exec message
port. This lets me run a test game at the same time as a real game.
17) added server message type 'rt_edit' to allow a deity to edit one of
the four message files in the base directory. This is done using
'edit file xxx', where xxx is one of 'conmess', 'logmess', 'hangmess',
'bulletin' or 'temp'. 'temp' just lets a remote deity store a few bytes
on the host system. It can also be read into a telegram.
18) changed 'edit country' so that it only accepts positive values for the
origin of a country - negative ones were not handled correctly.
19) change the country display to say 'currently logged on' when appropriate
20) changed 'move', 'fly', 'nav' to allow numeric keypad entries for
directions. Also '5' for 'v', '.' for 'e' and '0' for 'b'
21) fixed 'editSector' to allow entry of upto 255 for gold, minerals, etc.
22) fixed the 'edit' transaction to use a code number for the file to edit,
so that the filename didn't have to be passed from the library.
23) made attack/assault on a deity-owned sector not show up in the news
24) telegram sent when a plane landed on someone else's sector had the wrong
column number.
25) attacking when none of the attacking sectors can contribute any soldiers
will now just produce an error comment
26) message when trying to log in when already logged in has been fixed
27) fixed all programs (EmpCre, EmpServ, Empire, SEREmp) so that they don't
leave things locked when they exit normally or abort.
28) fixed 'attack' so you can't tell that the target is a sea or sanctuary
unless you have adjacent sectors to attack from.
29) fixed sector update so that when you get a delivery walkout (delivering
to a sector that is not yours and is not checkpointed), the goods don't
just vanish - they stay put.
30) fixed a whole raft of problems with coordinates in messages sent to
victims/targets. Made a new routine in 'startup.d' called userTarget,
which is like userS, except that it has a target country as a first
parameter, and translates the row and column to that country. Used this
is all the appropriate places. Got rid of 'targetRow' and 'targetCol'
in 'cmd_fight.d'.
31) changed over half a dozen files while cleaning up and checking that all
things that can damage a sector will do everything they need to. Added
a news type for a country destroyed by hurricane (pretty unlikely!).
'load' can destroy a country by emptying the last sector, etc.
32) planes flying over ships were not shot at when they should be. Same for
when bombing a sector.
Bugs found (by Hakan Thorngren) in my version 2.1:
1) The deity command 'edit flags' did not write the flags to the server, so
they could not be changed. The work-around is to edit some other world
thing afterwards, e.g. 'edit world'.
2) The move command would let you move, e.g. 7 civilians from an urban
center. It would cost no mobility and wouldn't let you do anything, but
it WOULD allow you to wander around looking for oceans and other people's
sectors.
As mentioned before, I don't know which, if any, of all of these exist in
Dave Wright's V2.1w of Empire.
One final suggestion to Dave (and any others working with a project as large
as Amiga Empire) - one release every 6 months is probably enough. Have it
tested thoroughly (e.g. a complete Empire game) before releasing it.
--
--
Chris Gray usenet: {uunet,alberta}!myrias!ami-cg!cg CIS: 74007,1165