Software Change Log

1.05 → 1.06 changes
             Changelog for the ZDaemon 1.05 -> 1.06 transition
             =================================================

1. Point 01 release (Oct. 21, 2003)
-----------------------------------
1.  Fixed an audio problem where sounds would not play in the client
    when it was in the background; this bug was introduced in 1.05
    by the usage of a newer version of fmod.


2. Point 02 release (Oct. 31, 2003)
-----------------------------------
1.  Fixed the server fraglog; it would not properly record the names
    of the killed/killers. When invoked in coop mode, it displays an
    appropriate error message.
2.  Got rid of the older connection log code accessible through the
    "connectionlog" console command; it was replaced by the newer version
    which is also available through the -clog cmd. line parameter.
3.  Static linking of mfc42.dll and msvcrt.dll in zserv; this removes
    the last dependency on the MFC DLL for any program in the zdaemon
    package. There is still a dependency on msvcrt.dll in the client,
    but we cannot remove it since msvcrt.dll is used by fmod. However,
    the dependence on msvcrt.dll is not as bad as on mfc42.dll, since
    msvcrt.dll is a part of recent versions of windows.
4.  Added the "-flog xxx" cmd. line parameter. It is equivalent to
    "+fraglog" but enables you to specify the log filename.
5.  Added the "-log xxx" cmd. line parameter. It is equivalent to
    "+logfile xxx". This addition is made just for uniformity purposes.
6.  Disabled the loading of deh and bex patches on the server.
7.  Implemented automatic log rotation for all 3 zserv logs.
8.  Extended the information sent by the server to the launcher to
    display the exact build version and date.


3. Point 03 release (Nov. 04, 2003)
-----------------------------------
1.  Extended the information sent by the server to the launcher to
    also display the operating system and its version.
2.  Disabled the loading of deh and bex patches on the client when
    connecting to a server.
3.  Fixed a client crash when viewing a recorded demo file that was not
    properly terminated (eg., if we simply exited the program during
    recording instead of using the "stoprecord" command).
4.  Enabled 1st or 3rd person view when spying or viewing demos. The
    switching is done via the "H" key (or whatever you have bound to
    the "chase" command). The 1st person view exposes some previously
    hidden bugs in the spying/demo code; we'll take care of them in
    future releases.
5.  Corrected a few checks for the sizes of various msgs. on the server.
6.  Fixed the problem of playing demos recorded with zdaemon 1.0 up to
    1.04; it was due to a change in the 1.05 protocol. Since there is
    no version identifier inside the demo files, the program *requires*
    a proper naming convention: the demo files should end with a
    double extension of ".NNN.zdo" where NNN is a 3-digit number
    identifying the zdaemon version on which it was recorded. Valid
    values for NNN are 100, 101, 102, 103, 104 and 105 (so far).
    If the demo file does not obey this convention, then it will
    be assumed that it is the same version as the zdaemon executable
    used to play the demo (which is a BAD idea: it should be avoided).
    The correct double extension will always be appended to the 
    specified filename when recording new demos.
7.  Updated the launcher to display the version and OS info in the server
    info dialog.
8.  Updated the launcher to enable the copying of the server address
    to the clipboard in the server info dialog.


4. Point 04 release (Dec. 09, 2003)
-----------------------------------
1.  The rampage and dominating messages were interchanged in local play.
2.  Started the implementation of audio announcements in local play.
3.  Combined the name and ip address in a single line in connection msgs
    in the connection log.
4.  Fixed a problem with the displaying of names in the zserv32 window.
5.  Fixed a problem with the closing of the dmflags window in zserv32.
6.  Disabled the "Send" button in the zserv32 window when the edit box
    is empty.
7.  Updated the launcher to accept 4-byte values for the custom avatar IDs.
8.  Fixed a bug in the display of the experience "progress bar" in the
    Player Info dialog of the launcher. The progress bar would be
    incorrect when the player's experience was at 65,500 and above.
9.  Improved the scrolling credits display in zlauncher. It now works
    properly if you switch to another window and then back to the launcher.
    Also the text quality and scrolling speed have been improved.
10. Removed the "Master Refresh" command in the launcher; this operation is
    now done with the "Refresh All" command.
11. Fixed a signed/unsigned bug in the launcher when a server listens to a
    port higher than 32767.
12. Added a "-noinput" cmd. line parameter to the Unix version of zserv
    which stops the program from polling stdin. This reduces the CPU load
    significantly when the server is run in the background. On my server
    it also decreased the ping values significantly (ie., around 40%).
13. Updated getwad to fetch the search list from the web; also made
    several other minor search improvements to it.
14. Enabled the search of IWADs (in the launcher) through getwad.
15. Added the %DATE%, %TIME% and %WAD% special sequences in the extra
    parameter string passed to zdaemon from the launcher. These sequences
    expand to the current date (YYYYMMDD), time (HHMMSS) and wad
    (WAD1_WAD2_WAD3...) respectively. The %WAD% expansion consists of
    all non-optional PWADs: no IWAD or optional PWADs are included.
