首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity3D速度黑客检测

Unity3D速度黑客检测
EN

Stack Overflow用户
提问于 2018-07-24 10:41:35
回答 4查看 3.5K关注 0票数 2

我想知道,在我们的游戏中是否有任何方法来检测像游戏卫士这样的速度黑客应用?

我在网上到处搜索,但没有得到令人满意的答案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-03-27 10:11:55

我为我自己的项目找到了解决方案,即在线多人游戏,它适用于任何在线游戏。

为了解决这个问题,我们需要计算在服务器上的时间。例如,我们可以使用stopwatch并在客户端执行此操作..。在特定的情况下,我们可以通过网络对它们进行比较,如果它们之间有任何区别(比如超过3秒),那么就可以清楚地看到玩家使用的是速度攻击。

我在我的游戏中尝试过这个方法,而且效果很好。

票数 0
EN

Stack Overflow用户

发布于 2018-07-24 13:48:58

解决方案不是更多的软件在顶部。解决方案从一开始就不容易受到影响。

示例:

如果允许用户在世界地图上发送自己的服务器坐标(“我是蓝色播放器,因为我移动了我的全部零花钱,我现在是156/467"),对于某个人来说,写一个远程端口欺骗是微不足道的。只需发送不同的坐标,就可以传送。孩子们玩。

如果您只允许用户向您的服务器发送意向消息(“我是蓝色玩家,我打算向156/467的方向移动我的全部津贴”),并让您的服务器弄清楚这意味着什么(玩家允许移动,他的津贴是多少,蓝色玩家在一个单位的时间内能得到多大程度)并将结果发回,那么您就不会有这个问题。

不要信任客户端输入。游戏安全的第一条规则:,客户端在敌人手中。

如果你一直信任你的客户,那么把越来越多的软件推到客户端上是没有什么意义的。只需停止和设计你的游戏,这样客户端可以发送意图和服务器决定结果。

票数 5
EN

Stack Overflow用户

发布于 2018-07-24 13:44:39

这取决于你的游戏,但你可以尝试检测速度黑客,只需检查球员的位置每一帧。

  1. 确定每秒最大可能的移动距离/,并将其放置在常量中,这样玩家就不能在运行时更改它。
  2. 缓存当前位置。
  3. 在下一次更新时,检查玩家所走过的距离,并将其乘以Time.deltaTime
  4. 如果玩家的行程超过了允许的最大值,那么玩家一定是作弊了。
  5. 返回第二步

它将是框架独立检查,因为您将使用最大允许的距离每秒

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51496582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档