2 - Implemented the C_SYNC RFC
15 - New struct members (currently not used)
16 - player.comhistory command history (for debugging) last 10 commands
17 - nat.nat_mission_trigger set which relation you want to trigger
18 various missions and autodefenses at.
19 - Added land.lnd_scar -- how experienced the land unit is.
20 - sect.sct_mobil was changed from unsigned char to short (to permit
21 the removal of updates--note I don't plan to remove updates, but
22 someday someone might try and they will need this so that sectors can
24 - New struct members (currently used):
25 - Added type field to all objects so they can identify themselves
26 - Moved var structs to the top of all class structs for easy location
27 (see struct genchrstr defined in h/genitem.h)
28 - nat.nat_hostaddr, nat.nat_hostname, nat.nat_userid, userid and hostname
29 of last person to connect to that country. If when you login,
30 your userid or hostname is different from the last person to conenct
31 to that country, then you will get a message like:
32 Last connection from: Mon Nov 13 01:48:04 1995
33 to: Mon Nov 13 01:48:12 1995
34 by: children@RedDragon.Empire.Net
35 this will improve security and be helpful for co-rulers. Also
36 added were nat.nat_last_login and nat.nat_last_logout.
37 - Nation now has 50 realms.
38 - New global constants:
39 - Extended nsc ("next selection conditionals" e.g. cen * ?mil=5) to
40 support C_SYNC messages and include the objects "map" (bmap), and "nation".
41 These will transmit to the client the equivalent of "dump", "ship",
42 "car", "land", "lcar", "bmap", and "nation" output and more.
43 - Added nsc entries for the following classes: sect, ship, plane,
44 land, nuke, map, item, product, and version. These will transmit to
45 the client the equivalent of the "show" and "version" command output
48 Empire 3.0.1 C_SYNC 0.0.1
49 - changed the order of the struct members of sect, ship, plane, land unit,
50 nuke to put own and uid out front (note this results in a new version
51 of the C_SYNC protocol)
52 - fixed a bug in "sync object" which was sending erronious data
53 - for now all C_SYNC messages will automatically send uid (or x,y for sects).
54 this should be changed to implement "surfacing noises" and interdiction.
55 - whenever any of your sect, ship, plane, land unit, or nuke changes,
56 you will get a C_SYNC message describing the entire new struct.
57 - Note this occurs everytime the data changes EXCEPT for changes
58 which happen durring an update. For now, I will require clients
59 to call "sync object all" after an update if they want to sync their
60 database after the update.
61 - If you loose a sect, ship, plane, land unit, or nuke, then you will
62 get a very partial C_SYNC message only telling you the id and new owner.
63 - look, spy, coastwatch (async & sync), now all send you partial
64 C_SYNC messages telling you information about your enemy's stuff.
65 - Note: For now, you get precise information about the number of mil in
66 the sector etc... This will be fixed in 3.0.2
68 Empire 3.0.2 C_SYNC 0.0.2
69 - there is now only one announcement file which all countries post to
70 and read from. the wire syntax has changed to "wire [y|n|<days>]" to
71 allow you to read announcements from <days> days ago if you want.
72 - at each update, all announcements older than 7 days (deity
73 configureable as #define ANNO_KEEP_DAYS in misc.h) are automatically
75 - a player's bmap can now be changed (e.g. by planes flying missions)
76 even when they're not logged on.
77 - added a new command "sharebmap <COUN> <SECTS>". If <COUN>
78 is friendly towards you and your bmaps already share enough information
79 in common, then your bmap will be added to their bmap. For more details
80 (there are alot more details) connect to empire.net 7773 1-10 and type
82 - now whenever a designation gets added to your bmap, the client will
83 receive a very small C_SYNC MAP_CLASS message
84 - when your country's money, reserves, cap location, name or origin
85 changes, you will get a C_SYNC NAT_OBJECT message with your new nation
86 data. Client writers take note: there is a new field in the nat
87 struct called "xstart,ystart" which is the start location of the
88 origin. So if the client needs to make some transformation of the
89 co-ordinates, it can refer to this variable.
90 - when you type "nation", that will also send a C_SYNC NAT_OBJECT
91 message to the client.
92 - removed a bunch of fields from the C_SYNC nat struct (to cut down bandwidth)
93 (this results in a new version of C_SYNC).
94 - information about enemy commodities, tech, or efficiency are now
95 rounded to the nearest 10.
97 Empire 3.0.3 C_SYNC 0.0.3
98 - added three new land units: "cavalry 2", "light infantry", and
99 "aau1". Here's the basic scheme. The old cavalry are an average
100 between the somewhat weaker cav1 and somewhat stronger cav2.
101 light infantry are half the size of and slightly fastar than inf1's.
102 "aau1" come at the same tech as Zepplins and let low tech countries
103 try to throw rocks at low tech planes...
104 - reduced the size of "ts1 trade ship 1" to 100 lcm, 50 hcm, $1500
105 (from 200 lcm, 100 hcm, $2500). Most players were waiting for ts2
106 so this is a nice way to deal with that.
107 - after each update, all countries receive the message "C_SYNC EDB_UPDATE".
108 (this results in a new version of C_SYNC).
109 - all telegram files have been moved into a subdirectory called "tel".
110 - new subdirectory of the data directory "sync" holds spooled C_SYNC messages.
111 - if the player is not logged on when they receive a C_SYNC message,
112 then it will be spooled to their sync file. If the sync file
113 contains spooled messages older than 3 days (deity
114 configurable as SYNC_KEEP_DAYS in misc.h), then the C_SYNC message will
116 - New command "sync read [yes|no]" reads all spooled C_SYNC messages.
117 If the [yes|no] argument is not specified, the player will be asked:
118 "Can I throw this information away now?".
119 - Removed the "bdes" command. It is no longer necessary (since the
120 server now automatically adds 'X' sectors to your bmap, and it also
121 automatically adds sectors that your planes fly over when they're
122 flying missions). The "bdes" command in conjunction with the new
123 "sharebmap" could lead to abuses, and since it is no longer really
124 necessary, I removed it. Given the choice between sharebmap and bdes,
125 I think most players would choose sharebmap.
126 - The delivery and distribution stuff was removed from the output of
127 "commodity" and each column was widened to 5 characters (to accomodate
128 the new system where sectors are now allowed to hold up to 9999 of stuff)
129 - IP addresses will now only be resolved into hostnames if RESOLVE_IPADDRESS
130 (in misc.h) is defined.
131 - Mountains will now mine gold at 1/5th the rate that gold mines do (thar's
132 gold 'n them thar hills!)
134 Empire 3.0.4 beta C_SYNC 0.0.4
135 - If the game is a blitz, then the "players" command will list other
136 countries which are logged on. This will cut down on the "is anybody
137 else logged on?" announcements. Note that for players, "last command"
138 and "user@hostname" are not printed (only deities get to see this stuff).
139 - fixed a server crashing bug in "sync class all".
140 - each country now has two bmaps, their 'working' bmap and their
141 'true' bmap. The true bmap contains only information put there by the
142 server. The working bmap also contains information put there by the
143 bdes and sharebmap commands. The "bmap" command usually displays the
144 working bmap unless the player specifies "bmap <SECTS> true". Also,
145 if the players working bmap somehow becomes corrupted, then they can
146 type "bmap <SECTS> revert" to revert their working bmap back to their
147 true bmap. This change was necessary to prevent abuse of the new
148 "sharebmap" command (which now compares the players true bmaps when
149 determining whether they overlap).
150 - There is a new info page 'info Empire3' which contains game changes
151 of particular interest to players.
152 - Put the bdes command back in.
153 - Added a new question in the "configure" script: "Do you require your
154 server to be unusually small?". If the deity answers "yes" to this
155 question, then many bells and whistles will be turned off to generate
156 a lightweight "bare bones" Empire server.
157 - I have padded each object struct out by a spare char, int, and long.
158 This is to give me room in the coming months in case I need to make
159 a change which needs data in the object structs, and I don't want to
160 invalidate currently running long term games.
161 - Tested the HIDDEN and SLOW_WAR mods (these hadn't been tested for
162 the Empire2+ server yet).
166 Note: the primary focus of this upgrade is to address the f1
167 SAM-soaking problem. The solution I adapted is a mixture of ideas
168 from various people--mostly not myself. I appologize for forgetting
169 whose ideas these were, and I hope that in consolation for not
170 acknowledging you, you will at least be happy that I implemented
171 your ideas. This was a pretty big job.
173 - In the old system, planes would be charged either 10 mobility
174 (interceptors), 12 mobility (escorts) or 20 mobility (the rest) per
175 flight. This cost was then multiplied by (100/eff) with the
176 restriction that plane mobility could not go below -32. Planes flying
177 missions were charged only 1/4 of this. In the new system, planes are
178 charged a base rate of 5 mobility to prepare for takeoff. On top of
179 this, they are charged a "flight cost" which is either 10 (interceptors
180 and escorts) or 20 (the rest), however this flight cost is scaled down
181 according to the length of the flight--it is multiplied by (flight
182 length) / (max plane range). The flight cost is then scaled by
183 (100/eff) with the restriction that a plane can't go below -32
184 mobility. Planes flying missions are charged 1/2 of this.
185 - The mobility of a plane will now go down by one point for every two
186 points of damage it took from air-to-air combat, to a limit of -32
187 mob. This is to simulate the high mobility cost of air-to-air combat,
188 and the fact that air-to-air combat is more effort for low tech planes.
189 - SAM interception is now separate from plane interception; for each
190 attacking plane, if the plane cost at least $1000 to build, then one
191 SAM will be launched at it. After SAMs have been fired, fighter
192 planes will intercept what's left over.
193 - The restriction that high tech nations can not build low tech planes
194 has been removed (the above changes address the f1 SAM-soaking problem).
195 - marine missiles on interdiction now fire at a single ship rather
196 than the whole fleet. They pick the ship which is the most valuable
197 according to (cost to build) * efficiency. Furthermore, marine
198 missiles will only launch at a ship if the ship cost at least $1000
199 to build or if it can carry land units or planes.
200 - the NEWPAF option has been made standard.
201 - fixed a bug which wasn't giving a +1 radius bonus to units in 60% HQ's.
202 - "toggle sync on" now sends back a "sync version" as per the RFC.
203 - fairland now prints an error to stderr if it can't grow the
204 continents (it used to just print the last partially built map).
205 - when you break sanctuary, your 100% sanctuaries turn into cities and
206 all your other sanctuaries turn into roads (this is helpful for
207 games which use "bigstart").
209 Empire 3.0.6 C_SYNC 0.0.5
210 - Fixed a bug in the attack code which was underestimating defense
211 strength (it was only giving the sector defense bonus to land
212 units--not mil). Note--the bug was only in the estimation part, so
213 countries were not being given a chance to abort attacks where the
214 odds were clearly against them.
215 - Mountains can now only hold 1/10th as many civs as normal sectors.
216 - Raised the gold production efficiency of mountains from 20% to 75%.
217 - Changed fairland to put gold in mountains.
218 - flash and wall messages are no longer truncated. Instead the message
219 is split into 60 character pieces which are transmitted one at a time.
220 - If the game is HIDDEN then non-contacted countries no longer show up
221 on your "relations" output.
222 - If the game is HIDDEN and you try to declare relations with a
223 country you haven't contacted yet, then you will now get an error
224 message (before you got nothing at all).
225 - Update production reports are now Production Reports again (they
226 were BULLETINS since Empire2.0.0). This will fix a bug which was
227 preventing players from being "informed" when they get an update telegram.
228 - The new info page "info Mobility" gives the formulas for all
229 mobility costs in the game.
230 - Before you type a telegram, you will now see:
231 Enter telegram for Fodderland
232 undo last line with ~u, print with ~p, abort with ~q, end with ^D or .
234 The new tilde escapes work very nicely.
235 - The prompt for escorts has been changed from "plane(s)? " to "escort(s)? ".
236 - Changed the mobility cost to move into a sector from
237 cost = (mcost - eff) / 5
240 cost = (2 + (3 - mcost) * eff) / 5
242 cost = (mcost - 20 * eff) / 5
244 OLD SYSTEM: eff 0% 100% NEW SYSTEM: eff 0% 100%
249 Note that this means land units can attack 100% mountains now, so
250 there will be a tradeoff for the defender--either they can have a low
251 efficiency mountain that costs more mobility to attack but gets a
252 lower defense bonus, or they can have a high efficiency mountain that
253 costs less mobility to attack but gets a higher defense bonus.
254 - New conditional query "coastal" which gets set when you take a
255 "census" of the sector. Type "cens * ?coast=1" to get a list of all
256 of your sectors which are adjacent to water (and thus vulnerable to
258 - Added a new C_SYNC field to SCT_OBJECT called "coastal". This results
259 in a new version of the C_SYNC protocol.
262 - Fixed a server crashing bug in the sneak attack code
263 - Sectors with 0 mobility can no longer enlist mil
264 - In a HIDDEN game, you can now only see relations for countries you
266 - Fixed a bug in the "Last login from" part of the login sequence.
267 - added new global array player_commands which keeps a list of the
268 last 100 commands typed by players. Added a file doc/debugging which
269 explains to deities how they can access this list.
270 - Fixed a bug that would prevent you from being able to assault your
271 own sector if SLOW_WAR was enabled.
272 - In a HIDDEN game, llook will now contact.
273 - Fixed a bug in the SLOW_WAR mods which was charging people WarCost to
274 declare war when their enemy was Sitzkrieg towards them.
275 - Fixed a bug in HIDDEN--sending a telegram or auto-coastwatch
276 sighting ships will now both contact.
277 - Fixed a bug in SNEAK_ATTACK--you are no longer charged for boarding
281 - Removed an infinite from the autonav code.
282 - Fixed the "client" login command.
285 - Consolidated budget code for ships, land units, & planes (Ville Virrankoski)
288 - Fixed a bug in radar (anonymous)
289 - Ported the server to Ultrix (Yannick Tremblay)
292 - Port to FreeBSD (submitted by Janjaap van Velthooven)
293 - Fixed a server crashing bug in range command
294 - Fixed a bug which gave players free info when they shelled deity bridges
295 (reported by Jim Gillogly)
296 - Small ships can now fuel in cities (reported by Walter Smith)
297 - Fixed compile bug in wu.c (reported by Curtis Larsen)
298 - Documented toggle sync and toggle async (reported by Bernhard Reiter)
299 - Fixed a bug in shoot which was leading to abuses (reported by
301 - route now prints % sectors (reported by Nathaniel Thurston)
304 - mkmf is no longer needed to compile the server (Michael Straub)
305 NOTE: This change depends on "cpp -M" working on your system.
306 - A number of bug fixes to the "budget" command (Ville Virrankoski)
309 - Fixed a bug in "budget" command
310 - If cpp doesn't exist on the system, then "cc -MM" is used in place
314 - Extensive consolidation of "budget" command with update routines
316 - Fixed some of the portability problems arising from the switch to "mkdep"
318 - Fixed a server crashing bug in the update routines (introduced at 3.0.14)
321 - Fix of a MAJOR bug in the budget/update routines which was
322 overcharging countries for military reserves (Ville Virrankoski)
323 - Simplification & fix of mkdep/configure (Yannick Tremblay)
324 - Port to Solaris 5.5 (Ron Kuris <rk@unify.com>). Here are the notes
325 that came with the Solaris port:
327 These are the patches to make the new server work on Solaris.
330 My environment is that we have cc from Sun, but no license.
331 We have gcc installed as /opt/gnu/bin/gcc. Although it was
332 built with Solaris 5.4, it works fine on 5.5. If you need
333 gcc, use archie to exact search for FSFgcc.gz (I found it
334 on qiclab.scn.rain.com in /pub/solaris). You also need
335 FSFtools.gz for gnumake. These packages install very easily.
337 While running configure, your 'gnumake' is /opt/gnu/bin/make,
338 and the compiler you should use is /opt/gnu/bin/gcc.
340 My build path is something like:
341 PATH=/opt/gnu/bin:/usr/ucb:/usr/bin:/usr/sbin:.
343 Once you apply the patches, everything seems to work.
345 Whoever integrates this into the mainstream:
346 The change to client/GNUmakefile is the only one I think
347 that might need tweaking. It sets the default build flags
348 to Solaris (somehow I don't think you want that). I tried
349 pretty hard not to break anything else.
351 The change in lwp.c I think is just an outright bug, but
352 most versions of the lwp system dependent stuff just happen
353 to get lucky by not saving the registers. This should NOT
358 - Optimization of mkdep (Yannick Tremblay)
359 - Moved solaris from emp3 to emp3/make/Systems (Ron Kuris)
360 - Minor enhancement to "lcargo" code (Ron Kuris)
361 - Fixed a bug which had setting budget priorities on land units
362 result in being charged twice for them (Ville Virrankoski)
365 - "read" command now sends a C_SYNC nation message. (Curtis Larsen)
366 - Fixed a bug which was deleting the announcement file when there were
367 no announcements (reported by Ed Down).
368 - Fixed "~u" tilde-escape for "telegram" and "announce" commands (it was
369 possible to undo back past the beginning of the buffer and crash the
370 server (reported by Nathaniel Thurston).
371 - mkdep optimization (Yannick Tremblay).
372 - Changed syntax for "cede" command so that you can specify "se" or
373 "sh" on the command line (reported by Tero Paananen).
376 - fixed a serious bug in configure and mkdep which prevented the
377 server from compiling
379 Empire 3.0.19 Ken Stevens 17 Apr 96
380 - Fixed a serious bug in the Empire3 server which allowed players to
381 create an infinite number of shells and food out of nothing.
382 I added a new field "simulation" to the player struct and set this
383 field to 1 in all update simulation commands (budg, prod, neweff).
384 Then in the update code, instead of checking the variable update_pending
385 to determine whether the update is "for real", I check the player->simulation
386 variable. Note that when the commands sneweff, pneweff, and lneweff
387 get added to the server, they should also set player->simulation to 1.
388 - subs/takeover.c added a check to make sure the number of che doesn't
389 overflow (Paul Byrne)
390 - update/revolt.c. It fixes two problems. First, after security
391 forces kill che, if there are no che left, the function returns
392 without saving the zero-che value. Worse, it never checks for
393 negative che values, which looks like it could happen. The second one
394 is in che moving. It loops through the neighbors looking for the best
395 place to move. Problem is, if it finds a place to move it doesn't
396 move to that place, but simply to whichever place it last looked.
399 Empire 3.0.20 Ken Stevens 21 May 96
401 - fixed a serious bug in the "production" command which could cause
402 a server crash (Steve McClure).
403 - fixed a bug in the "starve" command which could suck all the food
404 off of a ship or land unit on the ship (Steve McClure).
405 - fixed a bug in the "deliver" command mis-interpreting the return
406 value of the putvar function (Steve McClure).
409 - Fixed a bug in road mobcost calculation (Steve McClure)
410 - Fixed a bug in the toggle command (reported by Keir Novik)
413 - Fixed a bug in the attacking code where moving mil into a sector was
414 going on. It would probmpt for the max amount of mil to move in
415 by mobility, but when you moved in it never checked, so you could still
416 move all the attacking mil in (Steve McClure)
417 - Fixed a bug in fairland (Ken Stevens - reported by Janjaap van Velthooven)
418 - Fixed a bug in map C_SYNC (Ken Stevens - reported by Markus Armbruster)
421 - fairland.c. Better representation of the map for >30 continents.
422 The markings for continents start wrapping for more than 62 continents,
423 the map won't get any control characters anymore (Janjaap van Velthooven).
424 - C_SYNC. forces a newline whenever data with a different id is appended to a
425 partial line. Caveat: this sacrifices the line structure to correct
426 the line tagging (Markus Armbruster).
427 - Fixed a bug which wasn't printing the last row of `sync object bmap'
428 in god's coordinate system (Markus Armbruster).
431 - port to Ultrix (Markus Armbruster)
433 Empire 3.0.21 Ken Stevens 1 July 96
434 - fixed a bug in reco & sat which wasn't putting a carriage return
436 - fixed a bug in starvation command which sent the user a telegram
437 telling them how much each of their land units lost due to starvation.
438 - fixed a bug which would send you a message "RUMBLE...your sub hears
439 a depth-charge explode nearby" when you weren't navigating subs
440 (reported by Keir E. Novik)
441 - increased buffer size in emp_client from 1024 to 4096 for sync
442 class version (reported by Markus Armbruster)
443 - fixed a bug in revolt code which could damage a sector below 20%
444 without checking if it was a bridge (reported by Pat Loney)
445 - fixed a bug in SLOW_WAR which prevented you from re-inforcing your
446 own sector by assaulting (Aaron Dewell).
447 - fixed a bug in sack capping news item (reported by Ed Down)
448 - fixed a server crashing bug in "offer" command (reported by Jon Wright)
449 - fixed a bunch of info files (reported by Keir E. Novik)