我们编写了一个游戏,您可以在其中尽可能快地射击目标,并且有人编写了一个程序来自动射击目标(通过模拟鼠标移动/点击)。
我怎样才能检测到这个?本来想监控鼠标速度之类的,不过好像太容易绕过去了。如果有帮助,游戏可以在 Windows 上运行 / 是用 C++ 编写的。有没有办法只说运动不是来自硬件?
请参阅如何检测鼠标单击是合法的还是自动的?本质上它说它不能可靠地完成,原因有几个,其中一个是程序员会找到一种方法来绕过你尝试做的任何事情。
正如所建议的,启发式似乎是一个可行的选择。监控可变鼠标速度、未命中率和准确性、暂停、突然跳跃等。启发式方法越好,程序员就越需要让他的机器人更接近真正的玩家,他就越不成功。
PS:即使对于像反恐精英这样的知名射击游戏,也有一些黑客可以完美地为你拍摄一切,所以他们还没有想出如何/不想阻止它。