shithub: qk1

ref: 779ab09145bc25536e93051873d59b3fce8fc761
dir: /qw/docs/newnet.txt/

View raw version
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