Server
    -   
    -    
        -   ()


    -  
        1.  
        2. SEND: 'M_CONNECT' ClientName, Version, FileVersion, etc
            RECEIVE: 'accept(+)' or 'decline'
                'accept'    : goto p.3.
                'decline'   :   
        3.   'accept'    -  
            *  
        4. SEND: 'M_LOADED'
            RECEIVE: 'M_START'
                * Spawn entities
                * 1st update
                * Syncronise time


typedef DWORD CRC32;

MSYS_CONFIG         // server 2 client - first packet ever, uncompressed
{
    u16             probability_table[256];
}

M_CONNECT           // client 2 server
{
    char    ClientName  [32];
    DWORD   Version;
    CRC32   vEXE;
    CRC32   vSystemLTX;
}

M_ACCEPT            // server 2 client
{
    char    Level       [32];
}

M_LOADED            // client 2 server
{

}

//------------------------------------------------------------------------------------------------
Unreal applies the following rules in determining the relevant set of actors for a player.

The actor belongs to the ZoneInfo class, then it is relevant.
If the actor has static=true or bNoDelete=true, then it is relevant.
If the actor is owned by the player (Owner==Player), then it is relevant.
If the actor is a Weapon and is owned by a visible actor, then it is relevant.
If the actor is hidden (bHidden=true) and it doesn't collide (bBlockPlayers=false) and it doesn't have an ambient ref_sound (AmbientSound==None) then the actor is not relevant.
If the actor is visible according to a line-of-sight check between the actor's Location and the player's Location, then it is relevant.
If the actor was visible less than 2 to 10 seconds ago (the exact number varies because of some performance optimizations), then it is relevant.
//------------------------------------------------------------------------------------------------
Actor Prioritization
//------------------------------------------------------------------------------------------------
