Detecting Lag Cheating

Blitz3D Forums/Blitz3D Programming/Detecting Lag Cheating

RifRaf(Posted 2009) [#1]
Using UDP , is there any useful/effective ways to determine someone on the network creating their own lag .. most common I think would be the modem standyby trick, but im sure there are others.

Im looking for methods both server and local to the player, I would think on the players machine I could just check the port somehow and if its closed they must have hit standby ?


Mahan(Posted 2009) [#2]
Implement a ping mechanism. (This may well be part of the protocol on top of UDP, so you don't necessarily need separate packages for the pings)

You can then on a "trusted" end-point (your server?) measure ping (round-trip) speeds. Ping speeds can be gathered and averages calculated over "time windows". Time-window-average-ping-times can be logged, stored or actively monitored for anomalies. If a certain suspect players pingtime systematically raise to 1000+ milliseconds in special challenging situations (and other factors like increased dataflow don't explain this increase) the server might issue a warning to a human operator so that he/she can observe the effects and results of the lag.

This is just rant but that is how I would start reasoning about a possible computer aided solution.

(btw. ports are not "closed" in that sence in UDP since you don't have an connection. The perceived "connection" is just that the client "punched a hole" through the router by sending an UDP packet first to the server. And even if you have a real connection like in TCP, much network equipment tries to be redundant and "hides" a disconnected/offline state for several seconds while trying to reestablish the connection, so afaik looking for closed ports in this context is no good)