ChangeLog for XScorch.  
Copyright(c) 2000 Justin David Smith
Copyright(c) 2000 Jacob Luna Lundberg.


Changes in 0.1.10
------------------

   NETWORK SUPPORT:
    * The network sync types are now checked. 
    * Better documentation on the sync events in the code.
    * Chat dialogue box is hooked up.
    * We have packet ordering, but not yet retransmission or reordering
      so if tcp manages to drop a packet it's game over...
    * Lots of (now dead) bugs fell out of the new packet reception code.
    * Server is now allowed to configure most game options, even after
      other players have connected.  Clients may look at the game options
      but they will not be allowed to change the options.  


   MISCELLANEOUS:
    * Some sundry speling fixces went in to the source commentary.
    * Sanity checking is performed before beginning a game.

   ``Bring out your dead...''
   ``But I'm not dead yet!''
   
   We're still here, just incredibly busy these days -- both of us are
   swamped in the vagaries of academia, work, research, and more work.  But
   there have been changes in the game, mostly to the networking code --
   we're trying to get it to be more stable.  Please give it a try, and let
   us know if it's working, etc.  See doc/NETWORK for some more information.
   
   We want to get the networking stuff stable before continuing work on
   other aspects of the game.  If you'd like to help out on anything in the
   game, just drop us an e-mail -- we'd love to have the help (and it could
   speed up the release cycle, too :) We'll try to get prereleases out more
   often, time permitting.
   


Changes in 0.1.9
-----------------

   BUG FIXES:
    * Deflector shield strength was too low/incorrect.
    * Fixed problem with shields taking the shot when player fires to
      right at 64degrees.
    * Fixed problem with signal handling that prevented GTK from 
      exiting when various dialogues were open.
    * Fuel counter wasn't decremented when moving (I think this bug was
      introduced in the prereleases).


   NETWORK SUPPORT:
    * Gave up on UDP, ripped out xpuyopuyo's TCP codebase.
    * Implemented (mostly) variable length packets and a recv queue.
    * Fixed condition that might cause segfault regarding screen
      sizes (see #warning's in 0.1.8 for details)
    * Fixed misalignment caused by PRELUDE_BEGIN state (particularly
      noticable when given the --client command-line option).
    * Verification is sort of done on the current player state.
    * Merged recvfrom() calls into single function (Nickolai Zeldovich)
    * Fixed misalignments that were caused by a certain packet arriving
      out of order.
    * Messages are now displayed when client is waiting for some sort
      of network activity.
    * Player movement with fuel is now communicated.
    * Client code was cleaned up.
    * Network > Status option enabled in network games.  The server can
      see all client connections, although the client does not (yet) have
      that information.

   This is a significant overhaul of the network code base; we decided to go
   with TCP after all since the amount of data communicated is rather low. 
   The network code is much more stable; we were able to play complete
   rounds over a rather unstable network link across 1000miles :)  Even the
   bugs in the program (levitating land?!) were consistent on both sides.
   
   There is better error recovery.  When a client drops off permanently, we
   will probably have their player permanently destroyed, or perhaps turn it
   over to an AI player.  Currently, nothing is done, so their tank will just
   sit there until the end of time or someone gets around to blowing it up :)
   
   The downside is 0.1.9 server can only talk to 0.1.9 clients; the protocol
   is not yet stable.  But it seems to be working better; if you want to 
   give it a try, just do ./configure --enable-network



Changes in 0.1.8
-----------------

   NETWORK SUPPORT:
    * It's there.  It sort of works.  See below.
    * Merged network bugfixes by Nickolai Zeldovich
    * Added --port, --server, --client, --name commandline options 
    * Config data/player information is synchronized, sort of.
    * Player orders and inventories are synchronized.


   MISCELLANEOUS:
    * Random walls implemented
    * Fixed bug with getopt() that prevented compile on SunOS
    * The animate flag is now used in land, player dropping

   This release is a bugfix-only release, unless you're following network
   development.  If you're following the network development, PLEASE read
   doc/NETWORK for the current status, especially before sending in bug
   reports.  Networking is disabled by default, you need to ./configure
   --enable-network if you want to try network play.

   There was a segfault-on-startup report on a libc-5 system, but we've been
   unable to determine if xscorch was at fault.  Anyone out there with Linux
   libc 5.3.12 who has been able to run xscorch?



