【问题标题】:Can this online highscore scheme be abused?这个在线高分计划可以被滥用吗?
【发布时间】:2011-11-21 16:36:41
【问题描述】:

背景

使用在线高分列表的游戏的一个问题是它们经常被滥用。游戏将当前分数发送到服务器,狡猾的用户可以分析协议/方案并发送虚假分数。这就是为什么一些高分榜以 999999 分高居榜首的原因。

此问题的常见解决方案是以某种方式加密分数,并在此基础上放置other mechanisms to recognize false scores。但即使你这样做了,发送分数的还是客户端,并且客户端存在于用户的计算机中并且可以进行逆向工程。

我的想法

我正在设计/考虑一个游戏(我会完成的,是的,对 :)),您可以在其中配置您的播放器/机器人,并提供有关如何执行任务的说明(以及何时这些说明是要进行)。当按下“开始”按钮时,游戏会运行指令。最后得到一个结果,如果成功,则获得一个分数。

那么,怎么样:不是提交分数,而是将实际指令发送到服务器,在服务器上运行它们,使用相同的实现。然后服务器计算分数并将用户放在高分列表中。

问题

有没有办法滥用这个想法来获得假分数?

我知道这可能不是一个新想法。但如果它有效,它也不是不可能扩展到其他游戏,在那里可以记录所有用户操作。

【问题讨论】:

  • 想法:1)您将不得不发送 很多 更多数据,这会给服务器带来更大的压力,并且 2)它“更好”,因为它更难打破,但如果有人真的很投入,他们仍然可以做到。
  • 请务必在说明中添加某种限制,以免您的用户受到 DDoS 攻击。例如,编写一个无限循环很容易成为问题。添加一个简单的限制,例如要执行的最大步骤数,可能会有所帮助。
  • 是的,压力/DDoS方面是我没有考虑到的一个维度......
  • @quasiverse 你能扩展你对第 2 点的推理吗?
  • @PeterJaric 您正在发送游戏中的事件,而不仅仅是一个分数,因此试图打破它的人必须弄清楚所有这些事件是什么以及如何操纵它们,这比发送一个更难假分数(除非你的游戏真的简单或你的分数真的复杂)。

标签: anti-cheat


【解决方案1】:

人们总会找到作弊的方法,但这似乎是一种合理的对策。您必须考虑您的预期流量水平,因为与仅记录客户端发送的高分相比,您的方案需要更多资源。

但是,顺便说一句 - 这个游戏听起来很像我的工作(向机器发出指令以便它执行某些任务)。虽然没有高分板(尽管那会很棒)。

【讨论】:

  • +1 用于工作比较。也许我真的在写这个? :)
【解决方案2】:

只要机器人程序的行为不依赖于计算机的速度就可以了,如果程序非常小,最多只有几千字节,就可以正常工作;我能看到的唯一作弊方法是克隆工作空间并运行程序以找到机器人的最佳程序,然后将其放入并提交,或者如果有人发布了解决方案,人们使用了它,但两者都这些问题可以通过随机化来解决。

(关于速度依赖游戏问题的一个说明,如果电脑不能全速运行,游戏均匀减速是可以的,但如果物理时间步长取决于帧率,你会遇到问题比如跳跃高度随帧率变化)

【讨论】:

  • 由于担心帧率依赖问题,我也在考虑预先计算游戏中产生的事件序列。只是要确定。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 2011-04-07
  • 2019-10-19
  • 2012-06-13
  • 2010-09-24
  • 1970-01-01
相关资源
最近更新 更多