client: Unbreak standalone build
[empserver] / doc / CHANGES3.0
1 Empire 3.0.0
2 - Implemented the C_SYNC RFC
3   - New commands:
4     sync
5     toggle sync
6     toggle async
7   - New files:  
8     h/edb.h
9     h/toolkit.h
10     lib/commands/sync.c
11     lib/global/edb.c
12     lib/subs/prsync.c
13     info/Commands/sync.t
14     doc/CHANGES3.0
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
23     go to negative mob).
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
46     and more.
47
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
67
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
74   deleted.
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
81   "info sharebmap".
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.
96
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
115   not be spooled.
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!)
133
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).
163
164 Empire 3.0.5 beta
165
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.
172
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").
208
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 .
233     1024 left:
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
238   to:
239     if (mcost < 25)
240       cost = (2 + (3 - mcost) * eff) / 5
241     else
242       cost = (mcost - 20 * eff) / 5
243
244 OLD SYSTEM: eff   0%  100%     NEW SYSTEM: eff   0%  100%
245               +  0.2   0.0                   +  0.4   0.0
246               m  0.4   0.2                   m  0.4   0.2
247               ^  5.0   4.8                   ^  5.0   1.0
248
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
257   assault).
258 - Added a new C_SYNC field to SCT_OBJECT called "coastal".  This results
259   in a new version of the C_SYNC protocol.
260
261 Empire 3.0.7
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
265   haven't met yet
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
278   a non-at-war ship.
279
280 Empire 3.0.8
281 - Removed an infinite from the autonav code.
282 - Fixed the "client" login command.
283
284 Empire 3.0.9
285 - Consolidated budget code for ships, land units, & planes (Ville Virrankoski)
286
287 Empire 3.0.10
288 - Fixed a bug in radar (anonymous)
289 - Ported the server to Ultrix (Yannick Tremblay)
290
291 Empire 3.0.11
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
300   Nathaniel Thurston)
301 - route now prints % sectors (reported by Nathaniel Thurston)
302
303 Empire 3.0.12
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)
307
308 Empire 3.0.13
309 - Fixed a bug in "budget" command
310 - If cpp doesn't exist on the system, then "cc -MM" is used in place
311   of "cpp -M"
312
313 Empire 3.0.14
314 - Extensive consolidation of "budget" command with update routines
315   (Ville Virrankoski)
316 - Fixed some of the portability problems arising from the switch to "mkdep"
317 Empire 3.0.14a
318 - Fixed a server crashing bug in the update routines (introduced at 3.0.14)
319
320 Empire 3.0.15
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:
326 ----------------
327 These are the patches to make the new server work on Solaris.
328 Some notes:
329
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.
336
337     While running configure, your 'gnumake' is /opt/gnu/bin/make,
338     and the compiler you should use is /opt/gnu/bin/gcc.
339
340     My build path is something like:
341     PATH=/opt/gnu/bin:/usr/ucb:/usr/bin:/usr/sbin:.
342
343     Once you apply the patches, everything seems to work.
344
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.
350
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
354     be relied upon!
355 ----------------
356
357 Empire 3.0.16
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)
363
364 Empire 3.0.17
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).
374
375 Empire 3.0.18
376 - fixed a serious bug in configure and mkdep which prevented the
377   server from compiling
378
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.
397   (Paul Byrne)
398
399 Empire 3.0.20  Ken Stevens  21 May 96
400 [from 3.1.2]
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).
407
408 [from 3.1.3]
409 - Fixed a bug in road mobcost calculation (Steve McClure)
410 - Fixed a bug in the toggle command (reported by Keir Novik)
411
412 [from 3.1.6]
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)
419
420 [from 3.1.7]
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).
429
430 [from 3.1.16]
431 - port to Ultrix (Markus Armbruster)
432
433 Empire 3.0.21  Ken Stevens  1 July 96
434 - fixed a bug in reco & sat which wasn't putting a carriage return
435   after land units.
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)