目前,我正在与一个团队合作开发一个基于Unity的游戏。这款游戏仍在开发和alpha版本中。
最近,我们看到游戏容易受到作弊引擎,speedhack等的攻击。更新后,作弊行为现在是稳定的。我们还介绍了Unity的ACT或反作弊工具包。由于游戏是基于Unity的,因此很容易在游戏中实现想法。
虽然“hack”是稳定的,但"glitches“不是。
这是一个开放的世界生存游戏,它包括挑选/丢弃物品。问题是,当两个玩家一起挑选物品时(目前你必须在十字头在物品上方时按E键才能拿起它),物品会被复制。我们已经工作了几天来修复它,但没有运气。
我们介绍了当附近有其他玩家时,一个玩家不能拿起物品。它看起来很奇怪,我们希望游戏顺利进行。我们还尝试了自动提货。这就是我们的计划,但是我们还能做些什么呢?
发布于 2016-08-28 07:01:02
如果您担心玩家通过修改内存值作弊,以及维护同步的游戏状态以避免项目重复等问题,您应该考虑设置一个权威服务器,该服务器将包含和更新游戏的“官方”值和状态。
基本上,游戏不是直接在玩家的计算机上存储值和执行操作,而是将请求发送到服务器,服务器将执行操作,更新官方游戏状态,并将新状态发送回玩家,以便更新他们的游戏。
这将阻止内存编辑,因为即使玩家修改了屏幕上的值(例如货币或健康),服务器也会包含真实值。
它还可以防止像speedhacks这样的漏洞,因为当一个键被按下时,不是让本地游戏直接移动玩家,而是按键只会向服务器发送一个移动请求,服务器将更新玩家的位置,并发送回新的位置。
最后,这将防止物品重复,因为当两个玩家都试图拾取物品时,他们都会向服务器发送一个物品拾取请求。无论哪个玩家的请求最先到达,都将收到该物品,然后服务器将更新游戏状态,使该物品不再在地面上,并且第二个玩家的请求将被忽略,因为他们试图拾取的物品不再存在。
简单地说,防止作弊的最好方法是:不要在玩家的计算机上存储重要的值或执行重要的操作。
https://stackoverflow.com/questions/39182215
复制相似问题