16. Added a "Hide Unreachable Servers" option to the launcher to remove
    non-responding servers from server list.
17. Modified the launcher so that it uses the ini file and zdaemon.exe
    from its own directory instead of the current directory.
18. Added a "Record Demo" to the "Server" menu and the context submenu
    of the launcher. It prompts you for a demo filename and then launches
    a game with the "-netrecord" option.
19. Fixed a launcher toolbar problem; it sometimes switched to "text label
    mode" on video mode changes and some other events.


5. Point 05 release (Jan. 29, 2004)
-----------------------------------
1.  Added a "chatlog" console command to the client; it activates/
    deactivates the logging of all chat, team chat and admin chat
    messages to the "zdchat.log" file. There is also a corresponding
    "-chatlog xxx" cmd. line parameter that lets you specify the log
    filename (the filename parameter is mandatory).
2.  Replaced almost all "zdoom" instances by "zdaemon" in the client;
    the only places where I left the "zdoom" name is the ini file and
    some unix directories (for backwards compatibility purposes).
3.  Added the "weaponlog" console command; it produces a frag/weapon log
    similar to the fraglog, but it also contains info about the weapon
    used for the frag.
4.  Added the "-wlog xxx" cmd. line parameter. It is equivalent to
    "+weaponlog" but enables you to specify the log filename.
5.  Fixed a display problem on the Win32 listview control (again).
6.  Improved the joining of teams by bots so that team membership is more
    balanced.
7.  Fixed a problem where when you added a single bot, it wouldn't move;
    this happened only in a C/S setting: not in a stand-alone game.
8.  Reorganized the Options menu in the client with a separate Mouse
    Options page which contains many more options (multiple sensitivities,
    mouse smoothing, etc.); this part is adapted from ZDoom 2.0
9.  Replaced the text edit control in zserv32 by an rtf control to
    overcome the 32K limit. Also cleaned up a bit the console writing
    code.
10. Added a mechanism to automatically submit the server connection
    and weapon logs to a master stats server. The submission is enabled
    by keeping those logs (with the -clog and -wlog command line options)
    and setting 6 variables in the zserv.cfg file. The variables are:
        sub_conn_flg:  1 enables the submission of the connection log;
                       0 disables it.
        sub_weap_flg:  1 enables the submission of the weapon log;
                       0 disables it.
        sub_user_id:   The user id required for the submission; it
                       must have been assigned by the ZDaemon stats
                       admin.
        sub_pwd:       The password required for the submission; it
                       must have been assigned by the ZDaemon stats
                       admin.
        sub_svr_id:    The server identifier required for the submission;
                       it must have been assigned by the ZDaemon stats
                       admin.
        sub_url:       The submission URL; also assigned by the ZDaemon
                       stats admin.
11. Added a new "-cfg" cmd. line parameter to the server that lets you
    specify the server configuration file; if you don't use it, it
    defaults to "zserv.cfg".
12. Fixed a small toolbar problem in the launcher: a small part near the
    left border was transparent.
13. Added autorefresh and auto-relogin options to the launcher. If
    activated, they occur every 10 minutes.
14. Enforced the current sorting order after you refresh all servers (or
    they autorefresh) in the launcher.
15. Fixed a small repainting problem in the credits dialog of the launcher
16. Marked the launcher sorting column with a slightly different background
    color.
17. Added persistence to the sorting method of the launcher.
18. Added a demo directory setting in the launcher; the recorded demo files
    will be stored there by default.
19. Added a "play demo" command to the launcher. It prompts for the demo
    filename and wad names and runs ZDaemon.
20. Added a mechanism to fetch a global ban list from the zdaemon servers.
    This ban list is merged with the local ban list at runtime. The global
    ban list is fetched upon startup and every midnight (local time). The
    activation of the mechanism is controlled by the "use_master_ban_list"
    variable in zserv.cfg
21. Fixed a race condition in the closing of the launcher's login dialog.
22. Tightened up a bit the network code of the server.


6. Point 06 release (Feb. 29, 2004)
-----------------------------------
1.  Added a new server->client msg. to indicate desired gravity and air
    control. WARNING: THIS BREAKS OLDER CLIENTS.
2.  Set the default team chat color to brick.
3.  Implemented a new "sayto" client command that sends a chat msg. to a
    specific player. This command cannot be used by spectators to avoid
    cheating possibilities. The same applies to private msgs. to members
    of opposing teams in team mode. WARNING: THIS BREAKS OLDER CLIENTS.
4.  Cleaned up a bit the server code (trimmed around 3000 lines).
5.  Merged Duke's CTF code with the normal version
    WARNING: THIS BREAKS OLDER CLIENTS.


