
		    PvPGN 1.7.x Major Changes And New Features
		  ==============================================

 o Westwood Online (WOL) support

    This is a historic moment in the life of the PvPGN project. For the first 
    time a different gaming network than Battle.net is supported with PvPGN. 
    Current support works with Tiberian Sun (TS), Red Alert 2 (RA2) and 
    Yuri's Revenge (YR).

 o WIN32 GUI for d2cs and d2dbs

    d2cs and d2bs now feature a new slick GUI if build under WIN32.

 o Instant startup (partial)

    PvPGN now can startup in a lot lesser time than before, this is due to 
    code changes which make it not load all accounts at startup. This 
    improvement should be mostly noticed on very high number of accounts 
    servers. Note that currently this happens only to SQL storage types 
    (the file based storage types still load all accounts at startup).

 o Optimized account loading/saving codes

    Account loading/saving codes have been rewritten allowing PvPGN to scale 
    a lot better with a high number of online users (ie lower CPU usage).

 o Better game result calculation

    Game result decision has been completly changed to use a democratic 
    ellection scheme (ie it bases the decision on the oppinions of the most 
    results). This should solve problems with game results beeing wrong under 
    some situations (like team games).

 o New WIN32 compiler/enviroment support

    Now you can compile PvPGN under WIN32 using complete GPL/free build tools 
    by using Dev-C++ project and additional tools (mingw, etc).

 o Optimized handling of D2 clients

    Replaced a O(n) search algorithm through the client connection list used 
    mostly by D2 handling functions with a O(1) algorithm.

 o Optimized timers codes

    Timers codes have been rewritten so the most used functions complete a 
    lot faster than before. This improves PvPGN CPU usage a lot because some 
    timers functions are used very often inside PvPGN.

 o Memory management changes and optimizations

    There has been added some memory management wrappers functions which 
    never fail and thus the calling codes were simplified a lot by removing 
    checks to memory allocation failures. If memory allocation fails PvPGN 
    tries to recover by programming an immediate shutdown and cleaning up 
    some safe memory.

 o Changed codes to use logged in username instead of account username

    This change makes PvPGN use the username introduced at login (with the 
    exact case as in login) instead of the account name. This solves some 
    bugs (like could not edit profile in D2 if logged in with different case) 
    and also gets us more close to Battle.Net.

 o Switched from string based tags to integer based tags

    Codes have been dramatically changed to use integers for storing of tags 
    (client tags, architecture tags, etc) and thus when comparing tags we use 
    plain integer comparation instead of string comparation. This should 
    reduce CPU usage a lot.

 o Optimized list handling codes

    The list API has been changed and the codes have been optimized so it 
    will remove elements from the list upon request and not later, thus 
    eliminating a O(n) search and thus making PvPGN a lot faster.

 o Unified and extended address translation system

    We have unified all address translation files and codes to use a single 
    address_translation.conf file for this job. Also the file syntax has 
    been completly changed to be more flexible and allow configuration of 
    almost any thinkable NAT setup.

 o IRC support reworked

    IRC client support has been bugfixed, optimized and made to work with a 
    lot more IRC clients.

 o Unified file based storage

    File based storage (plain and cdb) have been unified into a single storage 
    backend (called "file") and the mode (plain/cdb) is just a parameter.

 o Rewritten low level socket multiplexing codes (fdwatch2)

    The codes which deal with how PvPGN knows which sockets are available for 
    reading/writing have been rewritten with a new interface which does not 
    presume (like the old codes) that the underlying OS allocates socket 
    values "close" (ex. WIN32 systems do not while most Unix based systems do 
    so). The new codes eliminates this presumtion and thus allows WIN32 hosts 
    to support a large number of connections as PvPGN supported Unix based 
    platforms.

 o Added more storage types: SQLite3 and ODBC

    With 1.7.x PvPGN now supports besides the MySQL/PostgreSQL SQL backends 
    also SQLite3 (www.sqlite.org) and ... ODBC SQL engine !! This means that 
    theoretically now you should be able to use PvPGN with almost any SQL 
    engine as long as an ODBC driver exists for it.
 
