Original Post
Hi Im working on a game that will hopefully have support for around 10 - 12 players, it will need to be fast paced, and will mostly be aimed at lan, and high speed internet only, atleast thats what Im currently aiming for. The program supports being run as client OR server, currently no plans for a dedicated server, unless I run outa options. Im pretty new to networking, Im trying to design the overview that will work well for a fast paced game, just getting the basics down really. input reaction and client synchonization are both pretty important in this scenario, but ofcourse its a balancing act between those two. Im using a combo of reliable/unreliable UDP. This is what Im thinking -Client receives input from user and interpolates based on input, up to a point. -Other clients interpolate based on previous packets, up to a point. -As you can see clients will be out of synch here. -Clients send their inputs to the server -The server sends all relevant state changes based on input, to relevant clients. -The clients all receive state changes and exterpolate where applicable. -State changes that are important (eg health changes) will be sent reliably and seperately to positions/rotations which will always be sent unreliably. -Additionally the server will be able to "prioritize" update frequency between players based on distance to client. players closer to the client, will be updated more frequently on that client, at a specific radius, updates will no longer happen and players will not be seen at all. There will be 4 levels of network update frequency. High, Medium, Low, None. When there are more than x amount of players in the high radius, The closest will receive high, the others medium. There will be a capped amount of players that can use high and medium updates for each client. I have noticed, that even at low interval updates, clients can jitter waiting for updates. In the above scenario, will interpolation based on current input be able to hide most of that? Suggestions? Constructive criticism? Things to watch out for? Better ways of doing things?