你看过什么样的新手错误以及治疗方法是什么?
一次又一次发生的是客户端没有以任何方式对服务器进行检查。
例如:
简单的治疗方法当然只是将游戏客户端作为服务器的API来处理。然后用户可以尽可能多地使用训练器和其他内存操作,但服务器只是说你不能这样做。将服务器视为一个数据库,您可以在其中使用游戏规则查询事物。
例如
另一种方法是记录客户端的移动并将其发送到服务器播放它的高分服务器。当然,这可能导致该记录非常大。
答案 0 :(得分:6)
当然,这并不一定会阻止某人编写机器人来发送这些按键,因此还有其他方法可以防止这种情况发生。尽管如此,根本没有任何验证是一个新手的错误(当然,当我选择快捷方式时,我确实感到内疚)
答案 1 :(得分:6)
Valve采取的方法(至少在某一点上)是让客户和服务器独立模拟游戏。然后,服务器执行权威模拟,并向所有客户端发送状态更新,以纠正错误/黑客攻击。
E.g。如果按左箭头,你的角色会立即向左移动;没有等待服务器说'OK'。但如果事实证明你已经通过墙壁自我攻击,那么下一次服务器更新将使您出现在墙旁边,因为服务器认为它是稳固的。
同样,如果客户端看到一个字符向前移动,它将假定它将继续向前移动,直到服务器返回权威响应。
当服务器做出主要决策(并在模拟过程中执行健全性检查)时,这种方法会破坏黑客攻击,并且在客户端做出预测之前处理延迟,直到他们从服务器获取消息为止。
与“信任客户”相关的另一个重大错误是认为您的网络协议不能伪造。人们倾向于假设如果他们将二进制块发送到服务器,那么这些二进制块将永远不会被逆向工程,并且没有人会试图弄乱数据以查看发生了什么。这导致了各种各样的问题。
答案 2 :(得分:1)