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