关于unity3d:Anti-Cheat / Glitch in game

Anti-Cheat / Glitch in game

目前,我正在与一个团队合作开发基于 Unity 的游戏。游戏仍处于开发阶段和 alpha 版本。

最近,我们发现该游戏存在作弊引擎、speedhack 等漏洞。更新后的更新,作弊现在稳定了。我们还介绍了 Unity 的 ACT 或反作弊工具包。由于游戏是基于 Unity 的,所以很容易在游戏中实现想法。

虽然"hacks"是稳定的,但"glitches"不是。

这是一个开放世界的生存游戏,它由拾取/丢弃物品组成。问题是当两个玩家一起拾取物品时(目前你必须在十字头在物品上方时按 E 才能拾取它)该物品会被复制。我们一直在努力修复它,但没有运气。

我们介绍了当附近有其他玩家时,玩家无法拾取物品。它看起来很奇怪,我们希望游戏流畅。我们还尝试了自动拾取物品。这是我们的计划,但我们还有什么想法可以做吗?


如果您担心玩家通过修改内存值作弊,以及保持同步的游戏状态以避免物品重复等问题,您应该考虑设置一个权威服务器来包含和更新"官方"值和游戏状态。

基本上,游戏不会直接在玩家的电脑上存储值和执行动作,而是会向服务器发送它想要做什么的请求,服务器会执行动作,更新官方游戏状态,并将新状态发回给玩家,以便他们的游戏得到更新。

这将阻止内存编辑,因为即使玩家修改了屏幕上的值(例如货币或健康),服务器也会包含真实值。

它还可以防止诸如 speedhacks 之类的漏洞,因为当按下按键时,本地游戏不会直接移动玩家,按键只会向服务器发送移动请求,服务器会更新玩家的位置,并将新位置发回。

最后,这将防止物品重复,因为当两个玩家都尝试拾取物品时,他们都会向服务器发送物品拾取请求。无论哪个玩家的请求先到达,都会收到物品,然后服务器会更新游戏状态,使物品不再在地上,第二个玩家的请求将被忽略,因为他们的物品重新尝试接机已不存在。

简单地说,防止作弊的最好方法是:不要在玩家的电脑上存储重要的值或执行重要的操作。