Changes in 0.1.7
-----------------

   NETWORKING MODE:
    * Client/server communication code written.
    * Control messages and chat appear to be working.
    * Chat sort of works (can send, but text box isn't updated for recv)


   BUG FIXES:
    * VCS bug: tanks disappear when wrapping around - fixed.
    * VCS bug: tanks can colocate if in different frames - fixed.
    * VCS bug: distance calculation for damage could take long path even
      with wraparound boundaries, causing no damage to be dealt even 
      though it is reasonable to expect damage - fixed.

   The virtual coordinate system (VCS) was implemented in 0.1.5 to make
   coordinate specification simpler, by allowing us to specify coordinates
   without having to worry about the boundary conditions all over the code. 
   Unfortunately, this change broke a lot of things.  Hopefully they are
   fixed now.

   Networking code is disabled by default; you must configure with the 
   option --enable-network to build the networking code.  NETWORK GAMES
   ARE NOT CURRENTLY PLAYABLE, but if you'd like to check out the code,
   help debug it or better yet, send in code, we'd appreciate it.



Changes in 0.1.6
-----------------

   BUG FIXES:
    * Fixed an off-by-one error that will cause segfaults on game start
      for most operating systems (even sometimes Linux).
    * Additional safeties to avoid a potential but unlikely segfault
      when verifying phoenix class weaponry.
    * make install now uses DESTDIR.


   PORTABILITY:
    * Removed some DEBUG defines that used ellipsi from xscorch.h.
    * Replaced variable array declarations with malloc/free.


   GAMEPLAY:
    * Tank profiles are implemented.  As a direct consequence, tanks can
      no longer occupy the same location on the screen.  Nor can they 
      occupy the same position as a blob of land.  The physics model should
      be much better behaved, now.  This also means there will be user-
      selectable tank icons, in the near future.

   If you get any `levitation' warnings during the game, please contact us 
   promptly.  I think I've resolved the levitation bug, but I'm not sure.



Changes in 0.1.5
-----------------

   BUG FIXES:
    * Fix minor alloc bug with AI controller (Nickolai Zeldovich).
    * Problems with attempting to install to `NONE' are hopefully fixed.
    * Since 0.1.2, funky bombs detonated near the edge of the screen could
      send legs in the wrong direction.  This has hopefully been solved as
      part of a large simplification in how land locations are specified.


   GAMEPLAY:
    * Player starting positions are now randomized (Nickolai Zeldovich).


   WEAPONS:
    * Liquid dirt implemented.
    * Triple Shots have gone away, in favor of the new Triple Turret
      accessory, which now impacts both baby missiles and missiles...
    * Weapon verification completed, one step closer to weapon save files.

   Ah, I forgot to release 0.1.4, in the midst of the system crash.  Let's
   see, Sequential mode has been implemented, but otherwise the changes from
   0.1.4 were minor.  Tank profiles (-> custom tank icons) are next on
   Justin's list, and user-defined weapons are coming up on Jacob's list.



Changes in 0.1.4
-----------------

   BUG FIXES:
    * Fix realloc bug that shows up in Solaris (Nickolai Zeldovich).


   GAMEPLAY:
    * Sequential mode implemented
    * Explosions are now faster



Changes in 0.1.3
-----------------

   BUG FIXES:
    * Bug prevented compiling without sound support, now fixed.


   GRAPHICS:
    * Napalm now has flames.  In the next version, they'll probably be 
      animated flames.


   USER INTERFACE:
    * Pause feature: press ^Z.  This is only meaningful during actual 
      firing but it's kind of handy to be able to pause the game while 
      the missiles are flying...



Changes in 0.1.2
-----------------

   BUG FIXES:
    * Fix crash on startup:  0.1.1 introduced a realloc thinko because I
      wasn't really prepared to release yet.  The realloc was to remind me
      how it should get done...  This release makes sure to initialise that
      pointer first.  ;) -Jacob
    * Made Spider weapons (Funky Bombs) avoid potential lockup.
    * Fixed fatal bug with --geometry, when dimensions given were small.


   SOUND SUPPORT:
    * Sound support is present - see below for comments.


   USER INTERFACE:
    * Minor enhancements; status bar is now usable in small screens (it 
      will split into two rows so you still have access to all the info)
    * Inventory lists will attempt to adjust to the current window size.


   MISCELLANEOUS:
    * `Unknown' AI added. This will select a random AI type, but
      you will not be informed which AI you are playing against!
    * `Random' landscape generator and `Random' sky selection.  These
      will select any of the landscape generators to construct land.
    * `Mass Kill', in the System Menu, is implemented.
    * Icon-related code updated.
    * Ditch Day's Tomorrow!

   Sound support is present, but as you'll quickly notice, there are no
   sounds yet.  Neither of us is particularly musically gifted, so if 
   someone out there is willing to write modules and sound effects, that 
   would be great!  The system is currently looking for XM files, although
   any format playable by libmikmod is fine.

   If you're interested in doing music, I've been thinking of splitting
   it into five parts, prelude, inventory screen, main game, end round,
   and end game.



Changes in 0.1.1
-----------------

   USER INTERFACE:
    * Merged icon, in xscorch-icon.xpm (Matti Hnninen).
    * New xscorch logo! (thanks to Claire Luna Lundberg)
    * Now you can find out who killed you (at end of round).
      Look for the horribly labelled `Xby' field.
    * Added --geometry command-line option
    * Inventory lists are scrolling.  Unfortunately, the scroll
      bars are not actually hooked up (yet).  Arrow keys will
      scroll through the list; I'll get the pager keys working
      someday.  Also, the inventory lists will be smarter about 
      dynamically sizing in the next release.


   WEAPONS and DETONATIONS:
    * Version 1.0 of Riot Bombs, dirt weapons.
    * Ripped out constants all over the place to allow dynamic
      resizing of weapon and accessory lists.  This allows changes
      that will introduce save files for both categories.
    * Made RAND phoenix location work (mostly).
    * Killed one of the state flag ints in the sc_weapon struct.
    * New plasma explosion-drawing code


   LAND and GRAPHICS:
    * New landscape:  Canyon

   This release is primarily a bugfix release for folks who were having
   crashes when running the game on recent Debian and FreeBSD releases.
   The bug corrected is that of pressing Enter while in Inventory or 
   certain other screens.

   In the meantime, enjoy the dirt bomb and riot charges :)