7. Point 07 release (Mar. 16, 2004)
-----------------------------------
1.  Simplified the various log control commands and cmd. line options:
    none of them takes a filename argument; all log filenames are now
    predetermined according to the following patterns:
        frag logs:        "frag-YYYYMMDD.log"
        weapon logs:      "weap-YYYYMMDD.log"
        connection logs:  "conn-YYYYMMDD.log"
        general logs:     "gen-YYYYMMDD.log"
    where YYYY is the current year, MM is the month and DD the day of
    the month.
2.  Simplified the log submission mechanism; nothing is really needed
    from the admin side (neither a cvar, not any command line option):
    if the "master_advertise" flag is on, then zserv also turns on the
    generation of weapon and connection logs.
3.  Added a new cvar in zserv.cfg; it's called "log_disposition" and
    determines what will happen to logs after the daily rotation. It
    can assume one of the following values:
        0:  the logs are left in the zserv directory.
        1:  the logs are moved to an "old-logs" subdirectory under the
            zserv directory.
        2:  the logs are deleted.
    If this cvar is missing or contains an invalid value, the default value
    of 2 (deletion) will be used.
4.  Removed the "use_master_ban_list" cvar. If the "master_advertise" flag
    is non-zero, then the master ban list will be fetched and used;
    otherwise, it will not.
5.  Added a small degree of randomness in the log rotation time, in order
    to avoid all zservs within a given timezone contacting the master stats
    server at the same time. The log submission will occur sometime between
    10 and 119 seconds after midnight.
6.  Added a new cvar in zserv.cfg to enable CTF mode. The variable is
    called "ctf" and can take a 0 or 1 value.


8. Release Candidate 1 (Mar. 19, 2004)
--------------------------------------
 1. Taken out CTF intermission screen and music
 2. Got rid of zdctf.wad
 3. Made new zdaemon.wad
 4. Made new zvox2.wad
 5. Fixed problem with Dcanvas::DrawSWrapper: Bad patch (CTF)
 6. Added new CTF flag state images.
 7. Added the wicked sick msg.
 8. Wait 10 seconds after dropping the flag to return it.
 9. Provide for Assist Audio Msg. (to be used in the future)
10. Changed the CTF event mechanism so that the Taken/Dropped/
    Returned/Score Events generate special text and audio
    messages on the client.
11. When ctf!=0, force fraglimit to zero so that the game cannot be
    ended by fragging others. This also avoids the "N frags left"
    audio msgs.
12. Keep track of the lead in server and send audio msgs in CTF mode.
13. Restored individual frags to their original meaning. We'll come
    up with a good point system for 1.07


9. Release Candidate 2 (Mar. 20, 2004)
--------------------------------------
 1. Added the timelimit and timeleft values to the sv_gametype msg.
 2. Cleaned up the CTF flag state msgs. to avoid client crashes.


10. Release Candidate 3 (Mar. 24, 2004)
---------------------------------------
 1. Fixed the CTF scores screen (made it a bit like team dm)
 2. Added a new "time left" server->client message to inform
    clients about time remaining on the level. This info is 
    used by the clients to display a count-down timer on the
    scores screen. The time-left message is trasmitted once
    per minute to avoid clock drift.
 3. Fixed a ctf message related problem where clients would
    crash after receiving a ctf-related message; it would
    usually happen at the beginning/end of a map or when
    a player switched teams.
 4. Reduced the ctf-related net traffic by letting the client
    keep track of the flag state visuals (ie., dropped/in base
    flag).
 5. Added a visual indicator on the HUD when the player is a
    ctf flag carrier.
 6. Adjusted the position of the ctf flag to be directly behind
    the carrier and at the same z-position.
 7. Reduced further the ctf-related net traffic by letting clients
    position the carried flags behind their carriers.


11. Release Candidate 4 (Mar. 26, 2004)
---------------------------------------
 1. Improved the tracking of the ctf carried flag with respect to
    its carrier.
 2. Fixed a gravity problem with the ctf carried flags.
 3. Reduced the cpu utilization in ctf mode in both server and
    client.
 4. Changed the screenshot generation algorithm to make it work
    better (and faster) even when you have already taken many
    screenshots.


12. Release Candidate 5 (Mar. 27, 2004)
---------------------------------------
 1. Fixed the case where the CTF flags were sometimes floating.
 2. Fixed the color-changing script nuisance with a suggestion  
    by Blunt; the "wait" command has been removed.
 3. Fixed a CTF bug where the flags sometimes looked like keycards.
 4. Yet one more attempt to fix the player display on the win32
    server console.


13. 1.06 Release (Mar. 29, 2004)
---------------------------------------
 1. Fixed the "chainsaw turbo" bug.
 2. Adapted the "impressive", "humiliation" and "holy shit"
    thresholds for CTF (min. difference of 3, 6 and 9
    respectively instead of 5, 10 and 15 in DM and Team DM).
 3. Added some server checks to prevent speed hacking. Since
    they have not been tested as much as the other code, they
    can be disabled by setting the "speed_check" variable to
    zero inside zserv.cfg.