quakeforge-old/doc/newnet.txt

122 lines
2.1 KiB
Plaintext

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