Changes in 0.1.0
-----------------

   LAND and GRAPHICS:
    * Merged Matti Hnninen's improved land generation code.
    * Finally fixed the land_level bug on right boundary.
    * Explosions wrap when wraparound walls are selected
    * Added support for dynamic screen size / other graphics
      options are implemented, and the graphics pipe has been 
      optimized yet again.  Land draws fast, now!


   CONFIGURATION:
    * Configuration files have been written; can save the game
      options (well, most of them) by clicking the "Save Options"
      button in the main menu.


   WEAPONS and DETONATIONS:
    * Funky Bombs really work now.
    * Added "Black Rain" under arms level four.
    * Complete separation of location from function of phoenix
      weapons.  This will make some really twisted weapons possible
      to create if you tweak sweapon.c right.  But the weapons
      struct is rather poorly documented / commented right now...
    * Improvements to weapon yield calculations used by AIs.
    * Adjustments to scaling of Leap Frogs.
    * Trace Paths is implemented.
    * Napalm is implemented.
    * Players can die in several ways.

      Napalm is implemented.  It isn't all that great yet, but it 
      is implemented.  Future improvements will bring along burnt 
      land, and animated flames... for the time being, the relevant 
      part -- the destructive power -- is there. :)


   AI CONTROLLER:
      The AI controller is implemented.  These options are global,
      they will affect all AI types.  These options will generally
      make the game quite miserable for the human players.

       - Human Target Practice:  AI's will always prefer human 
         targets to AI targets (except for AI's that fire at 
         random).  When playing against 9 Calculators, this can 
         make your day pretty lousy.

       - Allow Offset Targetting:  generally, when a weapon hits a
         shield it does less damage than an explosion detonating 
         right outside the shield (weapons hitting the shield do 
         not have a chance to detonate).  This changes the AI 
         targetting behaviour so they will deliberately aim outside 
         the shield, if their intended victim has raised shields.

       - No budget constraints:  AI's will spend as much money as 
         they can, disregarding their budget preferences.


   MISCELLANEOUS:
    * Fixed a serious timing problem in the game
    * Fuel has been implemented; press "F".  While in fuel menu,
      you can use buttons or the Left/Right arrow keys to move.
    * System menu implemented  (Ctrl-Y)
    * Explosions wrap when wraparound walls are selected
    * Added --yields command-line option
    * Options not implemented are marked "N/A"
    * Actual documentation exists, yay!

   At this point, the game is functional enough to go to 0.1.0.  The 0.1.0
   series will see addition of the missing weapons and accessories, and
   implementation of the remaining "N/A" options.

   Please note, that _two_ versions of the man page will be installed. One
   is a "standard" manpage, while the other is a text document which is used
   for the on-line game help.  You may remove the latter document, but the
   Help menu will no longer function.



Changes in 0.0.2
-----------------

   *  Justin: I broke smoke tracers. Hopefully they are fixed now.
   *   Jacob: Changed accessory lookup to model after weapon lookup.
              Created a weapon-specific yield calculation function.
              Increased velocity damping in Leap-Frog weapons.
              Made shield damage spill over when a shield fails.
              Made chain weapons get smaller not larger.
              Cleaned up and moved sc_phoenix_frog to sc_phoenix_chain.

   *  Justin: Major UI changes.  Console widgets are now implemented so we
         can have decent mouse support.  As time permits, these consoles
         will take on a style other than the current "block-character"
         format they are in.  The widgets will probably change in
         appearance, but the usage will remain the same.
   *  Justin: Overhaul of configuration dialogues

   *  Justin: Added --insanity command-line option.  

   Thanks to everyone who dropped us a note about the first release -- we
   appreciate the feedback!  

   There's not much new, in terms of gameplay.  This release is mainly a
   restructuring of the code, so most of the advanced weapons/accessories
   can be implemented.  Now that the code structure has more or less
   stabilized, this is a good opportunity for other interested developers 
   to join the bandwagon.

   In the next couple of releases, most of the weapons and accessories will
   be implemented (and maybe a few new items as well) -- for all of those
   whose favourite weapon is napalm, don't worry -- it is at the top of the
   list :)



Changes in 0.0.1
-----------------

   *  Justin and Jacob: Coded like crazy.  Here's the result...
