skeezix
Internal Development
hey guys,
This is a problem we all come across during games development (be it 3d or 2d, from quake to civilization to WoW to whatever.) I'm sur eits well documented around, but we all have a strategy for it. Whats yours?
ie:
Client is a player-client; server could be another player, or a central server, or whatevberl doesn't matter.
Not including 'action' payloads, such as 'open door' or 'disarm bomb' or whatever, just movement (ie: action payloads imply already verified locations, and I'm more worried about motion events.)
Most clients or servers (depending on the motion model) will project other players motion (straight line, even into a wall say), on the off chance they're "right" and thus better hadnle low pingtime players, etc. (A classic problem is players flying right through walls, so you have to be careful server side to not verify point by point, but along the whole line of motion..)
Does your..
i) Trusting; server trusts the clients, ie: debug mode, or 'didn't finish the netcode' mode In commercial games, this is not the case anymore, but was back in the Everquest days
ii) Client report in packet "I am at (map,x,y,z)" (possibly with "dmap, dx, dy, dz" for delta sake as well)? And the server then.. determines last timestamp and location, and current timestamp and reported location, determines shortest map between points (djikstra's or other algorithyms), and works out validity if you could have made the journey?
iii) Client reports delta map,x,y,z and server works out where you are .. this can be a problem for lost packets.
iv) Something else?
I tend to use (ii) but its a lot of work doing that level of verification, and of course all the clients are spamming away with 'I'm at (x,y,z)!" all the time, but network games are always heavily hammering the network..
Any well known strategies that are used?
jeff
This is a problem we all come across during games development (be it 3d or 2d, from quake to civilization to WoW to whatever.) I'm sur eits well documented around, but we all have a strategy for it. Whats yours?
ie:
Client is a player-client; server could be another player, or a central server, or whatevberl doesn't matter.
Not including 'action' payloads, such as 'open door' or 'disarm bomb' or whatever, just movement (ie: action payloads imply already verified locations, and I'm more worried about motion events.)
Most clients or servers (depending on the motion model) will project other players motion (straight line, even into a wall say), on the off chance they're "right" and thus better hadnle low pingtime players, etc. (A classic problem is players flying right through walls, so you have to be careful server side to not verify point by point, but along the whole line of motion..)
Does your..
i) Trusting; server trusts the clients, ie: debug mode, or 'didn't finish the netcode' mode In commercial games, this is not the case anymore, but was back in the Everquest days
ii) Client report in packet "I am at (map,x,y,z)" (possibly with "dmap, dx, dy, dz" for delta sake as well)? And the server then.. determines last timestamp and location, and current timestamp and reported location, determines shortest map between points (djikstra's or other algorithyms), and works out validity if you could have made the journey?
iii) Client reports delta map,x,y,z and server works out where you are .. this can be a problem for lost packets.
iv) Something else?
I tend to use (ii) but its a lot of work doing that level of verification, and of course all the clients are spamming away with 'I'm at (x,y,z)!" all the time, but network games are always heavily hammering the network..
Any well known strategies that are used?
jeff