[comp.sys.amiga] Comments on Empire V2.1w

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