ref: b64d816a6b39760ca8df9434d7277bf8babe55b3
dir: /qw/docs/newnet.txt/
registered clients will auto-kick unregistered clients
central clearingghouse for active servers
server logon messages
problem with reconnect to same server out of order packets
acknowledge all command line parameters
annoying pause on intermission screen
seperate accept/reject list for server packets and client packets
server compile time should be part of connect message and status
allocate new cvars during file parse
remote console should be able to do cvar setting/reading
make punchangle a client side operation
remove sys_printf
remove host_client
packet filter list
client move by test final pos and test 1/16 down
simulate world first, then clients, clients explicitly sim weapon projectiles
allow remote locations to subscribe to console output
client zombie state?
seperate command ques for client and server?
worry about partial connection during level change
worry about zombie state for if(!state) constructs
make sound/ and models/ implicit in data types
int		sequence
int		reliable_sequence;
bit		reliable_payload;
consumption
renewable resources
depletable resources
rate of extraction
how can you influence other characters
how can you communicate
login
logoff
disconnection
client to server
----------------
last good received server time
milliseconds since last move frame
angles
movement
buttonstates
impulse
server to client
----------------
last movemessage received
origin
velocity
build movement
send movement packet to server
set player position to last known good
execute all unaknowledged movement packets
needs to know all things that can effect movement
movement context
----------------
origin
velocity
size
run move command (context, move)
#define	MAX_MOVEMESSAGES	64
typedef struct
{
	double	time;		// client time when sent
	byte	milliseconds;
} movemessage_t;
int		ack_movemessage;
int		current_movemessage;
movemessage_t	movemessages[MAX_MOVEMESSAGES];
void CL_Frame (void)
{
	get all pending server messages
	
	latency = cl.time - movemessage[last].time;
	movetime = cl.time - cl.oldtime;
	get movemessage
	
	send packet to server
}
does not adress interpolating other object's movement