作弊保护阶段(Cheat Protection Stages)
另一篇关于作弊保护的文章,从 Unity 论坛复制以供将来参考。
[作弊保护] 是一个广泛的话题,有不同阶段的保护措施,你应该意识到。
服务器权限
在担心客户端反作弊之前,最好先使用服务器权限实现几乎所有游戏逻辑。 例如,如果玩家的生命值是客户端授权的,那么无论客户端反作弊措施多么严密,都无法防止黑客获得上帝模式。而如果使用服务器权限,你永远不会询问客户端当前的生命值。相反,服务器会告诉客户端其生命值,并做出所有与生命值相关的决定,并验证客户端所有与生命值相关的请求。例如,当请求使用药水时,始终确保玩家实际拥有该药水,没有死亡等。 这基本上使生命值无法被黑客破解,除非能够访问服务器机器。 然而,像移动这样的某些方面可能很难既响应又安全。 使用服务器权限实现所有游戏状态肯定是可能的。即使对于移动,你可能会立即移动客户端,将移动发送到服务器,验证移动是否合法,然后接受/拒绝它。
最小化客户端信息
尽管如此,客户端仍然可能通过简单地从内存中读取状态而获得优势,而无需操纵它。 例如,如果你的战术游戏意外地将所有敌人的位置保存在内存中,那么黑客可能会尝试提取它以获取优势。 在这种情况下,只向客户端发送相关信息会有所帮助。例如,许多网络库提供可定制的兴趣管理。你可以实现带有一定容忍度的射线投射,以检查玩家是否看到另一个玩家的单位。否则,根本不要将其发送给玩家(在这种情况下,无法从内存中提取)。
客户端反作弊
最后,即使您的游戏是服务器端授权的并且最大程度地减少了发送给客户端的信息,仍然可能存在作弊行为。例如,自动点击、农场机器人、瞄准机器人等。 这时候,您应该开始关注客户端反作弊。 但请记住,这是一场你不会赢得的捉迷藏游戏,只能延缓。 逆向工程师拥有复杂的工具来规避客户端反作弊,您很可能无法单独与他们竞争。 情况变得如此糟糕,以至于一些流行的游戏需要将他们的反作弊软件从用户空间移至内核,这样黑客就更难规避它。如果您的游戏足够受欢迎,最终也会被规避。 这是一个非常广泛的话题,有很多事情可以做,我没有提到的,比如混淆、虚拟化等。但正如前面提到的,最好从服务器授权和最小化发送给客户端的信息开始!:) 另外,我认为试图保护客户端作弊并不理想。 相反,您应该尝试悄悄地检测作弊行为,然后在随机时间后封禁作弊者。这样一来,作弊者就不会知道哪个具体的行为被检测到了。\
使用 Mirror 进行反作弊
请注意,Mirror 默认情况下是服务器端授权的。 兴趣管理(Interest Management)和同步模式(SyncMode)可用于最小化发送给客户端的信息。
最后更新于
这有帮助吗?