Import of Empire 4.2.12
This commit is contained in:
commit
d8b7fdfae1
817 changed files with 126589 additions and 0 deletions
691
doc/CHANGES
Normal file
691
doc/CHANGES
Normal file
|
@ -0,0 +1,691 @@
|
|||
This file contains a list of patches/upgrades made to the server for a specific
|
||||
version. It also contains the name of the author of that particular code. It
|
||||
may not be complete.
|
||||
|
||||
*version 2.0 beta 1 release 1*
|
||||
Fixed age.c so reserves degrade normally instead of growing! - Chad Zabel
|
||||
Fixed arch.c - replaced wrapp with what was supposed to be there - Ken Huisman
|
||||
Patched bug in atta.c - a temporary patch that could be done better
|
||||
( and will be later ) - Ken H.
|
||||
patched bug in lib/commands/mail.c - Dave Pare
|
||||
added patches to make code compile under linux - Ken H. based on linux chain 3
|
||||
patches by someone else whose name I forget. Note at this time the code
|
||||
*compiles* under linux, but there are still bugs - the server seems to
|
||||
stop taking socket connections or something after someone logs out of the
|
||||
game.
|
||||
fixed a null pointer bug in lib/subs/bigmap.c - Chad Zabel
|
||||
|
||||
*version 2.0 beta 1 release 2*
|
||||
Patch for exec bug - Chad Zabel
|
||||
|
||||
*version 2.0 beta 1 release 3*
|
||||
Patch for zepplin bug - Jim Ortlieb
|
||||
Added unixware(svr4.2) specific stuff to arch.c - Doug Hay
|
||||
Changes to h/lwp.h and lib/lwp/lwp.c for thread stack checker - Doug Hay
|
||||
|
||||
*version 2.0 beta 1 release 4*
|
||||
Modified fairland.c to 1.6.2 and made it so translate_continents is only
|
||||
called when BLITZ is defined - Ken Huisman, Ken Stevens
|
||||
Modifications to lwp.h and arch.c to fix linux threads - Scott Ferguson
|
||||
|
||||
*version 2.0 beta 1 release 5*
|
||||
Changed version number to 2.0.0 - Ken Huisman
|
||||
fixed unterminated path bug in lib/common/path.c - Scott Ferguson
|
||||
fixed first part of bug described in wish list item c6 ( false resupply ) -
|
||||
Scott Ferguson
|
||||
fixed part of bug described in wish list item t3 ( you have 666 new telegrams
|
||||
bug ) - the bug that tells you you have 1 new telex after just reading it is
|
||||
not fixed - Scott Ferguson
|
||||
|
||||
*version 2.0 beta 1 release 6*
|
||||
Three letter abbreviations for all ships in ship.c - Chad Zabel
|
||||
the following by Kevin Klemmick:
|
||||
/lib/commands/rea.c // fixed telegram's problem reading '%'
|
||||
/lib/commands/mail.c // ditto for mail and wmail
|
||||
/lib/subs/aircombat.c // New air code and bug fixes
|
||||
/lib/subs/mission.c // New air code and bug fixes
|
||||
/lib/subs/pr.c // new prnf function an bug fixes
|
||||
/lib/subs/paths.c // fixes the getpath() bug.
|
||||
added NEWPAF and HIDDEN to options.h ( commented out for now until
|
||||
testing is complete ) - Ken H.
|
||||
|
||||
*version 2.0 beta 1 release 7*
|
||||
Fix for fix for exec bug ( lib/player/player.c ) - Chad Zabel
|
||||
fixed minor bug in aircombat.c ( missing quote on line 613 ) - Ken H.
|
||||
|
||||
*version 2.0 beta 1 release 8*
|
||||
lib/commands/mfir.c Bugfix... in quiet_bigdef, added in a check
|
||||
for forts >60%. They were getting cheated out of their bonus in the return
|
||||
fire process. - Chad Zabel
|
||||
AIX Port: files
|
||||
lib/lwp/{GNUmakefile,arch.c,lwp.c,lwpint.h} and
|
||||
make/Systems/aix modified
|
||||
- All changes are surrounded by #ifdef AIX32.
|
||||
- one change to lwp.c that will apply to everyone one error
|
||||
message changed so it says underflow instead of overflow in the stack
|
||||
checking code.
|
||||
- Bill Canning
|
||||
|
||||
*version 2.0 beta 1 release 9*
|
||||
You can now specify how many mil to board a ship with (wishlist item a1) so
|
||||
you don't strand your ship. This is implemented as another parameter
|
||||
in the board command. Documentation for board updated too! - Chad Zabel
|
||||
|
||||
- Addition of the HIDDEN and NEWPAF Mods (Major addition). - Kevin Klemmick
|
||||
|
||||
*version 2.0 beta 1 release 10*
|
||||
lib/player/player.c compilation under linux was broken by previous patches
|
||||
this is fixed now - Ken H.
|
||||
|
||||
*version 2.0 beta 1 release 11*
|
||||
fixed compilation under sunos (lib/lwp/lwp.c had a couple odd '\' characters
|
||||
in it that caused the sun compiler to complain) - Ken H.
|
||||
|
||||
*version 2.0 beta 1 release 12*
|
||||
added 3 character abbreviations for land unit names - Chad Zabel
|
||||
fixed bug in "show sect build" command - Ken Huisman
|
||||
added check in neweff command to see if sector is stopped - Chad Zabel
|
||||
added test for war declaration before abm launch - Chad Zabel
|
||||
|
||||
*version 2.0 beta 1 release 13*
|
||||
added thread debugging stuff - Dave Pare
|
||||
changes to autonav code - Chad Zabel
|
||||
fixes for minor bug in land unit names - Chad Zabel
|
||||
fix for build.t in docs - Chad Zabel
|
||||
simple fix for spy command - Chad Zabel
|
||||
fix for telegrams - Julian Onions
|
||||
fixup of makefile in util - Julian Onions
|
||||
|
||||
*version 2.0 beta 1 release 14*
|
||||
fix bugs in lwp - Julian Onions
|
||||
fix bug in edit that caused server crash - Julian Onions
|
||||
fix bugs in attack command that allowed free resource creation - Chad Zabel
|
||||
fix bug that made countries in sanctuary lose money - Chad Zabel
|
||||
|
||||
*version 2.0 beta 1 release 15*
|
||||
io bug fixes and misc code changes - Dave Pare
|
||||
removal of sanctuary print statements to reduce logfile sizes - Ken Huisman
|
||||
DEC Alpha port - Dave Pare and Ken Stevens
|
||||
|
||||
*version 2.0 beta 1 release 16*
|
||||
made compiling/configuring easier (see READ_THIS_FIRST) - Ken Stevens
|
||||
fix bug in info.c that caused crash - Janjaap van Velthooven
|
||||
fix for land units - Chad Zabel
|
||||
|
||||
*version 2.0 beta 1 release 17*
|
||||
major improvements/cleanup of info pages and related files - Ken Stevens
|
||||
changes to compile scripts - Ken Stevens
|
||||
|
||||
*version 2.0 beta 1 release 18*
|
||||
fixed missile sub abbreviation in ship file - Ken Stevens
|
||||
added "are you sure" in build command to prevent accidents - Ken Stevens
|
||||
fixed production simulation report showing "e" sectors producing - Ken Stevens
|
||||
fixed LandUnits subject not being listed in "info". - Ken Stevens
|
||||
fixed so unload only works in your sector or ally's sector - Ken Stevens
|
||||
fixed error in sweep when sector efficiency is printed - Ken Stevens
|
||||
fixed telegrams reporting bombing damage - Ken Stevens
|
||||
fixed cede so you can only cede to allies - Ken Stevens
|
||||
fixed coastwatch to show ship names - Ken Stevens
|
||||
build command gives informative error message if you are building
|
||||
in the wrong type of sector or the sector is < 60% eff. - Ken Stevens
|
||||
build command does not prompt for tech level if not given on command
|
||||
line - assumes current tech level - Ken Stevens
|
||||
tech for aegis cruisers was increased - Ken Stevens
|
||||
payoff command lists how many sectors ship has travelled - Ken Stevens
|
||||
fixed bug that allowed planes to bomb from an airport <60% efficient - Ken Stevens
|
||||
fairland now adds two visitor countries in its newcap script - Ken Stevens
|
||||
fixed bug that crashes the server when 'power' is first done in game
|
||||
without doing a 'power new' first - Ken Stevens
|
||||
test command no longer aborts if you don't have enough of an item in a sector,
|
||||
it still performs the test but gives a warning - Ken Stevens
|
||||
you now get a telegram when someone loads something onto your ship - Ken Stevens
|
||||
fixed documentation on happiness - Ken Stevens
|
||||
you now get the country name when a country becomes hostile, not just the
|
||||
country number - Ken Stevens
|
||||
fixed so start land unit is if1 instead of if2 - Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 1*
|
||||
Build command has last two arguments switched ( tech and number - documentation
|
||||
updated as well ) - Ken Stevens
|
||||
Added new info page summarizing whats new in Empire2 - Ken Stevens
|
||||
/info/Subjects/TOP.t now includes LandUnits subject - Ken Stevens
|
||||
info/Subjects/Server.t refers to the Empire2 info page now - Ken Stevens
|
||||
Bug in happiness and education calculation on zero population fixed
|
||||
- Ken Stevens
|
||||
Aircombat aborted wasn't being printed properly - fixed - Ken Stevens
|
||||
Plane types sorted to be consistant with ships and units - Ken Stevens
|
||||
Wish list item m2! fixed - missiles on interdiction missions on subs
|
||||
won't fire - missiles are now allowed to be on ships with "miss" capability
|
||||
- the missile code and the load code now agree as to what kinds of planes
|
||||
can be on what kinds of units - Ken Stevens
|
||||
Comments added to ship.c explaining why M_XLIGHT, M_UNIT and M_MSL no
|
||||
longer need to be set there ( they are automatically set in global_init()
|
||||
- Ken Stevens
|
||||
fixed wishlist item s16! - subs on interdiction missions no longer fire
|
||||
on other subs, when they don't have sub-torp ability. - Ken Stevens
|
||||
fixed division by zero error in lib/subs/supply.c ( occurs when a cargo
|
||||
ship supplies itself to increase its efficiency in a harbour) - Ken Stevens
|
||||
cosmetic change to lib/commands/load.c - Ken Stevens
|
||||
Fixed wishlist item p9! ( non-VTOL missiles won't fly missions unless they
|
||||
are in a 60% airport) - fixed by making all missiles VTOL by definition.
|
||||
- Ken Stevens
|
||||
lmine command now allows you to specify more shells than the unit has,
|
||||
and the unit will automatically resupply until all the mines specified are
|
||||
laid ( wishlist item l1?) - Ken Stevens
|
||||
The problem with land mines becoming sea mines is now fixed entirely
|
||||
(wishlist item c2!) - Ken Stevens
|
||||
0% banks, etc. no longer resist shell fire better than a 0% other sector type.
|
||||
( wishlist item c3!) - Ken Stevens
|
||||
fixed printing problem in sweep command - Ken Stevens
|
||||
fixed telegrams using the word "Oamage" instead of damage when reporting
|
||||
bombing damage. - Ken Stevens
|
||||
lib/global/init.c - cosmetic change - Ken Stevens
|
||||
added wall and shutdown commands and corrected syntax on some deity
|
||||
commands - Ken Stevens
|
||||
added pr_wall() which is like pr_flash() except that it prints to
|
||||
all connected players. - Ken Stevens
|
||||
added shutdown comand to shutdown server with warnings to connected
|
||||
players - Ken Stevens
|
||||
fixed reference to "info syntax" - Ken Stevens
|
||||
added toggle command, which allows players to set their "inform" flag, which,
|
||||
when set, causes the server to send a line to the client the
|
||||
instant the player receives a telegram - Ken Stevens
|
||||
flash command now checks for valid country number - Ken Stevens
|
||||
Added support for an empire configuration file so that the server can
|
||||
be reconfigured without recompiling (documentation on this included in
|
||||
README directory) - Julian Onions
|
||||
fix for standard empire client so it doesn't drop characters on long
|
||||
scripts - Dave Pare
|
||||
Changed flash command so that you only get flashes from your alllies if
|
||||
you have toggled your flash flag on - using 'toggle flash' to
|
||||
toggle your flash command on and off and documentation changed - Ken Stevens
|
||||
designate command now warns you if you are spending >50% of your money
|
||||
designating forts, and will ask you "are you sure?" if you are going
|
||||
to go broke from it - Ken Stevens
|
||||
A temporary input buffer needed a size increase in buil.c - Ken Stevens
|
||||
Wish list item c5! - fixes it so you are told how much it will cost when
|
||||
you are designating sectors, or converting civs to slaves, and it warns
|
||||
you if you are going to go broke from it. The server will also not let you
|
||||
build, harden, or upgrade anything you cannot afford - Ken Stevens
|
||||
fixed -h parameter on server ( caused crash ) - Ken Huisman
|
||||
new commands added for use during navigation and unit marching - 'M' for
|
||||
drawing a map and 'B' for drawing a bmap - Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 2*
|
||||
Deleted some files no longer necessary.
|
||||
- deity "map" fixed - wasn't showing sector designations.
|
||||
- deity "shutdown" fixed - didn't work.
|
||||
- player "board" fixed - was loosing all mil on ships.
|
||||
- Now when you "kill" emp_server (from your unix shell), it will send
|
||||
the flash message "Server shutting down..." to all players logged on,
|
||||
it will "abort" any command they were in the middle of with the message
|
||||
"Shutdown aborted command" (like the way update aborts commands),
|
||||
it will terminate the players connection (like the way idle
|
||||
connections are terminated) and it will close all the database files.
|
||||
In other words, "kill" fromoutside the server now does the same thing
|
||||
as the deity "shutdown" command does from inside the server.
|
||||
- New player command "strength" calculates sector defense strength
|
||||
(including bonuses from reacting units but excluding air/fort/arty support).
|
||||
I think this command will help newbies set up a defense better.
|
||||
- If you've already compiled once, and you're just working on stuff in
|
||||
the server, then you can now type "compile quick" which will skip
|
||||
dependall, util, and client (and compile in about a quarter the time).
|
||||
|
||||
The above were all done by Ken Stevens ( I think ) on b2r1b
|
||||
|
||||
- added "toggle beep" so that you can now play Empire without beeping
|
||||
every time you fire if you so choose (handy for those emergency
|
||||
updates in the department computer room).
|
||||
- "configure" now asks you where you keep your "gnumake".
|
||||
- Fixed a couple of bugs in the configure script
|
||||
- "toggle" flags moved from player to natstr so they're saved
|
||||
- fixed malloc() pointer mismatches to make cc happy
|
||||
- ported "shutdown" to Sun4
|
||||
- Julian Onions ported his econfig code to Sun4
|
||||
|
||||
The above are from b2r1c
|
||||
|
||||
The following are fixed ( as of b2r1d ):
|
||||
- The infamous "scuttle" bug. Now the owner of units is always set
|
||||
to zero as soon as the unit is created. (By "created" I am referring
|
||||
to when you build 1 plane and ef_extend() creates 49 more -- the owner
|
||||
of all 50 is now initialized to zero.)
|
||||
- A C_INFORM packet was being sent to the client when an announcement was
|
||||
made. Oopsie on my part. Now fixed.
|
||||
- "fortifying" a unit no longer clears the unit's mission.
|
||||
- New script "keepitup" is a modified isempireup except that you don't
|
||||
have to put any info about the game in the file itself, so if
|
||||
you're like me and you have more than one game running, you now only
|
||||
need to keep one script around.
|
||||
|
||||
b2r1e patch moved files from util into old/util
|
||||
|
||||
b2r1f contained the following:
|
||||
This patch was submitted by Julian Onions.
|
||||
- General option handling, + BLITZ option changes
|
||||
throughout. There is one new file lib/global/options.c which has the
|
||||
option definitions in.
|
||||
- The following options are now dynamically switchable
|
||||
NOFOOD, BLITZ, EASY_BRIDGES, RES_POP, NEW_WORK,
|
||||
NEW_STARVE, NO_PLAGUE, NEWPOWER ALL_BLEED, DRNUKE
|
||||
SUPER_BARS, NUKEFAILDETONATE, PINPOINTMISSILE
|
||||
- also fix up a stupid test in laun.c, and some reworking of the
|
||||
SHIPNAME (plus a bug fix for Sub launched SHIPNAMES).
|
||||
|
||||
b2r1g fixed a bug in b2r1f.
|
||||
b2r1h moved a file from old/util back to util
|
||||
b2r1i contained the following:
|
||||
This patch was submitted by Julian Onions.
|
||||
- The following options are now dynamically switchable
|
||||
FUEL, ORBIT, NEUTRON
|
||||
- The new file README/README.config describes how to use the new "econfig"
|
||||
runtime configuration stuff..
|
||||
- Now when you type "version", you will also get the patchlevel of
|
||||
the code.
|
||||
|
||||
b2r1j contained the following:
|
||||
This patch was submitted by Kevin Morgan.
|
||||
- xdist and ydist are now in player coordinates (wish list item i2)
|
||||
- emp_client now calls termio until all bytes have been copied into
|
||||
the socket (wish list item x19).
|
||||
|
||||
b2r1k contained the following:
|
||||
This patch was submitted by Sasha Mikheev.
|
||||
- This patch ports lwp threads to Linux.
|
||||
|
||||
b2r1l contained the following:
|
||||
This patch was submitted by Julian Onions.
|
||||
- Options NOMOBCOST and GRAB_THINGS are now runtime configurable.
|
||||
|
||||
b2r1m contained the following from Ken Stevens:
|
||||
|
||||
WARNING: Although I have heavily tested the code, I'm sure that it still has
|
||||
a significant number of bugs.
|
||||
|
||||
This patch contains the following changes:
|
||||
- fixed a bug in configure which was not making compile a csh script which
|
||||
resulted in grep not working.
|
||||
- shipdamage() now always multiplied by 63/m_armor. I made the
|
||||
appropriate changes to all places that call shipdamage(). Also,
|
||||
shipdamage() will now tell the player exactly how much their ship
|
||||
was damaged.
|
||||
- a new function mpr(cnum, format, args) will pr() to cnum if they
|
||||
are player and send them a telegram otherwise.
|
||||
- sail, autonav, and nav now all call the same functions. Thus mine
|
||||
damage and interdiction damage are now calculated using exactly the
|
||||
same formulas. This makes heavy use of mpr().
|
||||
- navigation now has two more lcommands. "i" will list the ships you're
|
||||
navigating, and "f" will change the flagship.
|
||||
- Now you can type commands like this:
|
||||
nav 72 jlsruMluBursh
|
||||
That is, you can mix directions with other navigation commands.
|
||||
- Interdiction of navigating ships now works as follows:
|
||||
1. Forts interdict.
|
||||
2. If there are any ships left, land arty interdiction fires.
|
||||
3. If there are any ships left, ships on interdiction fire.
|
||||
4. If there are any ships left, interdiction missiles fire one at a time.
|
||||
5. If there are any ships left, interdicting planes pinbomb.
|
||||
- I'm sure that I've made some changes which have slipped my mind
|
||||
|
||||
b2r1n contained the following from Ken Stevens:
|
||||
|
||||
WARNING: Although I have tested most of the new code, I'm sure that it
|
||||
still has a significant number of bugs.
|
||||
|
||||
This patch contains the following changes:
|
||||
- I went through all of the Empire info pages and updated them to
|
||||
match the current code. I completely rewrote large portions of the
|
||||
following info pages: "move", "bomb", "launch", "navigate", and
|
||||
"Plane-types".
|
||||
- Fixed a bug in the "configure" script which was resulting in a pile
|
||||
of "kw_read" erros in the logfile.
|
||||
- Changed the logfile output to make it much easier to read. Note:
|
||||
this will break current logfile parsers. I'll rewrite any that people need.
|
||||
- It is now possible to specify start-tech/happ/research/edu in
|
||||
econfig (Thanks Julian!). I'm using this in my blitz to start
|
||||
countries at tech 100.
|
||||
- When things are damaged by interdiction, the sector they were
|
||||
moving into will suffer collateral damage.
|
||||
- Surface missiles can now be put on interdiction mission. To
|
||||
distinguish them from anti-ship missiles, the latter have been given
|
||||
"marine" capability.
|
||||
- Planes and missiles can now hold at most one nuclear warhead.
|
||||
- Nuclear warheads on planes and missiles will now detonate when that
|
||||
plane or missile flies an interdiction mission.
|
||||
- I have removed the "n" option from the "bomb" command. If you want
|
||||
to nuke something, just arm the plane with a nuke and bomb "s". This
|
||||
simplification makes the above change consistant with "bomb".
|
||||
- When you launch a satellite, then any country AT_WAR with you will
|
||||
try to intercept it with a-sats. This uses exactly the same code as
|
||||
abm defense - two missiles are fired. Also, if a satellite is
|
||||
positioned over a sector which is not owned by your ally, then they
|
||||
will get a telegram informing of the positioning.
|
||||
- missiles on missions will stop launching once 100 damage has been
|
||||
done (in the case of surface interdiction) or all the ship s have been
|
||||
sunk (in the case of ship interdiction).
|
||||
- deliver now costs the same as distribute (4x cheaper).
|
||||
- there is now only one function called to determine whether a plane/missile
|
||||
hits its target and how much damage is done (this includes abms and
|
||||
asats). Thus the chance of a plane hitting its target is now the same
|
||||
whether the plane was flying a mission or flown by hand. The only
|
||||
exception to this is pinbombing land units where interdicting planes
|
||||
have a 100% chance of hitting unlike pinbombers flown by hand which
|
||||
have a chance of missing. I plan to fix this later.
|
||||
- many functions were rewritten to use mpr() instead of pr(). mpr()
|
||||
checks to see if the person is interactive, and if they are calls
|
||||
pr(), and otherwise calls wu(). All PR() functions should really
|
||||
be changed to mpr() but I'm too lazy to do it. Also, I'm sure that I
|
||||
missed a few pr()'s and so the server may still occassionally try to
|
||||
pr() to a player not logged on.
|
||||
- I used lint to remove alot of unused variables, declare some
|
||||
functions void, and fix unsigned char comparisons with zero.
|
||||
|
||||
b2r1o contained the following from Ken Stevens:
|
||||
|
||||
WARNING: Although I have tested most of the new code, I'm sure that it
|
||||
still has a significant number of bugs.
|
||||
|
||||
This patch contains the following changes:
|
||||
- Added "Friendly" relations--you can nav/load/unload in friendly harbours.
|
||||
See info Empire2 or info relations.
|
||||
- Changed the order of relations so now you can write code like
|
||||
if (rel < FRIENDLY) ... or ... if (rel >= HOSTILE)
|
||||
- Cap sacking now makes the news.
|
||||
- Fixed a bug in sub interdiction (bug introduced by me in r1n).
|
||||
- Fixed a bug in supply code (introduced by Julian in r1f).
|
||||
- Moved relation-change stuff out of decl.c and into subs/rej.c setrel().
|
||||
So now, no matter how a country becomes hostile, both parties will
|
||||
get a tele and it will make the news. Also, much of this code was
|
||||
simplified using the new heuristic that bad rel is always < good rel.
|
||||
- Changed spy output. New headers are:
|
||||
sect type own oldown eff civ mil shl gun pet food bars units planes
|
||||
- Changed all relevant info pages.
|
||||
- Completely rewrote info relations.
|
||||
|
||||
*version 2.0 beta 2 release 3*
|
||||
CC is now configurable - Ken Stevens
|
||||
"scuttle", "scrap", "mission", and "fuel" commands now let you put "l"
|
||||
instead of having to type "la" like before - Ken Stevens
|
||||
BIG_CITY option added - Ken Stevens
|
||||
fixed bugs in "demob", "navi", and setrel() - Ken Stevens
|
||||
fixed bug in flash command - Ken Stevens
|
||||
removed spurious \B from pr statement in torp.c - Julian Onions
|
||||
fixed missing issneak variable for SLOW_WAR case in atta.c and
|
||||
assa.c - Julian Onions
|
||||
rej.c not using correct variable for SLOW_WAR option, fixed - Julian Onions
|
||||
parameters added to fairland.c as follows:
|
||||
-o -- don't allocate ore (default is to allocate as before)
|
||||
-q -- non chatty mode - little if any output
|
||||
-a -- use the '*' mark to mark contents (AIRPORT_MARKER)
|
||||
-i -- allow islands to crash and merge
|
||||
-s <file> -- alternate script file (default newcap_script)
|
||||
- Julian Onions
|
||||
maketgame script added - used to make a temporary test game
|
||||
use as
|
||||
maketgame -d /tmp/data 5 100
|
||||
to make a temporary game in /tmp/data with 5 countries and 100 sectors each.
|
||||
- Julian Onions
|
||||
fix to make compile script call bin/pconfig instead of util/pconfig
|
||||
- Craig Leres
|
||||
|
||||
*version 2.0 beta 2 release 4*
|
||||
forts must be 5% efficient to fire or provide support( effic. level settable in
|
||||
options.h - default is 5%) - Ken Huisman
|
||||
fixes for the BIG_CITY option - Ken Stevens
|
||||
another fix for compile.in - Ken Stevens
|
||||
added skywatch command - Ken Stevens
|
||||
fixed bug in "conv" command - Ken Stevens
|
||||
fixed error message in "launch" - Ken Stevens
|
||||
now you get a telegram if an enemy sat moves over your sector at the update
|
||||
- Ken Stevens
|
||||
attack command partially rewritten to clean up several problems - Chad Zabel
|
||||
launch command now checks to see if a ship was sunk by a ship-ship
|
||||
missile and tells the attacker - Chad Zabel
|
||||
new missile/anti-missile code - Chad Zabel
|
||||
configure script chokes if you are logged in more than once - Craig Leres
|
||||
fix for compiling with gcc 2.6.0 under sunos 4.1.4 regarding the
|
||||
sprintf() prototype in misc.h.in - Craig Leres
|
||||
got rid of two lines of code that didnt do anything in sail.c - Craig Leres
|
||||
fixed several other compiler warnings - Craig Leres
|
||||
server checks for invalid values of s_p_etu - Craig Leres
|
||||
some variables did not get initialized in lwp.c (fixed)
|
||||
- Janjaap van Velthooven
|
||||
fixed and heavily modified deliver command - Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 5*
|
||||
fixed spelling error in desi.c - Ken Huisman
|
||||
new command "players" which lists all players currently logged on with idle
|
||||
time and last command - Ken Stevens
|
||||
several plane damage bugs fixed - Ken Stevens
|
||||
Interdiction damage now same as it would be interactively (ie. through
|
||||
shelling or bombing or whatever ) - Ken Stevens
|
||||
march command rewritten with a smoother interface - Ken Stevens
|
||||
fixed bug in attack command that crashed the server - Ken Stevens
|
||||
code changed so if your action caused a bridge to fall you see a message
|
||||
on the screen instead of getting a telegram - Ken Stevens
|
||||
man pages for the empire executables now available in the man
|
||||
directory - Ken Stevens
|
||||
fixed a server crashing bug in fuel command - Ken Stevens
|
||||
'c' sector is now called a "city" when BIG_CITY option used - Ken Stevens
|
||||
nuke subs now come at the same tech as nuke warheads - Ken Stevens
|
||||
deities no longer ever run out of BTUs - Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 6*
|
||||
Max range of anti-ship missiles reduced - Ken Stevens
|
||||
fixed it so you dont have to logout and log back in to re-enable commands
|
||||
when you come out of bankruptcy - Ken Stevens
|
||||
new skywatch command added for finding sats - Ken Stevens
|
||||
you can no longer fortify land units that are on ships - Ken Stevens
|
||||
missile range in launch vs. interdiction has been reconciled - Ken Stevens
|
||||
'tend' syntax now same as 'load', and you can now tend land units which
|
||||
have 'assault' capability - Ken Stevens
|
||||
fix for bug in realm command - Ken Stevens
|
||||
fixed a sector damage bug introduced in 2b2r4 - Ken Stevens
|
||||
fixed bug in show n b - Ken Stevens
|
||||
fixed typo in Interdiction.t - Ken Stevens
|
||||
fixed bug in telegram that caused server crash in certain instances - Ken Stevens
|
||||
commodity damage routines reconciled to ensure that people damage is always
|
||||
factored by the global variable people_damage. - Ken Stevens
|
||||
fixed news items that were mis-reporting - Ken Stevens
|
||||
fixed bug in missile-ship interdiction - Ken Stevens
|
||||
added support in emp_client for C_FLASH and C_INFORM messages - Ken Stevens
|
||||
fixed major bug in takeover() - Ken Stevens
|
||||
fixed an incorrect message which would get printed when nukes were
|
||||
dropped from bombers. - Ken Stevens
|
||||
pinbombing output changed slightly - Ken Stevens
|
||||
fixed bug in "land" - Ken Stevens
|
||||
fixed bug in "power" - Ken Stevens
|
||||
news cleaned up a bit - Ken Stevens
|
||||
new info page on clients added - Ken Stevens
|
||||
fixed several typos - Ken Stevens
|
||||
new map code - Chad Zabel
|
||||
fixes bug in BIG_CITY code when redesignated - Ken Stevens
|
||||
fixes bug in redesignating of warehouses when sector has large amount of an
|
||||
item - Ken Stevens
|
||||
fixed bug in new empire client - Ken Stevens
|
||||
improved 'play' command - Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 7*
|
||||
people with toggle inform on are now told at login if they have telegrams
|
||||
- Ken Stevens
|
||||
fixed bug in client - Ken Stevens
|
||||
fixed scheduled update scheme (updates were not firing) - Ken Stevens
|
||||
fixed negative avail bug - Ken Stevens
|
||||
mail and wmail commands removed from server due to bugs - Ken Stevens
|
||||
configure by default does not overwrite the hours file now - Ken Stevens
|
||||
"build b 2,2 j" now permitted - Ken Stevens
|
||||
fixed rounding error resulting in negative avail - Ken Stevens
|
||||
fixed several typos in the docs - Ken Stevens
|
||||
fixed sub-detect chance for asw planes - Ken Stevens
|
||||
prevent players from rejecting stuff from the deity - Ken Stevens
|
||||
removed missingmissiles option ( not used ) - Ken Stevens
|
||||
removed reference to now standard SHIPSAM option - Ken Stevens
|
||||
added "Balance of Power" page at the bottom of the news - Ken Stevens
|
||||
re-introduced "pray" command - Ken Stevens
|
||||
added collateral damage from missiles hitting units - Ken Stevens
|
||||
fixed bug in attack - Ken Stevens
|
||||
fixed bug in budget command - Ken Stevens
|
||||
fixed command cutoff command - Ken Stevens
|
||||
fixed bug in retr command - Ken Stevens
|
||||
"realm x" now gives error - Ken Stevens
|
||||
mfir and torp were not telling the attacker if the ship got sunk - Ken Stevens
|
||||
planes on carriers which were >80% eff were being reduced to 80% eff, fixed.
|
||||
- Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 8*
|
||||
fixed bug in pinbombing and interdiction - Ken Stevens
|
||||
server crashed when trying to get friendly nations to interdict - Ken Stevens
|
||||
bombers were being launched as interdiction missiles ( oops!) - Ken Stevens
|
||||
server crashing bug in flash - Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 9*
|
||||
got rid of annoying "destroying done" message - Ken Stevens
|
||||
compile.in changed - by default dont overwrite econfig - Ken Stevens
|
||||
new global configurable variable assault_penalty = 0.50 - Ken Stevens
|
||||
fixed commodity damage - Ken Stevens
|
||||
added global string var used by attsub.c - Ken Stevens
|
||||
added new option INTERDICT_ATT - Ken Stevens
|
||||
cities are now navigatable if BIG_CITY is on - Ken Stevens
|
||||
fixed server crash on friendly overfly - Ken Stevens
|
||||
changed march and lndsub to use attsub routines - Ken Stevens
|
||||
no longer get kicked out of navi prompt of you bump into something - Ken Stevens
|
||||
doubled ship pinbomb damage - Ken Stevens
|
||||
get warned if your message is truncated in flash - Ken Stevens
|
||||
fixed bug in strength command - Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 10*
|
||||
new starvation command checks for starving ships and units as well - Ken Stevens
|
||||
fixed a bug causing land units to starve - Ken Stevens
|
||||
added new [ynYNq?] syntax to attack - Ken Stevens
|
||||
fixed a bug that resulted in stranded units - Ken Stevens
|
||||
caps are called cities if BIG_CITY is on - Ken Stevens
|
||||
new power command allows syntax "power c 3/6/14" - Ken Stevens
|
||||
fixed bug in news report - Ken Stevens
|
||||
fixed spelling errors in info pages - Ken Stevens
|
||||
can now type sector number at marc and navi prompt to move unit there - Ken
|
||||
Stevens
|
||||
changed output format of budget - Ken Stevens
|
||||
can load and unload in 2% cities - Ken Stevens
|
||||
fixed bug that caused blitzes to starve if food was on - Ken Stevens
|
||||
fixed bug in plane maps - Ken Stevens
|
||||
changed YN to mean units in same army - Ken Stevens
|
||||
added "Attack aborted" message - Ken Stevens
|
||||
fixed bugs in plnsub.c, bomb.c budg.c - Ken Stevens
|
||||
fixed ship sunk bug in mfir.c - Ken Stevens
|
||||
added "Assault aborted" message - Ken Stevens
|
||||
fixed ship sunk bug in torp.c - Ken Stevens
|
||||
you can now unload to up to 9999 in a sector - Ken Stevens
|
||||
fixed bug in news - Ken Stevens
|
||||
removed BETTERABM option - Ken Stevens
|
||||
shutdown now asks you before automatically disabling updates - Ken Stevens
|
||||
fixed lots of nuclear detonation related bugs - Ken Stevens
|
||||
fixed supply bug - Chad Zabel
|
||||
fixed bug so nukes now dissapear when you use them - Ken Stevens
|
||||
harbour police bug fix - Chad Zabel
|
||||
land units no longer see planes on ships with look command - Ken Stevens
|
||||
fixes for autonav - Chad Zabel
|
||||
fixed bug that crashed server - Ken Stevens
|
||||
fixed paradrop bug - Ken Stevens
|
||||
ship damage improved - Ken Stevens
|
||||
made land unit abbreviations 4 chars long - Chad Zabel
|
||||
shortened the tele time tolerance from 60 sec. to 5 sec. - Ken Stevens
|
||||
rewrote atta/assa/para/boar - see Attack.t for details - Ken Stevens
|
||||
fixed bug in strength command - Ken Stevens
|
||||
|
||||
*version 2.0 beta 2 release 11*
|
||||
fixed bug in strength command - Ken Stevens
|
||||
documented all the new attack stuff - Ken Stevens
|
||||
new arm command lets you specify groundburst or airburst at arming time - Ken
|
||||
Stevens
|
||||
fixed bug in cede command - Ken Stevens
|
||||
lowered damage land mines do to units - Ken Stevens
|
||||
consolidated commodity landmine damage code - Ken Stevens
|
||||
fixed minor bug in flash - Ken Stevens
|
||||
new documentation - Ken Stevens
|
||||
fixed bug in ship damage - Ken Stevens
|
||||
mi1's were interdicting commodities - fixed - Ken Stevens
|
||||
added to pre_write a check for 0 civ => oldown = own - Ken Stevens
|
||||
fixed minor bug in attack sub file - Ken Stevens
|
||||
fixed major bug in lmine - Ken Stevens
|
||||
changed repo output format to give more information - Ken Stevens
|
||||
fixed bug in setsect (deity command ) - Ken Stevens
|
||||
fixed ship and land unit starve routines - Ken Stevens
|
||||
new code replaces the old missdef code - Ken Stevens
|
||||
fixed bug in land unit starve code - Ken Stevens
|
||||
new deity command "swap" swaps two sectors - Ken Stevens
|
||||
fixed board estimate bug - Ken Stevens
|
||||
fixed bug in repo command - Ken Stevens
|
||||
updated more documentation - Ken Stevens
|
||||
updated keepitup script - Ken Stevens
|
||||
3 letter abbreviations for asats - Ken Stevens
|
||||
harbors now get warehouse packing bonus - Ken Stevens
|
||||
you can now type "decl h *" to declare hostile with everyone - Ken Stevens
|
||||
deities no longer start out at war with everyone - Ken Stevens
|
||||
coun command disabled (doesnt work right anyways) - Ken Stevens
|
||||
re-fixed news bug in torp - Ken Stevens
|
||||
made non-deity version of players command with limited info - so players
|
||||
can see if deity is on - Ken Stevens
|
||||
changed name of swap command to swapsector - Ken Stevens
|
||||
more documentation - Ken Stevens
|
||||
increased stack space and got rid of "idle connection terminated" message
|
||||
that would appear sometimes when you logged in - Ken Stevens
|
||||
fixed server crashing bug in decl command - Ken Stevens
|
||||
fixed a bug in repo command - Ken Stevens
|
||||
fixed bug in that you were becoming the oldown of conquered sectors
|
||||
immediately - Ken Stevens
|
||||
implemented prship() prland() and prplane() functions to simplify
|
||||
the SHIPNAMES stuff - Ken Stevens
|
||||
moved prbuf() to xy.c - Ken Stevens
|
||||
players now being told where missile is being launched from - Ken Stevens
|
||||
chance of missile exploding on launch pad reduced to
|
||||
5% * (1 - tech factor). - Ken Stevens
|
||||
fixed crash in missiles - Ken Stevens
|
||||
changed "geosynchronous" to "geostationary" - Ken Stevens
|
||||
fixed crash in torp command - Ken Stevens
|
||||
fixed a bug in nuke damage - Ken Stevens
|
||||
fixed a bug in getpath() - Ken Stevens
|
||||
fixed up the newbie intro info pages - Ken Stevens
|
||||
fixed bug in strength command using offense rather than defense strength - Ken
|
||||
Stevens
|
||||
improved launch output - Ken Stevens
|
||||
improved the way players interact with nukes - Ken Stevens
|
||||
gave update priority over shutdown - Ken Stevens
|
||||
fixed thread stacksize causing crash - Ken Stevens
|
||||
Planes will no only abort once they are less than 80% - Ken Stevens
|
||||
fixed bug causing scuttled object not to be printed - Ken Stevens
|
||||
fixed memory leak in atta/boar/assa commands - Ken Stevens
|
||||
removed the "warning: this isn't a warehouse" message in dist - Ken Stevens
|
||||
engineers with 0 mob can no longer hit a mine when trying to sweep - Ken Stevens
|
||||
changed "115% damage" to "115 damage" and added info on how to
|
||||
convert in "info Damage" - Ken Stevens
|
||||
changed shoot syntax to make it like move - Ken Stevens
|
||||
fixed bug in interdicting nukes - Ken Stevens
|
||||
added safety check for negative nukes - Ken Stevens
|
||||
75% sat now only sees 75% of sectors ( rest are blank ) - always the same
|
||||
25% are blank - Ken Stevens
|
||||
if you are over tech 290, you cannot build planes that are < tech 150
|
||||
- Ken Stevens
|
||||
fixed a bug preventing you from assaulting your own sectors - Ken Stevens
|
||||
no more multiple telegram updates - Ken Stevens
|
||||
cede 2,0 "sector" now works ( before only "sect" would) - Ken Stevens
|
||||
removed a couple noisy output lines in dist - Ken Stevens
|
||||
fixed bug in "test" command - Ken Stevens
|
||||
changed load and tend syntax to be same as move ( see info Move ) and
|
||||
rewrote lload, load, unload, and lunload, improving prompts, etc
|
||||
- Ken Stevens
|
||||
planes wich are less than 40% cannot fly - Ken Stevens
|
||||
improved the output of "report" - Ken Stevens
|
||||
fixed bug in budget - Ken Stevens
|
||||
fixed bug in "players" command - Ken Stevens
|
||||
if an attacker aborts an attack, the victim now gets a telegram - Ken Stevens
|
||||
extended toggle syntax so you can now type "toggle inform on" - Ken Stevens
|
||||
show output changed - Ken Stevens
|
||||
engineers stop working once a sector reaches 100% - Ken Stevens
|
||||
you are no longer asked if you'd like to "nuclear" bomb ( see info arm )
|
||||
- Ken Stevens
|
||||
cleaned up scripts and deity docs - Ken Stevens
|
||||
|
||||
|
||||
2b2r11 became empire 2.3.0
|
||||
further changes documented in CHANGES2.3
|
||||
|
335
doc/CHANGES2.3
Normal file
335
doc/CHANGES2.3
Normal file
|
@ -0,0 +1,335 @@
|
|||
Unless otherwise specified, the changes in this file were made by Ken Stevens
|
||||
|
||||
emp2.3.0.a.tar
|
||||
- port to IRIX - Janjaap van Velthooven
|
||||
- added "info Hidden"
|
||||
- added "doc/econfig"
|
||||
emp2.3.0.b.tar
|
||||
- fixed abm news message
|
||||
- reduced sam ranges to 2/3/4
|
||||
- fixed MAJOR bug in unload
|
||||
- arty now have to be 20% to fire
|
||||
- widened range in "player" command
|
||||
- fixed bug in "fuel"
|
||||
- fixed "starv l"
|
||||
- updated info pages
|
||||
emp2.3.1.a.tar
|
||||
- harbours weren't getting packing bonus when importing on dist.
|
||||
emp2.3.2.a.sh
|
||||
- removed a bunch of *.orig files
|
||||
emp2.3.2.b.tar
|
||||
- added #include <unistd.h> to util/*.c for Linux compatability
|
||||
emp2.3.2.c.tar
|
||||
- removed -g flag for linux because it made fairland crash on getopt()
|
||||
emp2.3.3.a.tar
|
||||
- fixed MAJOR bug in load
|
||||
- cleaned up some old global variables that weren't used any more
|
||||
- config.status no longer creates econfig (compile does it now)
|
||||
- gave _exit() an argument for Linux
|
||||
emp2.3.4.a.tar
|
||||
- fixed server crashing bug in pinbomb
|
||||
emp2.3.4.b.sh
|
||||
- cleaned out GNUdepend files for Linux
|
||||
emp2.3.4.c.tar
|
||||
- changed configure script to ask for IP address
|
||||
- made authorization check strict. NOTE: this will make it harder to install.
|
||||
- added this file
|
||||
emp2.3.4.d.tar
|
||||
- fixed a MAJOR bug in attack that was taking too much mobility.
|
||||
emp2.3.4.e.tar
|
||||
- fixed a but that was dividing by # of civs rather than multiplying
|
||||
by them for mountain caps. OOPS. This bug has been in the code for years!
|
||||
- changed the output of the "player" command.
|
||||
- fixed a minor bug in "load"
|
||||
- changed "return fire does 190% damage" to "return fire does 190 damage"
|
||||
- changed "power" so now you can specify country names in "power -c"
|
||||
- added "info BTU"
|
||||
emp2.3.4.f.tar
|
||||
- info pages are now separated into "Basic" and "Expert" level pages.
|
||||
"Basic" level pages have a * beside them on the Subjects info pages.
|
||||
- reduced "flapping" of "players" random output.
|
||||
- now include self in repo * output.
|
||||
emp2.3.4.g.tar
|
||||
- a couple more IRIX patches - Janjaap van Velthooven
|
||||
- bugfix for upgrade command - Janjaap van Velthooven
|
||||
- extended syntax for one way orders - Julian Onions
|
||||
- fixed a bug that would crash the server if an abm blew up on the launch pad
|
||||
- fixed "was sunk at" message.
|
||||
- you are now told if you abandon a sector by marching out of it.
|
||||
- if you give someone back their cap by marching/moving/exploring out
|
||||
of it, it gets changed into an agribusiness.
|
||||
emp2.3.4.h.tar
|
||||
- fixed a server crashing bug in mfir
|
||||
- telegrams to yourself no longer show up in the news
|
||||
- fixed a server crashing bug in show
|
||||
emp2.3.4.i.tar
|
||||
WARNING: I am not sure how portable this code is...
|
||||
- added hostname to struct player
|
||||
- all hostaddr validation now also checks against hostname
|
||||
- changed "player" command output to show time used and user@hostname
|
||||
emp2.3.4.j.tar
|
||||
- fixed a bug introduced in emp2.3.4.i.tar
|
||||
emp2.3.4.k.tar
|
||||
- players can now see which of their allies are logged on using the
|
||||
"players" command.
|
||||
- fixed a server crashing bug in "players".
|
||||
- you are now allowed to scrap in friendly harbours
|
||||
- ask for double confirmation for scrapping trade ships (and tell
|
||||
people to use "scuttle" instead).
|
||||
- fixed documentation for scuttle/scrap
|
||||
- you are no longer allowed to attack with supply, aa, arty, or
|
||||
security units.
|
||||
- the procedure for determining tech, research, edu, and happiness are
|
||||
now explained in precice detail in the info pages.
|
||||
emp2.3.5.a.tar
|
||||
- applied 3 patches from someone (sorry I forget who) they had to do
|
||||
with POSIX compatability
|
||||
- fixed a MAJOR bug in ltend
|
||||
- fixed a bug in "starva" which was stealing food from harbours
|
||||
- fixed a server crashing bug which occurred when you hit return at an
|
||||
attack prompt.
|
||||
- added a new command "echo" at Kevin Morgan's request
|
||||
- fixed a few minor formatting errors
|
||||
- fixed an output warning which you got when you aborted assaulting
|
||||
your own sector
|
||||
emp2.3.5.b.tar
|
||||
- fixed a bug which gave land units positive mobility if they went
|
||||
below -127 (e.g. marching into a mountain)
|
||||
- fixed a bug which required nuc missiles to have shells to launch
|
||||
- fixed a bug which was preventing choppers from landing on ships
|
||||
- fixed an error which prevented the server from compiling with
|
||||
the ORBIT option off.
|
||||
- fixed a bug which would throw the server into an infinite loop if
|
||||
two ships followed each other.
|
||||
- fixed a typo in scra.c that someone else's smart compiler caught.
|
||||
emp2.3.5.c.tar
|
||||
- cut sector damage in half (except for nukes)
|
||||
- fixed "WARNING: sector ownership changed" integrity check message
|
||||
- fixed "not in supplied harbour" message in "fuel" command
|
||||
- fixed "lost x% to starvation" message in production report
|
||||
- boarding mil no longer pack a lunch
|
||||
- The following changes were made to the sonar command:
|
||||
- will only work from ships at sea
|
||||
- will only detect ships at sea
|
||||
- will now detect the shoreline
|
||||
- will only detect things if there is a straight line of water
|
||||
between the detector and the detected (no longer works around corners)
|
||||
- now displays a map and changes your bmap
|
||||
- for ships with tech > 310, shows mines on the map with an X and
|
||||
puts the X on your bmap
|
||||
- fixed minor bug in input routine of "fire" command
|
||||
emp2.3.5.d.tar
|
||||
- Never again will you see in the news:
|
||||
TheBorg execution squads gun down helpless TheBorg civilians
|
||||
- If you lay, sweep, or hit a sea mine, then an 'X' will automatically
|
||||
be put on your bmap
|
||||
- All ships (including subs) in harbors are now visible via the "lookout"
|
||||
command by all ships (including subs) in adjacent sectors
|
||||
- Fixed a bug in sonar which was hiding subs beneath 'X's
|
||||
emp2.3.5.e.tar
|
||||
- Fixed a server crashing bug in supply routines (supply units were
|
||||
drawing petrol from themselves in infinite recursion)
|
||||
- Fixed a server crashing bug in attack code (bad return value)
|
||||
- Fixed a server crashing bug in "declare" command (null pointer)
|
||||
- Fixed a server crashing bug in "fire" command (use of freed
|
||||
memory) - Yannick Tremblay
|
||||
- Fixed bug in "edit ship" which wasn't displaying ship properly
|
||||
- Engineers assaulting from landing ships were being charged too
|
||||
much mob (bug fixed)
|
||||
- User defined plane ranges were not being used by the mission code
|
||||
(bug fixed)
|
||||
emp2.3.5.f.tar
|
||||
- Fixed a number fo bugs related to shelling - Yannick Tremblay
|
||||
- Fixed a MAJOR ship damage bug
|
||||
- The budget command has been changed so that now you may choose not to
|
||||
pay maintenance costs. Also, "mil" on ships/planes/units has been
|
||||
moved from the maintenance costs for those items to the "Military" section
|
||||
of the budget.
|
||||
- If you can not afford to maintain your ships/planes/units or you
|
||||
choose not to maintain them using the "budget" command, then they will
|
||||
loose ETU/5 % efficiency at the update.
|
||||
- If you are broke at the point of the update when it comes time to
|
||||
build something, then that thing will not be built.
|
||||
- Broke countries are now allowed to use all commands except for:
|
||||
arm assault attack board bomb build convert disarm drop enlist explore
|
||||
fire fly grind harden launch lmine mine paradrop recon satellite scrap
|
||||
shoot sweep torpedo treaty upgrade work
|
||||
- Broke countries are now allowed to use these commands:
|
||||
demobilize lload llookout load lookout lradar lrange lretreat ltend
|
||||
lunload march mission morale mquota navigate order qorder radar range
|
||||
retreat sail sonar sorder spy supply tend transport unload unsail
|
||||
emp2.3.5.g.tar
|
||||
- Fixed a server crashing bug in budget command
|
||||
- increased sea mine hitchance from mines/(mines+50) to mines/(mines+40)
|
||||
- increased sector damage from 50 * dam / (dam + 50) to
|
||||
100 * dam / (dam + 100).
|
||||
- fixed a bug which was preventing engineers from tearing down 100% sectors
|
||||
- added new <brief?> argument to sonar output which suppresses map
|
||||
- reduced land mine damage from 10 + random(20) to 6 + random(10)
|
||||
emp2.3.5.h.tar
|
||||
- Fixed server crashing bug in "morale" command.
|
||||
- Engineers no longer "raise" eff from 100 to 92, they "lower" it.
|
||||
- Engineers working are now only charged mobility for work they do
|
||||
- Ships fueling themselves now loose petrol/oil
|
||||
- Now, when a sector is abandoned or revolts, the takeover() function
|
||||
is called to stop production, wipe distribution levels, etc...
|
||||
- Engineers are now charged 1 mobility point per land mine laid
|
||||
- Added number of land mines in the sector to the "strength" output
|
||||
- Fixed lots of typos
|
||||
emp2.3.5.i.tar
|
||||
- Fixed a bug in "bomb" which was preventing light bombers on acc's
|
||||
from being able to take off.
|
||||
- Artillery no longer consume petrol or food when they fire (they
|
||||
only consume shells).
|
||||
- increased land mine damage from 6 + random(10) to 10 + random(10)
|
||||
- if land units are accompanied by engineers, then their chance of
|
||||
hitting a land mine is divided by 3. E.g. if there
|
||||
are 25 mines in the sector, then a land unit has a 33%
|
||||
chance of hitting a land mine. If it is accompanied by an
|
||||
engineer, then that chance drops to 11%.
|
||||
- If an engineer sweeps a land mine that it cannot carry, it drops
|
||||
it as a shell into the sector.
|
||||
- Engineers now sweep a number of times equal to 2 times the number
|
||||
of shells they can carry.
|
||||
- The chance of an engineer finding a land mine in a sector is now
|
||||
50% time the "att" value of the unit:
|
||||
# of sweeps chance of finding a mine
|
||||
old system 5 66%
|
||||
eng1 130 6 60%
|
||||
eng2 165 8 75%
|
||||
meng 260 8 90%
|
||||
- The "visibility" of a sub to an ASW plane has been increased from
|
||||
vis to 10 + vis * 5. This should dramatically improve the chances
|
||||
of ASW planes locating and hitting subs.
|
||||
emp2.3.5.j.tar
|
||||
- changed visibility of subs from 10 + vis * 5 to vis * 4 in the
|
||||
asw hitchance calculation.
|
||||
- when subs on interdiction miss, both parties are now informed
|
||||
(in the old system, neither party was informed)
|
||||
- you are no longer allowed to hit subs with missiles (oops!)
|
||||
emp2.3.6a.tar
|
||||
- Forts will now only automatically interdict ships that the country
|
||||
would be able to see using the "coastwatch" command. Ships out of
|
||||
visual range will not be interdicted by forts. Note that
|
||||
ship/ship, unit/ship, plane/ship interdiction was not changed,
|
||||
and also the "fire" command was not changed. _only_ fort/ship
|
||||
interdiction was changed.
|
||||
- If a NEUTRAL (or worse) ship sails within your coastwatch range,
|
||||
then you will receive a telegram like this:
|
||||
TheBorg lc2 light cruiser 2 (#666) sighted at -9,-1
|
||||
This telegram is sent before any interdiction is done.
|
||||
- When an ASW plane flies an interdiction mission to hit subs, it will
|
||||
now also report on any subs it happens to see along the way (in
|
||||
the same way it would if it were flown using the "sonar" command).
|
||||
emp2.3.6b.tar
|
||||
- now when you march or navi, any new sector designations
|
||||
automatically appear on your nav map and get added to your bmap (you
|
||||
no longer need to do a "look" to find out their designation. Note
|
||||
that subs will only see sea, harbors, and bridges and will have to
|
||||
"look" (and risk detection) to see anything more.
|
||||
- you can now filter your satellite output to list, for example, only
|
||||
banks owned by country #7 which are over 60% efficient. The selectors
|
||||
available are exactly the same as those used by the "census", "ship",
|
||||
and "land" commands. See "info satellite" for more details.
|
||||
- added two new toggle flags (default on):
|
||||
- if "toggle coastwatch" is on, then you will receive a telegram every
|
||||
time a neutral ship moves within your coastwatch range.
|
||||
- if "toggle sonar" is on, then you will receive a telegram every
|
||||
time one of your sonar cabale ships detects a sonar ping.
|
||||
- now a 20% engineer only does 20% of the "work" that a 100% eng does.
|
||||
- fixed a bug which was counting ghost units in "spy" output.
|
||||
- fixed a bug which was including sats as planes in "spy" output.
|
||||
- fixed a bug which was giving rebels ownershiip of sats over the sector
|
||||
emp2.3.6c.tar
|
||||
I have made asw interdiction more extensive and subs more sneaky.
|
||||
Here is the new system:
|
||||
- ASW planes will now fly out to track any non-FRIENDLY (including
|
||||
NEUTRAL) sub movement.
|
||||
- However there is a chance that the plane won't even leave the ground
|
||||
and notice any sub movement at all. The chance of detection is
|
||||
identchance = (1 - (1 - hitchance)^2).
|
||||
- ASW planes will no longer detect subs they fly over while flying an
|
||||
interdiction mission.
|
||||
- Once the planes have arrived at the sector where the sub movement
|
||||
was detected, then identchance is checked again. If success, then
|
||||
the plane is able to identify the owner of the sub. If the owner
|
||||
is neutral, then the player gets the message:
|
||||
np1 naval plane 1 #2 tracks TheBorg subs at 2,-6
|
||||
If the plane is unable to identify the owner of the sub, then the
|
||||
player gets the message:
|
||||
np1 naval plane 1 #2 detects sub movement in -3,-3
|
||||
If the ship was identified as HOSTILE or AT_WAR, then the plane will
|
||||
drop depth charges.
|
||||
- If depth-charges miss, then the ship owner will get
|
||||
the message:
|
||||
RUMBLE... your sub in 24,0 hears a depth-charge explode nearby
|
||||
- torp and fire will now only tell the victim that a "sub" torped
|
||||
them, or that return fire damaged a "sub" (rather than giving out
|
||||
detailed information about the sub number, type, and owner...)
|
||||
- max sonar range has been reduced to 7 and sonar output no longer
|
||||
prints blank lines.
|
||||
- sonar has been changed in the following way:
|
||||
detection = (source "spy" value) + (target "vis" value)
|
||||
If the detection value is less than 8, then sonar will just print
|
||||
Sonar detects sub #12
|
||||
If the detection value is above 7, then sonar will report the type of sub.
|
||||
Only if the detection value is above 9 will the owner of
|
||||
the sub be revealed.
|
||||
- For ASW planes flying "sonar" or "recon" missions, a similar change
|
||||
has been made. The plane needs to pass one identchance check to see
|
||||
the type of sub, and needs to pass two identchance checks to see the
|
||||
owner of the sub.
|
||||
- Note in both of the above cases, owner and type of FRIENDLY and
|
||||
ALLIED subs will always be revealed.
|
||||
emp2.3.6d.tar
|
||||
- made scrap and scuttle more flexible
|
||||
- supply units, security units, aa-units and artillery can no longer
|
||||
be put on reserve mission, and they will no longer react to a battle.
|
||||
- asw planes were tracking their own subs (oops!)
|
||||
- interest from banks no longer turns off at 60% efficiency. Now the amount
|
||||
of money you get from your bank is simply scaled by the banks efficiency.
|
||||
emp2.3.6e.tar
|
||||
- fixed MAJOR bugs in budget, scrap, and scuttle (oops!)
|
||||
emp2.3.6f.sh
|
||||
emp2.3.6g.tar
|
||||
- Fixed a bug in "work" which wasn't charging them enough mobility
|
||||
- Changed "capitol" to "capital" in a hundred million places
|
||||
- Updated a number of info pages
|
||||
- Fixed output formatting error in "sorder" command
|
||||
- Applied a patch from Jan van Beethoven (AIX port)
|
||||
emp2.3.6h.tar
|
||||
- fixed a bug which was causing dd's to interdict neutral subs.
|
||||
- wrote "info Hitchance" which outlines in detail the chance of
|
||||
anything hitting anything else. This page compliments "info Damage"
|
||||
which gives all the damage formulas.
|
||||
- the defense strength of mountains was reduced to 16 to 8 (the
|
||||
defense strength of a fort). There was a problem of land units
|
||||
in mountains being invulnerable to everything but nukes.
|
||||
emp2.3.7a.tar
|
||||
- missile interception (both abm and a-sat) has been changed so that
|
||||
interceptors are chosen from the owner of the target sector first (so
|
||||
that your ally's abm1's won't launch instead of your abm3's)
|
||||
- if a tradeship won't give the player any cash if it is scuttled
|
||||
where it is, then the player will be asked for a second confirmation
|
||||
before they are allowed to scuttle it.
|
||||
- applied a patch from Ville Virrankoski which fixes a bug in budget
|
||||
(the cost to repair planes on aircraft carriers was not being included
|
||||
in the budget)
|
||||
- fixed a bug which was preventing bombers from being able to drop nukes.
|
||||
- fixed a bug which let asw planes bomb subs they couldn't see
|
||||
- fixed a bug that was sending a telegram to the deity when planes on
|
||||
an acc flew air defense missions. An obscure but annoying bug.
|
||||
- changed isblank() to blankrow() in lib/commands/sona.c for portability
|
||||
- fixed a server crashing bug in lradar (some coder put a global
|
||||
variable in lib/commands/rada.c BAD BAD BAD)
|
||||
emp2.3.7b.tar
|
||||
- fixed a bug in bomb which put the server into an infinite loop when
|
||||
the player aborted at the "commodity to bomb?" prompt.
|
||||
- when your cap is sacked, you now get a telegram telling you how much
|
||||
money you lost and they gained.
|
||||
- when your cap is sacked, then your cap will be moved to a random
|
||||
adjacent (possibly unowned) sector (the treasurers fleeing the
|
||||
palace). This was mainly done because players were retaking mountain
|
||||
capitals every update (you can't redes a mountain to be an aggie!)
|
||||
- added three new files in the doc directory: "PRIORITY", "WISH_LIST"
|
||||
and "WACKY_IDEAS".
|
449
doc/CHANGES3.0
Normal file
449
doc/CHANGES3.0
Normal file
|
@ -0,0 +1,449 @@
|
|||
Empire 3.0.0
|
||||
- Implemented the C_SYNC RFC
|
||||
- New commands:
|
||||
sync
|
||||
toggle sync
|
||||
toggle async
|
||||
- New files:
|
||||
h/edb.h
|
||||
h/toolkit.h
|
||||
lib/commands/sync.c
|
||||
lib/global/edb.c
|
||||
lib/subs/prsync.c
|
||||
info/Commands/sync.t
|
||||
doc/CHANGES3.0
|
||||
- New struct members (currently not used)
|
||||
- player.comhistory command history (for debugging) last 10 commands
|
||||
- nat.nat_mission_trigger set which relation you want to trigger
|
||||
various missions and autodefenses at.
|
||||
- Added land.lnd_scar -- how experienced the land unit is.
|
||||
- sect.sct_mobil was changed from unsigned char to short (to permit
|
||||
the removal of updates--note I don't plan to remove updates, but
|
||||
someday someone might try and they will need this so that sectors can
|
||||
go to negative mob).
|
||||
- New struct members (currently used):
|
||||
- Added type field to all objects so they can identify themselves
|
||||
- Moved var structs to the top of all class structs for easy location
|
||||
(see struct genchrstr defined in h/genitem.h)
|
||||
- nat.nat_hostaddr, nat.nat_hostname, nat.nat_userid, userid and hostname
|
||||
of last person to connect to that country. If when you login,
|
||||
your userid or hostname is different from the last person to conenct
|
||||
to that country, then you will get a message like:
|
||||
Last connection from: Mon Nov 13 01:48:04 1995
|
||||
to: Mon Nov 13 01:48:12 1995
|
||||
by: children@RedDragon.Empire.Net
|
||||
this will improve security and be helpful for co-rulers. Also
|
||||
added were nat.nat_last_login and nat.nat_last_logout.
|
||||
- Nation now has 50 realms.
|
||||
- New global constants:
|
||||
- Extended nsc ("next selection conditionals" e.g. cen * ?mil=5) to
|
||||
support C_SYNC messages and include the objects "map" (bmap), and "nation".
|
||||
These will transmit to the client the equivalent of "dump", "ship",
|
||||
"car", "land", "lcar", "bmap", and "nation" output and more.
|
||||
- Added nsc entries for the following classes: sect, ship, plane,
|
||||
land, nuke, map, item, product, and version. These will transmit to
|
||||
the client the equivalent of the "show" and "version" command output
|
||||
and more.
|
||||
|
||||
Empire 3.0.1 C_SYNC 0.0.1
|
||||
- changed the order of the struct members of sect, ship, plane, land unit,
|
||||
nuke to put own and uid out front (note this results in a new version
|
||||
of the C_SYNC protocol)
|
||||
- fixed a bug in "sync object" which was sending erronious data
|
||||
- for now all C_SYNC messages will automatically send uid (or x,y for sects).
|
||||
this should be changed to implement "surfacing noises" and interdiction.
|
||||
- whenever any of your sect, ship, plane, land unit, or nuke changes,
|
||||
you will get a C_SYNC message describing the entire new struct.
|
||||
- Note this occurs everytime the data changes EXCEPT for changes
|
||||
which happen durring an update. For now, I will require clients
|
||||
to call "sync object all" after an update if they want to sync their
|
||||
database after the update.
|
||||
- If you loose a sect, ship, plane, land unit, or nuke, then you will
|
||||
get a very partial C_SYNC message only telling you the id and new owner.
|
||||
- look, spy, coastwatch (async & sync), now all send you partial
|
||||
C_SYNC messages telling you information about your enemy's stuff.
|
||||
- Note: For now, you get precise information about the number of mil in
|
||||
the sector etc... This will be fixed in 3.0.2
|
||||
|
||||
Empire 3.0.2 C_SYNC 0.0.2
|
||||
- there is now only one announcement file which all countries post to
|
||||
and read from. the wire syntax has changed to "wire [y|n|<days>]" to
|
||||
allow you to read announcements from <days> days ago if you want.
|
||||
- at each update, all announcements older than 7 days (deity
|
||||
configureable as #define ANNO_KEEP_DAYS in misc.h) are automatically
|
||||
deleted.
|
||||
- a player's bmap can now be changed (e.g. by planes flying missions)
|
||||
even when they're not logged on.
|
||||
- added a new command "sharebmap <COUN> <SECTS>". If <COUN>
|
||||
is friendly towards you and your bmaps already share enough information
|
||||
in common, then your bmap will be added to their bmap. For more details
|
||||
(there are alot more details) connect to empire.net 7773 1-10 and type
|
||||
"info sharebmap".
|
||||
- now whenever a designation gets added to your bmap, the client will
|
||||
receive a very small C_SYNC MAP_CLASS message
|
||||
- when your country's money, reserves, cap location, name or origin
|
||||
changes, you will get a C_SYNC NAT_OBJECT message with your new nation
|
||||
data. Client writers take note: there is a new field in the nat
|
||||
struct called "xstart,ystart" which is the start location of the
|
||||
origin. So if the client needs to make some transformation of the
|
||||
co-ordinates, it can refer to this variable.
|
||||
- when you type "nation", that will also send a C_SYNC NAT_OBJECT
|
||||
message to the client.
|
||||
- removed a bunch of fields from the C_SYNC nat struct (to cut down bandwidth)
|
||||
(this results in a new version of C_SYNC).
|
||||
- information about enemy commodities, tech, or efficiency are now
|
||||
rounded to the nearest 10.
|
||||
|
||||
Empire 3.0.3 C_SYNC 0.0.3
|
||||
- added three new land units: "cavalry 2", "light infantry", and
|
||||
"aau1". Here's the basic scheme. The old cavalry are an average
|
||||
between the somewhat weaker cav1 and somewhat stronger cav2.
|
||||
light infantry are half the size of and slightly fastar than inf1's.
|
||||
"aau1" come at the same tech as Zepplins and let low tech countries
|
||||
try to throw rocks at low tech planes...
|
||||
- reduced the size of "ts1 trade ship 1" to 100 lcm, 50 hcm, $1500
|
||||
(from 200 lcm, 100 hcm, $2500). Most players were waiting for ts2
|
||||
so this is a nice way to deal with that.
|
||||
- after each update, all countries receive the message "C_SYNC EDB_UPDATE".
|
||||
(this results in a new version of C_SYNC).
|
||||
- all telegram files have been moved into a subdirectory called "tel".
|
||||
- new subdirectory of the data directory "sync" holds spooled C_SYNC messages.
|
||||
- if the player is not logged on when they receive a C_SYNC message,
|
||||
then it will be spooled to their sync file. If the sync file
|
||||
contains spooled messages older than 3 days (deity
|
||||
configurable as SYNC_KEEP_DAYS in misc.h), then the C_SYNC message will
|
||||
not be spooled.
|
||||
- New command "sync read [yes|no]" reads all spooled C_SYNC messages.
|
||||
If the [yes|no] argument is not specified, the player will be asked:
|
||||
"Can I throw this information away now?".
|
||||
- Removed the "bdes" command. It is no longer necessary (since the
|
||||
server now automatically adds 'X' sectors to your bmap, and it also
|
||||
automatically adds sectors that your planes fly over when they're
|
||||
flying missions). The "bdes" command in conjunction with the new
|
||||
"sharebmap" could lead to abuses, and since it is no longer really
|
||||
necessary, I removed it. Given the choice between sharebmap and bdes,
|
||||
I think most players would choose sharebmap.
|
||||
- The delivery and distribution stuff was removed from the output of
|
||||
"commodity" and each column was widened to 5 characters (to accomodate
|
||||
the new system where sectors are now allowed to hold up to 9999 of stuff)
|
||||
- IP addresses will now only be resolved into hostnames if RESOLVE_IPADDRESS
|
||||
(in misc.h) is defined.
|
||||
- Mountains will now mine gold at 1/5th the rate that gold mines do (thar's
|
||||
gold 'n them thar hills!)
|
||||
|
||||
Empire 3.0.4 beta C_SYNC 0.0.4
|
||||
- If the game is a blitz, then the "players" command will list other
|
||||
countries which are logged on. This will cut down on the "is anybody
|
||||
else logged on?" announcements. Note that for players, "last command"
|
||||
and "user@hostname" are not printed (only deities get to see this stuff).
|
||||
- fixed a server crashing bug in "sync class all".
|
||||
- each country now has two bmaps, their 'working' bmap and their
|
||||
'true' bmap. The true bmap contains only information put there by the
|
||||
server. The working bmap also contains information put there by the
|
||||
bdes and sharebmap commands. The "bmap" command usually displays the
|
||||
working bmap unless the player specifies "bmap <SECTS> true". Also,
|
||||
if the players working bmap somehow becomes corrupted, then they can
|
||||
type "bmap <SECTS> revert" to revert their working bmap back to their
|
||||
true bmap. This change was necessary to prevent abuse of the new
|
||||
"sharebmap" command (which now compares the players true bmaps when
|
||||
determining whether they overlap).
|
||||
- There is a new info page 'info Empire3' which contains game changes
|
||||
of particular interest to players.
|
||||
- Put the bdes command back in.
|
||||
- Added a new question in the "configure" script: "Do you require your
|
||||
server to be unusually small?". If the deity answers "yes" to this
|
||||
question, then many bells and whistles will be turned off to generate
|
||||
a lightweight "bare bones" Empire server.
|
||||
- I have padded each object struct out by a spare char, int, and long.
|
||||
This is to give me room in the coming months in case I need to make
|
||||
a change which needs data in the object structs, and I don't want to
|
||||
invalidate currently running long term games.
|
||||
- Tested the HIDDEN and SLOW_WAR mods (these hadn't been tested for
|
||||
the Empire2+ server yet).
|
||||
|
||||
Empire 3.0.5 beta
|
||||
|
||||
Note: the primary focus of this upgrade is to address the f1
|
||||
SAM-soaking problem. The solution I adapted is a mixture of ideas
|
||||
from various people--mostly not myself. I appologize for forgetting
|
||||
whose ideas these were, and I hope that in consolation for not
|
||||
acknowledging you, you will at least be happy that I implemented
|
||||
your ideas. This was a pretty big job.
|
||||
|
||||
- In the old system, planes would be charged either 10 mobility
|
||||
(interceptors), 12 mobility (escorts) or 20 mobility (the rest) per
|
||||
flight. This cost was then multiplied by (100/eff) with the
|
||||
restriction that plane mobility could not go below -32. Planes flying
|
||||
missions were charged only 1/4 of this. In the new system, planes are
|
||||
charged a base rate of 5 mobility to prepare for takeoff. On top of
|
||||
this, they are charged a "flight cost" which is either 10 (interceptors
|
||||
and escorts) or 20 (the rest), however this flight cost is scaled down
|
||||
according to the length of the flight--it is multiplied by (flight
|
||||
length) / (max plane range). The flight cost is then scaled by
|
||||
(100/eff) with the restriction that a plane can't go below -32
|
||||
mobility. Planes flying missions are charged 1/2 of this.
|
||||
- The mobility of a plane will now go down by one point for every two
|
||||
points of damage it took from air-to-air combat, to a limit of -32
|
||||
mob. This is to simulate the high mobility cost of air-to-air combat,
|
||||
and the fact that air-to-air combat is more effort for low tech planes.
|
||||
- SAM interception is now separate from plane interception; for each
|
||||
attacking plane, if the plane cost at least $1000 to build, then one
|
||||
SAM will be launched at it. After SAMs have been fired, fighter
|
||||
planes will intercept what's left over.
|
||||
- The restriction that high tech nations can not build low tech planes
|
||||
has been removed (the above changes address the f1 SAM-soaking problem).
|
||||
- marine missiles on interdiction now fire at a single ship rather
|
||||
than the whole fleet. They pick the ship which is the most valuable
|
||||
according to (cost to build) * efficiency. Furthermore, marine
|
||||
missiles will only launch at a ship if the ship cost at least $1000
|
||||
to build or if it can carry land units or planes.
|
||||
- the NEWPAF option has been made standard.
|
||||
- fixed a bug which wasn't giving a +1 radius bonus to units in 60% HQ's.
|
||||
- "toggle sync on" now sends back a "sync version" as per the RFC.
|
||||
- fairland now prints an error to stderr if it can't grow the
|
||||
continents (it used to just print the last partially built map).
|
||||
- when you break sanctuary, your 100% sanctuaries turn into cities and
|
||||
all your other sanctuaries turn into roads (this is helpful for
|
||||
games which use "bigstart").
|
||||
|
||||
Empire 3.0.6 C_SYNC 0.0.5
|
||||
- Fixed a bug in the attack code which was underestimating defense
|
||||
strength (it was only giving the sector defense bonus to land
|
||||
units--not mil). Note--the bug was only in the estimation part, so
|
||||
countries were not being given a chance to abort attacks where the
|
||||
odds were clearly against them.
|
||||
- Mountains can now only hold 1/10th as many civs as normal sectors.
|
||||
- Raised the gold production efficiency of mountains from 20% to 75%.
|
||||
- Changed fairland to put gold in mountains.
|
||||
- flash and wall messages are no longer truncated. Instead the message
|
||||
is split into 60 character pieces which are transmitted one at a time.
|
||||
- If the game is HIDDEN then non-contacted countries no longer show up
|
||||
on your "relations" output.
|
||||
- If the game is HIDDEN and you try to declare relations with a
|
||||
country you haven't contacted yet, then you will now get an error
|
||||
message (before you got nothing at all).
|
||||
- Update production reports are now Production Reports again (they
|
||||
were BULLETINS since Empire2.0.0). This will fix a bug which was
|
||||
preventing players from being "informed" when they get an update telegram.
|
||||
- The new info page "info Mobility" gives the formulas for all
|
||||
mobility costs in the game.
|
||||
- Before you type a telegram, you will now see:
|
||||
Enter telegram for Fodderland
|
||||
undo last line with ~u, print with ~p, abort with ~q, end with ^D or .
|
||||
1024 left:
|
||||
The new tilde escapes work very nicely.
|
||||
- The prompt for escorts has been changed from "plane(s)? " to "escort(s)? ".
|
||||
- Changed the mobility cost to move into a sector from
|
||||
cost = (mcost - eff) / 5
|
||||
to:
|
||||
if (mcost < 25)
|
||||
cost = (2 + (3 - mcost) * eff) / 5
|
||||
else
|
||||
cost = (mcost - 20 * eff) / 5
|
||||
|
||||
OLD SYSTEM: eff 0% 100% NEW SYSTEM: eff 0% 100%
|
||||
+ 0.2 0.0 + 0.4 0.0
|
||||
m 0.4 0.2 m 0.4 0.2
|
||||
^ 5.0 4.8 ^ 5.0 1.0
|
||||
|
||||
Note that this means land units can attack 100% mountains now, so
|
||||
there will be a tradeoff for the defender--either they can have a low
|
||||
efficiency mountain that costs more mobility to attack but gets a
|
||||
lower defense bonus, or they can have a high efficiency mountain that
|
||||
costs less mobility to attack but gets a higher defense bonus.
|
||||
- New conditional query "coastal" which gets set when you take a
|
||||
"census" of the sector. Type "cens * ?coast=1" to get a list of all
|
||||
of your sectors which are adjacent to water (and thus vulnerable to
|
||||
assault).
|
||||
- Added a new C_SYNC field to SCT_OBJECT called "coastal". This results
|
||||
in a new version of the C_SYNC protocol.
|
||||
|
||||
Empire 3.0.7
|
||||
- Fixed a server crashing bug in the sneak attack code
|
||||
- Sectors with 0 mobility can no longer enlist mil
|
||||
- In a HIDDEN game, you can now only see relations for countries you
|
||||
haven't met yet
|
||||
- Fixed a bug in the "Last login from" part of the login sequence.
|
||||
- added new global array player_commands which keeps a list of the
|
||||
last 100 commands typed by players. Added a file doc/debugging which
|
||||
explains to deities how they can access this list.
|
||||
- Fixed a bug that would prevent you from being able to assault your
|
||||
own sector if SLOW_WAR was enabled.
|
||||
- In a HIDDEN game, llook will now contact.
|
||||
- Fixed a bug in the SLOW_WAR mods which was charging people WarCost to
|
||||
declare war when their enemy was Sitzkrieg towards them.
|
||||
- Fixed a bug in HIDDEN--sending a telegram or auto-coastwatch
|
||||
sighting ships will now both contact.
|
||||
- Fixed a bug in SNEAK_ATTACK--you are no longer charged for boarding
|
||||
a non-at-war ship.
|
||||
|
||||
Empire 3.0.8
|
||||
- Removed an infinite from the autonav code.
|
||||
- Fixed the "client" login command.
|
||||
|
||||
Empire 3.0.9
|
||||
- Consolidated budget code for ships, land units, & planes (Ville Virrankoski)
|
||||
|
||||
Empire 3.0.10
|
||||
- Fixed a bug in radar (anonymous)
|
||||
- Ported the server to Ultrix (Yannick Tremblay)
|
||||
|
||||
Empire 3.0.11
|
||||
- Port to FreeBSD (submitted by Janjaap van Velthooven)
|
||||
- Fixed a server crashing bug in range command
|
||||
- Fixed a bug which gave players free info when they shelled deity bridges
|
||||
(reported by Jim Gillogly)
|
||||
- Small ships can now fuel in cities (reported by Walter Smith)
|
||||
- Fixed compile bug in wu.c (reported by Curtis Larsen)
|
||||
- Documented toggle sync and toggle async (reported by Bernhard Reiter)
|
||||
- Fixed a bug in shoot which was leading to abuses (reported by
|
||||
Nathaniel Thurston)
|
||||
- route now prints % sectors (reported by Nathaniel Thurston)
|
||||
|
||||
Empire 3.0.12
|
||||
- mkmf is no longer needed to compile the server (Michael Straub)
|
||||
NOTE: This change depends on "cpp -M" working on your system.
|
||||
- A number of bug fixes to the "budget" command (Ville Virrankoski)
|
||||
|
||||
Empire 3.0.13
|
||||
- Fixed a bug in "budget" command
|
||||
- If cpp doesn't exist on the system, then "cc -MM" is used in place
|
||||
of "cpp -M"
|
||||
|
||||
Empire 3.0.14
|
||||
- Extensive consolidation of "budget" command with update routines
|
||||
(Ville Virrankoski)
|
||||
- Fixed some of the portability problems arising from the switch to "mkdep"
|
||||
Empire 3.0.14a
|
||||
- Fixed a server crashing bug in the update routines (introduced at 3.0.14)
|
||||
|
||||
Empire 3.0.15
|
||||
- Fix of a MAJOR bug in the budget/update routines which was
|
||||
overcharging countries for military reserves (Ville Virrankoski)
|
||||
- Simplification & fix of mkdep/configure (Yannick Tremblay)
|
||||
- Port to Solaris 5.5 (Ron Kuris <rk@unify.com>). Here are the notes
|
||||
that came with the Solaris port:
|
||||
----------------
|
||||
These are the patches to make the new server work on Solaris.
|
||||
Some notes:
|
||||
|
||||
My environment is that we have cc from Sun, but no license.
|
||||
We have gcc installed as /opt/gnu/bin/gcc. Although it was
|
||||
built with Solaris 5.4, it works fine on 5.5. If you need
|
||||
gcc, use archie to exact search for FSFgcc.gz (I found it
|
||||
on qiclab.scn.rain.com in /pub/solaris). You also need
|
||||
FSFtools.gz for gnumake. These packages install very easily.
|
||||
|
||||
While running configure, your 'gnumake' is /opt/gnu/bin/make,
|
||||
and the compiler you should use is /opt/gnu/bin/gcc.
|
||||
|
||||
My build path is something like:
|
||||
PATH=/opt/gnu/bin:/usr/ucb:/usr/bin:/usr/sbin:.
|
||||
|
||||
Once you apply the patches, everything seems to work.
|
||||
|
||||
Whoever integrates this into the mainstream:
|
||||
The change to client/GNUmakefile is the only one I think
|
||||
that might need tweaking. It sets the default build flags
|
||||
to Solaris (somehow I don't think you want that). I tried
|
||||
pretty hard not to break anything else.
|
||||
|
||||
The change in lwp.c I think is just an outright bug, but
|
||||
most versions of the lwp system dependent stuff just happen
|
||||
to get lucky by not saving the registers. This should NOT
|
||||
be relied upon!
|
||||
----------------
|
||||
|
||||
Empire 3.0.16
|
||||
- Optimization of mkdep (Yannick Tremblay)
|
||||
- Moved solaris from emp3 to emp3/make/Systems (Ron Kuris)
|
||||
- Minor enhancement to "lcargo" code (Ron Kuris)
|
||||
- Fixed a bug which had setting budget priorities on land units
|
||||
result in being charged twice for them (Ville Virrankoski)
|
||||
|
||||
Empire 3.0.17
|
||||
- "read" command now sends a C_SYNC nation message. (Curtis Larsen)
|
||||
- Fixed a bug which was deleting the announcement file when there were
|
||||
no announcements (reported by Ed Down).
|
||||
- Fixed "~u" tilde-escape for "telegram" and "announce" commands (it was
|
||||
possible to undo back past the beginning of the buffer and crash the
|
||||
server (reported by Nathaniel Thurston).
|
||||
- mkdep optimization (Yannick Tremblay).
|
||||
- Changed syntax for "cede" command so that you can specify "se" or
|
||||
"sh" on the command line (reported by Tero Paananen).
|
||||
|
||||
Empire 3.0.18
|
||||
- fixed a serious bug in configure and mkdep which prevented the
|
||||
server from compiling
|
||||
|
||||
Empire 3.0.19 Ken Stevens 17 Apr 96
|
||||
- Fixed a serious bug in the Empire3 server which allowed players to
|
||||
create an infinite number of shells and food out of nothing.
|
||||
I added a new field "simulation" to the player struct and set this
|
||||
field to 1 in all update simulation commands (budg, prod, neweff).
|
||||
Then in the update code, instead of checking the variable update_pending
|
||||
to determine whether the update is "for real", I check the player->simulation
|
||||
variable. Note that when the commands sneweff, pneweff, and lneweff
|
||||
get added to the server, they should also set player->simulation to 1.
|
||||
- subs/takeover.c added a check to make sure the number of che doesn't
|
||||
overflow (Paul Byrne)
|
||||
- update/revolt.c. It fixes two problems. First, after security
|
||||
forces kill che, if there are no che left, the function returns
|
||||
without saving the zero-che value. Worse, it never checks for
|
||||
negative che values, which looks like it could happen. The second one
|
||||
is in che moving. It loops through the neighbors looking for the best
|
||||
place to move. Problem is, if it finds a place to move it doesn't
|
||||
move to that place, but simply to whichever place it last looked.
|
||||
(Paul Byrne)
|
||||
|
||||
Empire 3.0.20 Ken Stevens 21 May 96
|
||||
[from 3.1.2]
|
||||
- fixed a serious bug in the "production" command which could cause
|
||||
a server crash (Steve McClure).
|
||||
- fixed a bug in the "starve" command which could suck all the food
|
||||
off of a ship or land unit on the ship (Steve McClure).
|
||||
- fixed a bug in the "deliver" command mis-interpreting the return
|
||||
value of the putvar function (Steve McClure).
|
||||
|
||||
[from 3.1.3]
|
||||
- Fixed a bug in road mobcost calculation (Steve McClure)
|
||||
- Fixed a bug in the toggle command (reported by Keir Novik)
|
||||
|
||||
[from 3.1.6]
|
||||
- Fixed a bug in the attacking code where moving mil into a sector was
|
||||
going on. It would probmpt for the max amount of mil to move in
|
||||
by mobility, but when you moved in it never checked, so you could still
|
||||
move all the attacking mil in (Steve McClure)
|
||||
- Fixed a bug in fairland (Ken Stevens - reported by Janjaap van Velthooven)
|
||||
- Fixed a bug in map C_SYNC (Ken Stevens - reported by Markus Armbruster)
|
||||
|
||||
[from 3.1.7]
|
||||
- fairland.c. Better representation of the map for >30 continents.
|
||||
The markings for continents start wrapping for more than 62 continents,
|
||||
the map won't get any control characters anymore (Janjaap van Velthooven).
|
||||
- C_SYNC. forces a newline whenever data with a different id is appended to a
|
||||
partial line. Caveat: this sacrifices the line structure to correct
|
||||
the line tagging (Markus Armbruster).
|
||||
- Fixed a bug which wasn't printing the last row of `sync object bmap'
|
||||
in god's coordinate system (Markus Armbruster).
|
||||
|
||||
[from 3.1.16]
|
||||
- port to Ultrix (Markus Armbruster)
|
||||
|
||||
Empire 3.0.21 Ken Stevens 1 July 96
|
||||
- fixed a bug in reco & sat which wasn't putting a carriage return
|
||||
after land units.
|
||||
- fixed a bug in starvation command which sent the user a telegram
|
||||
telling them how much each of their land units lost due to starvation.
|
||||
- fixed a bug which would send you a message "RUMBLE...your sub hears
|
||||
a depth-charge explode nearby" when you weren't navigating subs
|
||||
(reported by Keir E. Novik)
|
||||
- increased buffer size in emp_client from 1024 to 4096 for sync
|
||||
class version (reported by Markus Armbruster)
|
||||
- fixed a bug in revolt code which could damage a sector below 20%
|
||||
without checking if it was a bridge (reported by Pat Loney)
|
||||
- fixed a bug in SLOW_WAR which prevented you from re-inforcing your
|
||||
own sector by assaulting (Aaron Dewell).
|
||||
- fixed a bug in sack capping news item (reported by Ed Down)
|
||||
- fixed a server crashing bug in "offer" command (reported by Jon Wright)
|
||||
- fixed a bunch of info files (reported by Keir E. Novik)
|
1294
doc/CHANGES4.X
Normal file
1294
doc/CHANGES4.X
Normal file
File diff suppressed because it is too large
Load diff
54
doc/README
Normal file
54
doc/README
Normal file
|
@ -0,0 +1,54 @@
|
|||
This directory contains the following files:
|
||||
|
||||
files
|
||||
What's where.
|
||||
|
||||
backup
|
||||
Recommendations for how to do backups when running a game.
|
||||
|
||||
troubleshooting
|
||||
Some common problems and solutions.
|
||||
|
||||
disk_space
|
||||
Stuff you can delete to make more disk space.
|
||||
|
||||
compiling
|
||||
How to compile the Empire2 server.
|
||||
|
||||
configuration
|
||||
How to turn options on and off, change game parameters, etc...
|
||||
|
||||
econfig
|
||||
Details about the syntax of data/econfig.
|
||||
|
||||
bug-reports
|
||||
What to do if you find a bug.
|
||||
|
||||
threads
|
||||
Dave Pare explains how lwp threads work.
|
||||
|
||||
coding
|
||||
Guidelines for coding style
|
||||
|
||||
CHANGES
|
||||
Revision history for all the changes that were coded in the Empire2
|
||||
project. A much more readable version of this may be found in
|
||||
"info History" (brief) or "info Empire2" (detailed).
|
||||
|
||||
CHANGES2.3
|
||||
All changes since revision 2.3
|
||||
|
||||
CHANGES3.0
|
||||
All changes since revision 3.0
|
||||
|
||||
CHANGES4.0
|
||||
All changes since revision 4.0
|
||||
|
||||
PRIORITY
|
||||
things which need to be coded soon.
|
||||
|
||||
WISH_LIST
|
||||
things which maybe should be coded sometime.
|
||||
|
||||
WACKY_IDEAS
|
||||
things which shouldn't be coded except possibly as an option.
|
171
doc/WACKY_IDEAS
Normal file
171
doc/WACKY_IDEAS
Normal file
|
@ -0,0 +1,171 @@
|
|||
-=O EMPIRE WACKY IDEAS LIST O=-
|
||||
|
||||
This file contains the more bizarre and outlandish proposals for
|
||||
changing the game of Empire. See the EMPIRE WISH LIST for an
|
||||
explanation of the indexing system.
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
--- TABLE OF CONTENTS ---
|
||||
|
||||
Attack, Assault and Board.................a
|
||||
Missions..................................m
|
||||
Ships.....................................s
|
||||
Planes....................................p
|
||||
Land Units................................l
|
||||
Commodities and Sectors...................c
|
||||
Information Commands......................i
|
||||
Telegrams, Announcements, News............t
|
||||
Updates...................................u
|
||||
Deity.....................................d
|
||||
Miscellanious and Documentation...........x
|
||||
Error Messages............................e
|
||||
|
||||
--- ATTACK, ASSAULT AND BOARD ---
|
||||
|
||||
a4
|
||||
frontline <UNITS>
|
||||
When a unit is created, it is automatically put on the frontline
|
||||
(except for artillery and supply units). This means that when you
|
||||
attack an adjacent sector, you will be asked if you want to include
|
||||
this unit in the attack.
|
||||
backline <UNITS>
|
||||
When a unit is put on a mission, it is automatically put on the
|
||||
backline. This means that when you attack, you won't be asked about
|
||||
attacking with this unit. Also, supply units and artillery are born on
|
||||
the backline. When attacking with units, allow the user to type Y,
|
||||
rather than typing y for all the units you want to attack with. Y
|
||||
would mean "attack with all units on the frontline". At the attack
|
||||
prompt, you will be asked: Attack with infantry #3 (y/n/Y/N/b)? and
|
||||
the "b" will mean "backline". This would be particularly handy when
|
||||
attacking with a bunch of units and you want to leave some of them
|
||||
behind to hold the beach-head. And you want to stop being prompted for
|
||||
them.
|
||||
|
||||
--- SHIPS ---
|
||||
|
||||
s9
|
||||
swap [s|p|l] <UNIT1> <UNIT2>
|
||||
Swap the id numbers of units so you can control the order in which
|
||||
they are built. In order to swap the numbers, the units must be in the
|
||||
same sector, and the sector must be either a h/*/! as appropriate.
|
||||
WARNING: this could be seriously abused!
|
||||
|
||||
s11
|
||||
nuclear subs consume rads as fuel? need rads to build nuc sub?
|
||||
|
||||
s17
|
||||
in fuel command, one petrol should be worth 20 oil. right now it is
|
||||
more efficient to fuel ships and units with oil rather than with
|
||||
petrol.
|
||||
( in this one, it would probably be better IMHO to get rid of fueling
|
||||
with oil altogether - Ken H.)
|
||||
|
||||
s20
|
||||
Make assaulting cost ship mobility. This would help stop the ability
|
||||
to assault with a small amount of mil over and over until
|
||||
reacting units run out of mobility.
|
||||
|
||||
--- PLANES ---
|
||||
|
||||
p3
|
||||
Allow transport planes to paradrop land units. (This would be
|
||||
realistic.) Would use the following analogy:
|
||||
|
||||
Units on Planes Units on Ships
|
||||
x-light assault
|
||||
para marine
|
||||
cargo light
|
||||
|
||||
So, "cargo" units could be transported, "x-light" units could paradrop
|
||||
but at a serious disadvantage and would lose all mob, and "para" units
|
||||
could paradrop like marines could assault (with full attack and
|
||||
reduced mob loss).
|
||||
|
||||
p8
|
||||
planes should mobility when loaded and unloaded from a ship.
|
||||
|
||||
p12
|
||||
Have an aquatic plane type. This would be a medium to small cargo
|
||||
plane, that must be built in an airport but can only take off froma
|
||||
harbor, or sea sector. While on the water, it could tend, however, not
|
||||
be able to nav. It might, or might not be able to lay/sweep mines. And
|
||||
fuel is another issue that would need to be looked into.
|
||||
|
||||
p14
|
||||
perhaps the range a plane can fly should be limited by its efficiency.
|
||||
|
||||
--- LAND UNITS ---
|
||||
|
||||
l2
|
||||
trans l <FROMSECT> <TOSECT>
|
||||
to use sector mobility to transport a land unit from one sector to
|
||||
another.
|
||||
|
||||
l3
|
||||
Make a new kind of land unit (transport trucks) which can carry land
|
||||
units in a similar way that ships can carry units. This would allow
|
||||
you to transport heavy artillery and unmechanized infantry around
|
||||
faster. (This would be a realistic change).
|
||||
|
||||
l5
|
||||
Have very expensive land units called a spies:
|
||||
|
||||
lcm hcm mil guns shells avail tech $
|
||||
spy 1 10 0 1 0 0 2 0 $2000
|
||||
spy 2 10 0 1 0 0 2 0 $5000
|
||||
spy 3 10 0 1 0 0 2 0 $8000
|
||||
|
||||
|
||||
|
||||
Spies can march through enemy territory and llook in there. Every
|
||||
update, there will be a chance the spy is caught. Also there is a
|
||||
chance it will be caught every time it moves in enemy territory and
|
||||
every time it does an "lloo". It will be completely unaffected by
|
||||
combat. The chance of detection should be something like: spy 1 10%,
|
||||
spy 2 5%, spy 3 2%.
|
||||
|
||||
l6
|
||||
land units should lose mob when loaded/unloaded from a ship.
|
||||
|
||||
l10
|
||||
mobile headquarters unit type - capable of repairing land units by
|
||||
using mobility, supplies, and mil. How about just letting engineers
|
||||
work on units also?
|
||||
|
||||
--- COMMODITIES AND SECTORS ---
|
||||
|
||||
c9
|
||||
Limit the amount of commodities (by weight) allowed to be kept on a
|
||||
bridge, and have a stacking limit for units on a bridge. (Bridges can
|
||||
only support so much weight eh?)
|
||||
|
||||
c10
|
||||
build tu
|
||||
At a price, build a tunnel through a mountain sector. This would turn
|
||||
a ^ into a + at some great cost.
|
||||
|
||||
c12
|
||||
autodemob 11,11 35 y
|
||||
"autodemob" is to "demob" what "autonav" is to "nav". The principle is
|
||||
simple: "autodemob 11,11 35 y" means every update, demob all the mil
|
||||
in 11,11 except for 35. ( note - makes budget more complex - Oliver
|
||||
Ricou )
|
||||
|
||||
c14
|
||||
We need some Empire command which lets you do a lot of moving at once
|
||||
with minimal BTU cost. Here would be one possible syntax: multimove
|
||||
<ITEM> <SECTS> <THRESHOLD> <DISTSECT> <MINMOB> This is just like
|
||||
distribute at the update. It would distribute commodities between
|
||||
<SECTS> and <DISTSECT> depending on <THRESHOLD> (which applies to the
|
||||
<SECTS>), and only doing moves provided that the mobility doesn't fall
|
||||
below <MINMOB> in any of the sectors involved: empire [124,512]%
|
||||
multimove f * ?civ>20 40 1,1 40 An alternate symtax could be:
|
||||
multimove <ITEM>
|
||||
where existing distribution thresholds are used.
|
||||
|
||||
--- MISCELLANIOUS AND DOCUMENTATION ---
|
||||
|
||||
x25
|
||||
national happiness should be affected by your victories/losses, and if
|
||||
you drown your mil (by scuttle/scrap) or starv your populace.
|
208
doc/WISH_LIST
Normal file
208
doc/WISH_LIST
Normal file
|
@ -0,0 +1,208 @@
|
|||
-=O EMPIRE WISH LIST O=-
|
||||
|
||||
This is the complete Empire Wish List. Each item on the wish list has
|
||||
been given a unique reference number. The reference number does not
|
||||
indicate priority; it is only there so that we may easily refer to
|
||||
various items on the list. The reference numbers are permanent, and
|
||||
any new item added to the wish list in the future will be given a new
|
||||
unique reference number.
|
||||
|
||||
The blank index number at the bottom of each section refers to the
|
||||
next available index number for that section.
|
||||
|
||||
Note that the most radical have been moved out of the EMPIRE WISH LIST
|
||||
and onto the EMPIRE WACKY IDEAS LIST which shares the same indexing system
|
||||
as this file.
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
--- TABLE OF CONTENTS ---
|
||||
|
||||
Attack, Assault and Board.................a
|
||||
Missions..................................m
|
||||
Ships.....................................s
|
||||
Planes....................................p
|
||||
Land Units................................l
|
||||
Commodities and Sectors...................c
|
||||
Information Commands......................i
|
||||
Telegrams, Announcements, News............t
|
||||
Updates...................................u
|
||||
Deity.....................................d
|
||||
Miscellanious and Documentation...........x
|
||||
Error Messages............................e
|
||||
|
||||
--- ATTACK, ASSAULT AND BOARD ---
|
||||
|
||||
a12
|
||||
aborting an attack should cost you btus or possibly mobility
|
||||
(otherwise you get info for free).
|
||||
|
||||
a13
|
||||
|
||||
--- MISSIONS ---
|
||||
|
||||
m7
|
||||
Allow people to specify relation level to trigger different missions
|
||||
(note there is already space for this in the nation struct).
|
||||
|
||||
m8
|
||||
|
||||
--- SHIPS ---
|
||||
|
||||
s4
|
||||
For ship/plane/unit specification, allow a/13/b/15/16/c type
|
||||
specification where fleets, wings, and armies may be included along
|
||||
with numbers. (WARNING: This would require massive restructuring.)
|
||||
|
||||
s13
|
||||
once ships on sail have arrived at their destination, the "Your fleet
|
||||
lead by ship #x has reached x,y." in production report every time.
|
||||
|
||||
s22
|
||||
Another suggestion related to s21. The gain in efficiency of planes on
|
||||
carriers or sufficiently crewed ships on sea should use construction
|
||||
materials etc. This is to make it consistent with land units gaining
|
||||
efficiency in a sector where the necessary materials are present.
|
||||
Otherwise it leads to abuse: Say in the beginning of the game I build
|
||||
a ship but don't want to spend the hcms to build it completely - so I
|
||||
just crew it it will gain efficiency by itself. I think it could
|
||||
easily be implemented by giving every ship some capacity for lcms and
|
||||
hcm's.
|
||||
|
||||
s24
|
||||
|
||||
--- PLANES ---
|
||||
|
||||
p10
|
||||
chh [38:382]% scrap p 28,0 ?eff<50
|
||||
Really scrap all planes in 28,0 [n]? n
|
||||
The prompt is misleading. (Same goes for scuttle). Scuttle and scrap
|
||||
should probably be consolidated.
|
||||
|
||||
p17
|
||||
|
||||
--- LAND UNITS ---
|
||||
|
||||
l14
|
||||
perhaps since land units in mountains are so hard to attack, we shuold
|
||||
just not let land units into mountains to begin with.
|
||||
|
||||
l16
|
||||
|
||||
--- COMMODITIES AND SECTORS ---
|
||||
|
||||
c8
|
||||
Change bridges (and towers) so that they only crumble when shelled
|
||||
below 15%. Allows attackers an extra chance for a bridge attack.
|
||||
|
||||
c13
|
||||
feed <SECTS> <SECT>
|
||||
If a sector in <SECTS> needs more food, send it food from <SECT>.
|
||||
|
||||
c16 - WARNING - may be difficult to code
|
||||
forts should return fire even if shot missed
|
||||
|
||||
c19
|
||||
|
||||
--- INFORMATION COMMANDS ---
|
||||
|
||||
i5
|
||||
neweff [s <SHIPS>|p <PLANES>|l <UNITS>] to show the efficiency these
|
||||
things will have after the update. At present you can only get this
|
||||
info by doing some heavy calculations.
|
||||
|
||||
i10
|
||||
gstarve <SECTS>
|
||||
lists sectors that need more food if they want to attain maximum civ
|
||||
growth.
|
||||
|
||||
i12
|
||||
prod
|
||||
should list the commodities consumed in f h * ! sectors for building
|
||||
stuff. (This would help you calculate your production deltas.)
|
||||
|
||||
i16
|
||||
bmap <SECTS> sh
|
||||
to show enemy ships (that you would see with radar or coastwatch).
|
||||
|
||||
i17
|
||||
bmap <SECTS> sa
|
||||
to show enemy satellites (that you would see on radar).
|
||||
|
||||
i18
|
||||
dump
|
||||
should give you the oldown number, rather than just a *. (Does dump
|
||||
only give you a * if you're not the oldown? I don't know. You can find
|
||||
the oldown using ?oldown= so dump should give it to you).
|
||||
|
||||
i20
|
||||
radar [<SHIPS> | <SECTS>] S
|
||||
shows enemy ships but not your own.
|
||||
|
||||
i22
|
||||
cen * ?connect=<SECT>
|
||||
lists all sectors connected by land to <SECT>. Handy for setting up
|
||||
territories.
|
||||
|
||||
i24
|
||||
Allow | as well as & in selection syntax. e.g. res * ?des=o|des=g
|
||||
(WARNING: cannot use single bar as the or character because "|" is
|
||||
used as a pipe in the standard client and possibly in other clients.
|
||||
Another character should be used instead ( or maybe "||"?)
|
||||
|
||||
i27
|
||||
|
||||
--- TELEGRAMS, ANNOUNCEMENTS, NEWS ---
|
||||
|
||||
t2
|
||||
Separate BULLETIN's from Telegrams (so that when we're in the middle
|
||||
of a fight we will know if we were just attacked or we simply have
|
||||
just received a letter from a friend).
|
||||
|
||||
t9
|
||||
When you are writing a telegram or an announcement and an update hits,
|
||||
then your telegram or announcement gets lost. ( is it even POSSIBLE to
|
||||
fix this?)
|
||||
|
||||
t10
|
||||
|
||||
--- UPDATES ---
|
||||
|
||||
u5
|
||||
Planes should not be built by conquered populace. (The problem here is
|
||||
that building planes uses mil, and you can lose the sector because all
|
||||
your mil that was being used to hold the sector disappeared into the
|
||||
planes so you loose the sector at the update.) ALREADY FIXED?
|
||||
|
||||
u9
|
||||
|
||||
--- DEITY ---
|
||||
|
||||
d3
|
||||
Add che (target and number) to deity dump format.
|
||||
|
||||
d8
|
||||
|
||||
--- MISCELLANIOUS AND DOCUMENTATION ---
|
||||
|
||||
x1
|
||||
Often BTU's aren't updated immediately, and the prompt is out of sync
|
||||
with the actual amount of BTU's they have.
|
||||
|
||||
x6
|
||||
info takeover, avail, loyalty
|
||||
There should be man pages on these.
|
||||
|
||||
x26
|
||||
|
||||
--- ERROR MESSAGES ---
|
||||
|
||||
e3
|
||||
_________________________________________________________________
|
||||
|
||||
If you have any comments/additions regarding this list, mail them to
|
||||
me at wolfpack@wolfpackempire.com with the word "wish" in the subject line.
|
||||
|
||||
Wolfpack!
|
||||
|
||||
Last updated: January, 1999
|
14
doc/backups
Normal file
14
doc/backups
Normal file
|
@ -0,0 +1,14 @@
|
|||
It is recommended that you take a backup of the "data" directory once
|
||||
in a while in case of system crashes, data corruption, or whatever.
|
||||
|
||||
It is VERY important to note that you should only take complete snapshots
|
||||
of the data directory and only restore complete snapshots of the data
|
||||
directory. Restoring individual files from backups can cause problems.
|
||||
Some of the known problems with partial restores are:
|
||||
|
||||
* In games with MOB_ACCESS enabled, mobility will be extremely out of
|
||||
sync if you do not do a complete data directory restore.
|
||||
|
||||
* Land units, ships and planes may think they are loaded onto ships
|
||||
or land units that do not exist, or have changed owner (been sunk
|
||||
or destroyed and then rebuilt) since the last backup.
|
42
doc/bug-reports
Normal file
42
doc/bug-reports
Normal file
|
@ -0,0 +1,42 @@
|
|||
Reporting Bugs
|
||||
|
||||
Code Correctness
|
||||
|
||||
What's a bug? Well, if a game program core-dumps under normal
|
||||
conditions, that's definitely a bug. If a player can manufacture
|
||||
game items (circumventing the intended game semantics) then
|
||||
that's a bug too.
|
||||
|
||||
If you don't agree about an existing semantic, or you don't like
|
||||
the format of a particular command output, that's NOT a bug!
|
||||
|
||||
If you do have a bug to report, I will only pay attention if
|
||||
I have a chance of fixing it. Bug reports which vaguely
|
||||
describe behavior, e.g., "Sometimes when I run the ship
|
||||
command, it gives me funny output" will be ignored! Bug
|
||||
reports should include game output, stack traces if possible
|
||||
(assuming a core dump is produced), and the major, minor, and
|
||||
patch level of the version you're running.
|
||||
|
||||
Once you find a bug, try and reproduce it. If you can't,
|
||||
then say so. If you can, say that too. If you can't reproduce
|
||||
it, chances are pretty good that I can't either.
|
||||
|
||||
If you have a debugger, try running the offending game
|
||||
section under your debugger -- preferably gdb -- and try
|
||||
and locate the area of code responsible.
|
||||
|
||||
If you can fix the bug and verify the fix, then you can bet
|
||||
that I'll be much more interested in your bug report. Response
|
||||
time is likely to be greater too!
|
||||
|
||||
Semantics
|
||||
|
||||
If you want to get into a discussion of game semantics, the
|
||||
best place to do that is rec.games.empire, or your favorite
|
||||
empire-hackers mailing list. Don't send me a bug report
|
||||
about it!
|
||||
|
||||
Naturally, I hope you don't find any bugs. If you do,
|
||||
go through the above steps, and mail the resulting output
|
||||
to us -- wolfpack@wolfpackempire.com
|
143
doc/coding
Normal file
143
doc/coding
Normal file
|
@ -0,0 +1,143 @@
|
|||
Guidelines for writing Empire code
|
||||
|
||||
|
||||
Remarks from Dave Pare:
|
||||
|
||||
And now, a few editorial remarks on my views on Good Techniques for
|
||||
Modifying Existing Software:
|
||||
|
||||
My safari through the hot and bug-ridden jungle that Empire has become
|
||||
has given me some new insights on the modification of large software
|
||||
packages. My adventure has prompted me to propose some simple coding
|
||||
guidelines for those dreaming of hacking on the code:
|
||||
|
||||
1) Be invisible. When you make a change, think not about marking your
|
||||
place in history, or about showing off how much nicer your two-space
|
||||
tabs are than those old, icky eight-space tabs that the stupid empire
|
||||
hackers of old used, but think instead about the asethetics of the whole.
|
||||
The resulting lines of code should flow smoothly from the beginning of the
|
||||
procedure to the end. Empire is 60,000 lines of code. If you're the
|
||||
general case, you're only changing fifty lines, so be aware of that.
|
||||
|
||||
2) Procedurize. If you find yourself in a triple-nested loop, or a five
|
||||
hundred line procedure, perhaps it's because you need to split some of
|
||||
that code off into a procedure. In general, if you've got more than two
|
||||
levels of tabs (or indentations), or more than one or two major loops in
|
||||
a procedure, something may well be amiss.
|
||||
|
||||
|
||||
Sasha Mikheev on indentation:
|
||||
|
||||
The empire indentation style can be achived by using
|
||||
indent -orig -i8 foo.c
|
||||
|
||||
or in old c-mode emacs (versions before 19.29):
|
||||
;add this to .emacs
|
||||
(setq c-indent-level 8)
|
||||
(setq c-continued-statement-offset 8)
|
||||
(setq c-argdecl-indent 8)
|
||||
(setq c-brace-offset -8)
|
||||
(setq c-label-offset -8)
|
||||
|
||||
|
||||
Further comments by Ken Stevens:
|
||||
|
||||
1) Global variables
|
||||
The only variables which should be global are constants. If you write
|
||||
a routine which changes a global variable, then you will corrupt the
|
||||
data when two different players run that routine at the same time.
|
||||
|
||||
2) Portability.
|
||||
The following code:
|
||||
char a;
|
||||
#ifdef FOO
|
||||
unsigned char b;
|
||||
#endif FOO
|
||||
Should be rewritten as:
|
||||
s_char a;
|
||||
#ifdef FOO
|
||||
u_char b;
|
||||
#endif /* FOO */
|
||||
|
||||
AIX has different conventions for signed chars, and IRIX requires the
|
||||
/* comments */ after #endif.
|
||||
|
||||
3) Cut-and-Paste
|
||||
Cut-and-Paste coding is by far the biggest problem that the current
|
||||
Empire suffers from. This is how cut-and-paste coding happens. Joe
|
||||
Shmuck decides that he wants to add a new function to the server. So
|
||||
he goes hunting through the server to find some already existing code
|
||||
which does something similar to what he wants to do. This is good.
|
||||
You should always write new code to imitate old code. What is bad is
|
||||
when Joe Shmuck decides to simply "copy" 200 lines of code from the old
|
||||
function into his new function, and then just change a couple of
|
||||
little things here and there to suit his needs. This method, known as
|
||||
Cut-and-Paste coding is the fastest and easiest way to code. However,
|
||||
it results in a server that is impossible to maintain. What Joe
|
||||
_should_ have done, is "move" the 200 lines of code into a new _third_
|
||||
function which the first two both call. This is called writing a
|
||||
"general solution" to handle both cases. Most of my work in the
|
||||
Empire2 project consisted in cleaning up after a bonch of Joe Shmucks.
|
||||
I took repeated code and "consolidated" it into general function
|
||||
libraries.
|
||||
|
||||
4) Good style.
|
||||
Just to add to Dave's "Be Invisible" motto, I'd like to give a little
|
||||
example to illustrate some basic do's and don'ts for coding style:
|
||||
|
||||
The following function has bad style:
|
||||
|
||||
double att_combat_eff(com,own)
|
||||
struct combat *com;
|
||||
natid own;{
|
||||
double str;
|
||||
double eff=1.0;
|
||||
if(com->type==EF_SECTOR)
|
||||
{
|
||||
eff=com->eff/100.0;
|
||||
if(com->own==own){
|
||||
str=com->sct_dcp->d_ostr;
|
||||
}else{
|
||||
str=com->sct_dcp->d_dstr;eff=2.0+(str-2.0)*eff;
|
||||
}else if(com->type==EF_SHIP&&com->own!=own)
|
||||
eff=(1.0+com->shp_mcp->m_armor/100.0);
|
||||
return eff;}
|
||||
|
||||
Here is the same function written with "good" style:
|
||||
|
||||
double
|
||||
att_combat_eff(com, own)
|
||||
struct combat *com;
|
||||
natid own;
|
||||
{
|
||||
double eff = 1.0;
|
||||
double str;
|
||||
|
||||
if (com->type == EF_SECTOR) {
|
||||
eff = com->eff / 100.0;
|
||||
if (com->own == own)
|
||||
str = com->sct_dcp->d_ostr;
|
||||
else
|
||||
str = com->sct_dcp->d_dstr;
|
||||
eff = 2.0 + (str - 2.0) * eff;
|
||||
} else if (com->type == EF_SHIP && com->own != own)
|
||||
eff = (1.0 + com->shp_mcp->m_armor / 100.0);
|
||||
|
||||
return eff;
|
||||
}
|
||||
|
||||
These are all the things I fixed when changing the bad to the good:
|
||||
- Function names should always start a new line (so you can search for them)
|
||||
- There should always be a space after a ","
|
||||
- Function arguments should be indented 8 spaces
|
||||
- There should always be a tab after a type declaration
|
||||
- Opening function bracket should be on a line by itself
|
||||
- Indentation should be 8 spaces
|
||||
- There should always be a space on both sides of every operator
|
||||
- There should always be a space after if, for, while, switch
|
||||
- The opening bracket should be on the same line as the if
|
||||
- There should always be a space on either side of a {
|
||||
- There should always be a new line after a ;
|
||||
- The closing function bracket should be on a line by itself
|
||||
|
||||
|
42
doc/compiling
Normal file
42
doc/compiling
Normal file
|
@ -0,0 +1,42 @@
|
|||
|
||||
Compiling the Game
|
||||
|
||||
Required software:
|
||||
make
|
||||
cc
|
||||
|
||||
Machine-wise configuration
|
||||
|
||||
Determine what kind of machine you're on (sun4, sun3, sequent,
|
||||
mipsultrix machine, alpha, etc).
|
||||
|
||||
Type "make" at the high level, and see if your machine is in the
|
||||
resulting list.
|
||||
|
||||
If it is not, you will need to edit the high-level Makefile and
|
||||
add support for your architecture in. Send e-mail to:
|
||||
"wolfpack@wolfpackempire.com"
|
||||
if you need help doing this.
|
||||
|
||||
Constructing Binaries
|
||||
|
||||
First, run "make depend" to build the dependencies. You only need
|
||||
to do this once before the first build. You may run this again if
|
||||
you make significant changes to the code (including new files, etc.)
|
||||
|
||||
Second, Run "make <arch> &" at the top level.
|
||||
|
||||
Installing Info Pages
|
||||
|
||||
The INFO pages aren't run as a part of the normal make session.
|
||||
In order to install them, you must cd into the "info" subdirectory,
|
||||
and run "make". This will nroff all the info documents and place
|
||||
them in the "../info.nr" directory, from where players can
|
||||
access them during the game.
|
||||
|
||||
You will need perl5 installed as your version of perl for this to
|
||||
work.
|
||||
|
||||
If you add or change any info pages, then be sure to follow
|
||||
the instructions in info/README to generate new Subjects pages.
|
||||
|
23
doc/configuration
Normal file
23
doc/configuration
Normal file
|
@ -0,0 +1,23 @@
|
|||
Configuring your Empire server
|
||||
|
||||
Every option within the server has been made Run-time configurable.
|
||||
|
||||
But, certain things may break if you begin a game and start changing
|
||||
options. One specific thing you cannot change once you have created
|
||||
a world is the WORLD_X and WORLD_Y. If you change these values, you
|
||||
will need to rebuild your world.
|
||||
|
||||
Most of the other options you should be able to change on the fly. Of
|
||||
course, you probably won't want to be changing options in the middle of
|
||||
a game. But, you should be able to turn them on/off safely. Certain
|
||||
things might get funny (like if you turn on/off HIDDEN in the middle
|
||||
of a game for example) but the server should remain stable.
|
||||
|
||||
See the "doc/econfig" for a better description of how the Empire config
|
||||
works, and see the "data/econfig" file for a better description of each
|
||||
of the configurable settings in the server. (You may also want to
|
||||
check out the "info.nr/Options" file for more information on individual
|
||||
options.)
|
||||
|
||||
Steve McClure, 1998
|
||||
|
12
doc/debugging
Normal file
12
doc/debugging
Normal file
|
@ -0,0 +1,12 @@
|
|||
emp_server will only dump core if you run with the -d flag.
|
||||
|
||||
If you decide not to dump core, then the most recent player commands
|
||||
should be listed in data/server.log. Each command will be preceeded
|
||||
by the country number of the player which issued it. When the player
|
||||
is prompted, then [prompt] is printed.
|
||||
|
||||
If you decide to dump core, then the most recent player commands will
|
||||
be in the global array called player_commands which is indexed by
|
||||
player_commands_index. The array will contain strings of the form:
|
||||
"%3d %3d %s", index, player->cnum, command
|
||||
|
15
doc/disk_space
Normal file
15
doc/disk_space
Normal file
|
@ -0,0 +1,15 @@
|
|||
What can I delete?
|
||||
|
||||
|
||||
If disk space is a concern, then there are a number of files which you can
|
||||
safely delete without affecting your game.
|
||||
|
||||
You can type this immediately:
|
||||
rm -fr xland old
|
||||
|
||||
Once you have compiled your info pages, you can type:
|
||||
rm -fr info
|
||||
|
||||
Once you have compiled your server, you can type:
|
||||
make clean
|
||||
|
141
doc/econfig
Normal file
141
doc/econfig
Normal file
|
@ -0,0 +1,141 @@
|
|||
This is a short note on the empire configuration stuff. Some of this
|
||||
is for deities to enable them to configure things, some of it is for
|
||||
coders to see how this stuff works.
|
||||
|
||||
Julian Onions <j.onions@nexor.co.uk> 15/7/95
|
||||
|
||||
--
|
||||
Also, the Empire config files are now self-documenting (to a point.)
|
||||
Each option/variable now has a comment associated with it to hopefully
|
||||
make life easier on deities wanting to change things.
|
||||
|
||||
-- Steve McClure, 10/21/1998
|
||||
--
|
||||
|
||||
|
||||
Deity Notes.
|
||||
-----------
|
||||
|
||||
To find out the current configuration, the simplest method is to
|
||||
compile up util/pconfig and the run it. It can be run either with no
|
||||
arguments, in which case it will printout in config format the current
|
||||
compiled in options. Otherwise with a file containing a configuration
|
||||
it will first read in this file, and overright any copmiled in
|
||||
variables and then printout the merged options.
|
||||
|
||||
So the first method shows you whats compield in, the 2nd how a config
|
||||
file would modify this.
|
||||
|
||||
Blank lines are ignored, as are lines starting with a # character.
|
||||
|
||||
Most of the options are straight forward, they take either a string
|
||||
(quote using " to get spaces in it) or a number - integer or floating
|
||||
point depending on the option.
|
||||
|
||||
For instance
|
||||
privname "The Deity"
|
||||
sets the internal privname variable to that string, and
|
||||
port "7777"
|
||||
sets the empire port to 7777.
|
||||
btu_build_rate 0.0004
|
||||
sets the internal floating point number for btu building rate,
|
||||
and so on.
|
||||
|
||||
The only other type of variable currently defined are the
|
||||
options. These may be specified as one or more lines starting
|
||||
"option" and turned off with the keyword "nooption".
|
||||
|
||||
So, for instance
|
||||
|
||||
option FUEL ORBIT
|
||||
and
|
||||
option FUEL
|
||||
option ORBIT
|
||||
|
||||
are equivalent
|
||||
|
||||
To turn off an option that is compiled in, you can similarly have
|
||||
|
||||
nooption FUEL
|
||||
nooption ORBIT
|
||||
or
|
||||
nooption FUEL ORBIT
|
||||
|
||||
|
||||
As a check, pconfig will printout some of the internal file names as
|
||||
comments at the end just to check they are in the right place.
|
||||
|
||||
The server can take a -e config file as a command line option so that
|
||||
it will read a specific config file. If not, it will default to
|
||||
looking for a file econfig in the built in data directory, but it
|
||||
won't mind if one is absent. Similarly, util/files and util/fairland
|
||||
et al all take a -e config file to run from a different config.
|
||||
Thus, to start two games on the same host, you might have
|
||||
|
||||
Game1:
|
||||
files -e econfig1
|
||||
fairland -e econfig1
|
||||
emp_sever -e econfig1
|
||||
|
||||
Game2
|
||||
files -e econfig2
|
||||
fairland -e econfig2
|
||||
emp_server -e econfig2
|
||||
|
||||
econfig1 might have the lines
|
||||
data "/empire/data1"
|
||||
info "/empre/info"
|
||||
port "7777"
|
||||
|
||||
and econfig2 might have the lines
|
||||
|
||||
data "/empire/data2"
|
||||
info "/empre/info"
|
||||
port "7778"
|
||||
|
||||
You only need the lines in that file that you require to override the
|
||||
compiled in definitions, however having all the definitions may help
|
||||
you to understand what is on and off. You could do this with
|
||||
|
||||
pconfig econfig1 > e1 && mv e1 econfig1
|
||||
pconfig econfig2 > e2 && mv e2 econfig2
|
||||
|
||||
which will fill in all the missing options and values with their defaults.
|
||||
|
||||
|
||||
|
||||
Coders information
|
||||
------------------
|
||||
|
||||
The simplest way to describe this is to step through how a new option
|
||||
would be added.
|
||||
|
||||
1. Think of the option name, say, "DUMB".
|
||||
2. In lib/global/options.c define an integer and set it to 1 or 0 as
|
||||
appropriate. This is usually done as
|
||||
#ifdef DUMB
|
||||
int opt_DUMB = 1;
|
||||
#else
|
||||
int opt_DUMB = 0;
|
||||
#endif
|
||||
|
||||
3. At the end of that file, add an entry into the table so it is
|
||||
configurable. This is done with a line like
|
||||
{ "DUMB", &opt_DUMB },
|
||||
Make sure the table is still terminated by two NULL values!
|
||||
|
||||
4. In h/optlist.h add an external definition of this variable
|
||||
|
||||
extern int opt_DUMB;
|
||||
|
||||
5. Now the variable is defined, and configurable through the option
|
||||
keyword in the config file. So you can go ahead and make changes
|
||||
elsewhere in the code. This normally looks like
|
||||
|
||||
if (opt_DUMB) {
|
||||
pr("You're being dumb\n");
|
||||
} else {
|
||||
pr ("You're being really dumb\n");
|
||||
}
|
||||
but it may call subroutines, return early from functions or whatever.
|
||||
|
33
doc/files
Normal file
33
doc/files
Normal file
|
@ -0,0 +1,33 @@
|
|||
doc/
|
||||
Deity Documentation.
|
||||
|
||||
man/
|
||||
Man pages.
|
||||
|
||||
scripts/
|
||||
Scripts to help you run a game.
|
||||
|
||||
bin/
|
||||
data/
|
||||
info.nr/
|
||||
Game binaries, data, and compiled info pages.
|
||||
|
||||
info/
|
||||
Nroff source for the Empire info pages.
|
||||
|
||||
include/
|
||||
Empire include files (headers, .h files)
|
||||
|
||||
src/doconfig/
|
||||
Self-compiling and configuring program for building the server.
|
||||
|
||||
src/client/
|
||||
Source code for the Empire client program.
|
||||
|
||||
src/server/
|
||||
src/lib/
|
||||
Source code for the Empire server.
|
||||
|
||||
src/util/
|
||||
Programs used to generate Empire data files.
|
||||
|
16
doc/message
Normal file
16
doc/message
Normal file
|
@ -0,0 +1,16 @@
|
|||
Hello. You have been identified as a potential author of Empire source
|
||||
code. We are currently in the process of trying to release the code under
|
||||
the GPL to protect the code and to allow for it's wide-spread distribution.
|
||||
|
||||
We would like to get your comments (either positive or negative) and/or
|
||||
your approval.
|
||||
|
||||
Thanks!
|
||||
|
||||
Wolfpack!
|
||||
|
||||
Wolfpack! Bringing you the latest and greatest in Empire development and
|
||||
support, and, in our minds, the best multi-player game around.
|
||||
|
||||
Check out Empire at http://www.wolfpackempire.com
|
||||
wolfpack@wolfpackempire.com
|
98
doc/pthreads
Normal file
98
doc/pthreads
Normal file
|
@ -0,0 +1,98 @@
|
|||
Below is Sasha Mikheev's documentation on the pthreads support (POSIX threads)
|
||||
which is valid on June 7th, 1996 (date of message.) I have changed the
|
||||
path names only since the tree has changed. Otherwise, the docs are correct.
|
||||
|
||||
-- Wolfpack
|
||||
|
||||
--- Begin message
|
||||
|
||||
Hi,
|
||||
|
||||
I have finished documenting pthreads implementation. Pls look at the
|
||||
results and tell me what can be improved.
|
||||
|
||||
Implementation:
|
||||
Empire now uses its own thread layer. It makes using another
|
||||
threading library much easier. The interfase is modeled after
|
||||
the LWP library which is what empire server uses by default.
|
||||
The interface is specified in the include/empthread.h file. Implementations
|
||||
should go into src/lib/empthread/xxx.c.
|
||||
Empire assumes that thread can not be preempted while it is
|
||||
running. The _only_ places where context switch between threads can
|
||||
occur are:
|
||||
empth_sleep(), empth_yield(), empth_select(), empth_sem_wait().
|
||||
That is in sleep, in waiting for I/O on filedescriptor, semaphore or
|
||||
voluntary yielding control or exiting. In empire empth_select is
|
||||
called only on sockets so the context switch can occur only on the
|
||||
network I/O.
|
||||
Also each empire thread can have it is own context which is restored
|
||||
automatically after the context switch. Currently it is used for each
|
||||
thread to have player specic data. (struct player)
|
||||
|
||||
LWP implementation:
|
||||
Almost nothing has changed there. src/lib/empthread/lwp.c is a very
|
||||
simple wrapper around the LWP library. The only change is that thread
|
||||
inherits its flags if they are not explicitly set.
|
||||
For more details on LWP internals read Dave Pare's description in
|
||||
doc/threads.
|
||||
|
||||
POSIX threaads: (pthreads)
|
||||
Unlike LWP pthreads are preemtive. The steps must be taken to insure
|
||||
that thread is preempted only as described above. It is done by
|
||||
creating a global mutex mtx_ctxsw. At the any given moment only one
|
||||
thread can be running and have a lock on mtx_ctxsw. Every other thread
|
||||
is waiting for the mtx_ctxsw to become avaiable. It is done by calling
|
||||
pthread_mtx_lock(). When thread enters into empth_sleep(),
|
||||
empth_yield(), empth_exit(), empth_sem_wait() empth_select() it
|
||||
releases the mutex by calling pthread_mtx_unlock() and thus allowing
|
||||
other thread to get a lock.
|
||||
Thread context is implemented by using pthread_getspecific and
|
||||
pthread_setspecific functions.
|
||||
Killing other thread is done by setting victim thread state into
|
||||
EMPTH_KILLED and sending alarm signal to the victim thread. The later
|
||||
has to be done to wake up a thread waiting on I/O in
|
||||
empth_select. Then the victim will examine its state and if it is set
|
||||
to KILLED it will terminate its execution. Unfortunately pthread_kill
|
||||
seems not to be working/exists in some pthread implementations. But
|
||||
fortunately empire always does some I/O before doing
|
||||
empth_terminate().
|
||||
Semaphores are not available in pthreads thus mutexes and conditional
|
||||
variables are used to implement them. See the code and or OS design
|
||||
book for details.
|
||||
|
||||
Problems:
|
||||
On linux with libc 2.1.18 mit pthread library does not wake up a thread upon
|
||||
the delivery of a signal. Which means that server can not be stopped
|
||||
short by kill -9 and empth_wakeup() is not working. Fortunately in
|
||||
current server data are always written to player before the call to
|
||||
empth_wakeup so players threads will never wait in select forever.
|
||||
|
||||
Probably it will be solved when linux libc gets upgraded to latest
|
||||
pthread library.
|
||||
|
||||
In addition installing pthreads on Linux is difficult. By default
|
||||
linux libc has pthread stubs in but pthread code is disabled. So you
|
||||
have either recompile libc or grab mit pthreads and install them
|
||||
manually.
|
||||
Meanwhile I do not recommend to use pthreads on linux unless you
|
||||
know what you are doing.
|
||||
|
||||
On solaris 2.5 select does not set errno to EINTR when select is broken
|
||||
by soignal sent by pthread_kill. It doesnt affect anything.
|
||||
|
||||
On OSF/1 the older version of pthread is used. It has slightly changed
|
||||
function semantics. Also it lacks pthread_kill funcion which means
|
||||
that empth_wakeup() is not working.
|
||||
Calling pthread_exit() from the main thread crashes the
|
||||
program. According to the manual program should not exit until all
|
||||
threads exited.
|
||||
The workaround is to send main into while(1) { sleep(60); } loop;
|
||||
|
||||
|
||||
--
|
||||
Sasha Mikheev There is a saying in Cairhienin,
|
||||
though i have heard it as far away
|
||||
NetVision Israel, Ltd as Tarabon and Saldaea:
|
||||
sasha@netvision.net.il
|
||||
Tel +972-4-8550330 Take what you want and pay for it.
|
||||
http://aldan.netvision.net.il/~sasha
|
161
doc/threads
Normal file
161
doc/threads
Normal file
|
@ -0,0 +1,161 @@
|
|||
|
||||
The game has been threaded. Major changes have occurred.
|
||||
Emp_update, emp_login, emp_tm, and emp_player have been merged.
|
||||
Basically, there isn't anything else besides server. It's big.
|
||||
60,000-lines of code big.
|
||||
|
||||
The lib directory now contains nine subdirectories:
|
||||
common
|
||||
gen
|
||||
global
|
||||
as
|
||||
player
|
||||
commands
|
||||
subs
|
||||
update
|
||||
lwp
|
||||
|
||||
The main directory contains five (code) directories:
|
||||
client
|
||||
lib
|
||||
server
|
||||
util
|
||||
h
|
||||
|
||||
The server has seven basic threads:
|
||||
|
||||
main:
|
||||
creates accept, killidle, and update scheduler.
|
||||
sets signals, opens files.
|
||||
accept:
|
||||
opens a socket, binds, listens, and accepts new players.
|
||||
creates a player thread for each new socket.
|
||||
player:
|
||||
negotaties the player's login, and then interprets
|
||||
the player's game commands.
|
||||
killidle:
|
||||
eyeballs the logged-in players every sixty seconds and
|
||||
closes the connections of those who have been idle for
|
||||
longer than 15 minutes.
|
||||
update scheduler:
|
||||
Sleeps until update is due to go off, then instructs all
|
||||
player threads currently running commands to abort them.
|
||||
It waits for a few seconds so that this can occur, and
|
||||
then creates the update thread, and schedules the next
|
||||
update. (This scheduler should produce single, accurate
|
||||
updates instead of double-updates and delayed updates)
|
||||
update:
|
||||
The standard update procedure. It runs at high priority
|
||||
and performs no network i/o, so the game effectively hangs
|
||||
while the update is in progress.
|
||||
select:
|
||||
This thread and its interface provides a mechanism for
|
||||
other threads to deschedule until either a a file descriptor
|
||||
is read/write ready, or a particular amount of time has passed.
|
||||
When the select thread actually runs, the whole process
|
||||
blocks until the select system call returns. However,
|
||||
select runs at the lowest possible priority so other
|
||||
threads get to run to completion before the select gets
|
||||
executed.
|
||||
|
||||
Overall Notes:
|
||||
|
||||
Unit and sector files are kept in-core for Your Viewing Pleasure.
|
||||
(It was actually required in order to merge in emp_update)
|
||||
This means the server will use significant memory for the larger
|
||||
games.
|
||||
|
||||
Per-player bigmap files have been merged into one EF_MAP file, with
|
||||
each player getting one record. This is also kept in-core.
|
||||
|
||||
Estimated memory cost of a 64-player 256x256 world game with
|
||||
each player having 100 land units, 100 planes, 100 ships, and
|
||||
a bigmap comes to a little over eleven megabytes of space,
|
||||
including the 700k text segment.
|
||||
|
||||
the "wai()" command doesn't work yet.
|
||||
|
||||
Implementation Notes: My Opportunity to Spout Empire Technical Jargon
|
||||
|
||||
Empire is now a miniature operating system, with all that entails.
|
||||
Threads are not simple to use. I know the threads package
|
||||
intimately, and I was confused several times -- probably because
|
||||
the threads interface I provide isn't all that straightforward,
|
||||
even though it seems like it. Hopefully a second iteration by
|
||||
someone who knows what they're doing will be better.
|
||||
|
||||
I expect this will be much worse for everyone else who hasn't gone
|
||||
through my experience. Bottom line for all you part-time hackers
|
||||
out there: don't mess with the current process model, or you'll get
|
||||
yourself into all kinds of trouble.
|
||||
|
||||
Thread scheduling and descheduling happens in the io_input and
|
||||
io_output calls. The higher level interfaces in the player thread
|
||||
to these are the getstarg/getstring and pr procedures. If your
|
||||
process ever has to wait for input or output, it will block, allowing
|
||||
other threads to run. Those other threads may well modify data
|
||||
out from under you, so be prepared to have your shared in-memory
|
||||
constructs (ships, planes, sectors, land units, etc) modified out
|
||||
from under you whenever you do i/o.
|
||||
|
||||
There's a new player global context structure that is shared
|
||||
amongst all the player threads. When a given thread starts
|
||||
or restarts, it sets the global player variable to the appropriate
|
||||
value. Thus, part of the logic of a "context switch" is the setting
|
||||
of player. If you go and add calls to the lightweight process
|
||||
system, you *must* be sure to set the player variable as the
|
||||
io_output and io_input routines do. Otherwise, things will be
|
||||
extremely confused. (I'm not very happy with this global
|
||||
variable, but I didn't have the gumption to do anything more)
|
||||
|
||||
Most routines that used to return pointers to static space no
|
||||
longer do so. Instead, you're expected to pass in a buffer which
|
||||
will be filled up by the routine. This hit a *lot* of routines,
|
||||
so check the new syntax before using an old and trusted routine
|
||||
blindly.
|
||||
|
||||
Any files that are loaded into core (like the sector, map, nation,
|
||||
ship, plane, and land unit files) are shared between all the threads.
|
||||
That's good news. If your thread modifies another player's nat_tgms
|
||||
field, he'll see it next time through the command loop, without
|
||||
anyone having to read anything from disk! Furthermore, he'll have
|
||||
no delay in zeroing out that field, so there won't be the annoying
|
||||
double telegram reports which were caused by the delay induced by
|
||||
emp_tm.
|
||||
|
||||
Unfortunately, modifications to entries to these mapped files must
|
||||
be followed by the appropriate "write record" command (like putship,
|
||||
putnat, etc) or else the changes won't be stored to disk permanently.
|
||||
Update is the exception to this rule, because it writes all records
|
||||
to disk using ef_flush when it's done. This is important, since
|
||||
if and when the players learn how to coredump the server *and* they've
|
||||
managed to build some object w/o their nation record having been
|
||||
updated, they essentially get the item without paying for it.
|
||||
|
||||
There are two interfaces to the empire file code: the pointer
|
||||
interface exemplified by np = getnatp(cnum), and the copy interface
|
||||
shown by getsect(x, y, §)/putsect(§). Both still work fine.
|
||||
However, you have to be careful when using the pointer interface
|
||||
not to change things prematurely, because any changes to the pointer
|
||||
actually change the data itself -- including putvar, etc. Some
|
||||
commands use the copy interface now, change some variables, and
|
||||
then decide to bail out of the command when something goes wrong.
|
||||
Be careful if you decide to use pointers and then bail out early.
|
||||
Even if *you* don't write the pointer to disk, other subsequent
|
||||
activity probably *will*, resulting in a surprise for the players.
|
||||
|
||||
Each player thread gets 64k of stack space + more depending on the
|
||||
size of WORLD_X*WORLD_Y. I hope that's enough. If not, we'll have
|
||||
to remove the larger stack variables and move them into static space.
|
||||
|
||||
Adding new records to core-loaded (EFF_MEM) files is annoying now.
|
||||
Instead of simply writing out a new record, you have to call
|
||||
ef_extend(type, count) to enlarge the file by count records.
|
||||
Additionally, any outstanding pointers you obtained from that
|
||||
file are now invalid. This command results in a "close/open"
|
||||
for the file, requiring the entire contents to be read in from
|
||||
disk again. Luckily, the only instance I saw of this was the
|
||||
"build" command, and my call to ef_extend does it in groups of
|
||||
fifty.
|
||||
|
||||
Dave
|
13
doc/troubleshooting
Normal file
13
doc/troubleshooting
Normal file
|
@ -0,0 +1,13 @@
|
|||
Here are some of the most common problems with solutions. This file
|
||||
will probably grow over time.
|
||||
|
||||
(Q) I try to log in as POGO, but the server says, "You're not a deity". Why?
|
||||
|
||||
(A) If you get a "You're not a deity!" message and logged off, check the
|
||||
"data/server.log" file and look at the end for a "NON-AUTH" entry.
|
||||
There should be a "user@host" message in there that failed to log in.
|
||||
The user and host that your system is using may be different than the
|
||||
one you put in your build.conf file. So, enter this new user and host
|
||||
in the auth file, and you should be able to log into the server as a
|
||||
deity now. Note that if you rebuild the server again, the auth file
|
||||
will be overwritten.
|
Loading…
Add table
Add a link
Reference in a new issue