Page 1 of 1

Kill decision at server, Shoot detection at client

Posted: Tue Sep 27, 2005 5:28 pm
by Tupone
We recently was faced by a cheat client that started to send "end of shot" stopping all other player shot.

I came with an idea that could solve this issue.

* Client make its collision check, like is now, but instead of loosing his flag or being killed, it just send an "I was shot" message, with killer and shot id.
* Server, after having checked the message for arriving from an alive player, decide whetever a client has to be killed or just drop the flag.
* Server send the endShot message
* To avoid latency effect, an eventual second message from another player, relative to the same shot, will be discarded
* Any shot should have the id, and an incremental counter, so a late "I was shot" message will not stop a new shot with same id
* Any EndShot Message arriving from client should be discarded, unless is from a GM, and the source is the player owning it
* To avoid forged message, a further random id should be assigned to any user, and should not be published to anyone else. This key is used to validate messages.

Before starting a new code to solve it, I'd prefer to have a collaborative discussion on that.

TimRiker comments that this sounds basically sane. Could do these in order:

* convert server to generate the required EndShot messages when a player dies from a shot
* convert server to ignore EndShot msgs except for valid cases like a player ending his own GM

these need to wait for next protocol breakage:

* adding a magic # to avoid forged udp packets (server already checks source ip and port)
* changing client to not send EndShot messages

:\ }>