4

我正在用 javascript 创建一个塔防游戏,并希望获得高分和其他多人互动。可能有几个玩家同时开始游戏,并告诉他们其他人的速度有多快等等。

我不知道 Flash 游戏如何发送他们的分数或事件以确保每个客户发送的信息实际上是正确的,而不仅仅是发送令人难以置信的分数的人。我记得几年前,当 Flash 游戏开始获得高分时,看到不真实(被黑)的分数很常见,而且……这很奇怪。那么这里的秘密是什么?

4

4 回答 4

2

人们总是能够在游戏中作弊......你能做的最好的就是让作弊变得困难。旧 Flash 游戏的分数很容易被操纵,因为分数将通过 HTTP 请求提交。嗅探流量将显示提交 URL 以及需要传递哪些变量才能更新分数。我希望它已经改变了。

如果我是你,我会使用一些错误检查代码,这些代码将与最终分数一起传递,以验证分数是否合法。错误检查代码算法应该很难从分数中确定(如果有人在嗅它)。javascript也应该被任意混淆。这远非理想,但应该可以阻止大部分作弊者。

于 2009-06-12T06:38:39.747 回答
2

我看到的最佳实践是进行完整性检查。

记录经过的时间,杀死的敌人等...用数据检查分数,看看它们是否相加。

于 2009-06-12T06:50:06.427 回答
0

它主要是虽然这些天默默无闻。您通常会为每个游戏分配一个唯一的令牌,并形成某种分数和令牌的散列,并在提交时验证它(或在整个游戏过程中持续提交、验证和令牌切换)。

你会很难通过 javascript 来做。

于 2009-06-12T06:45:03.927 回答
0

使用以下工具的组合,这些工具通常用于防止虚假分数和进度报告。

  1. Obscurity - 压缩和混淆计算分数字符串的逻辑。分发它并使其难以进行逆向工程。
  2. 随机更改密钥 - 当您的游戏开始时,让 javascript 请求一个密钥,该密钥可用于加密包含高分等的字符串。服务器还应该具有允许您解密消息的私钥。
  3. 健全性检查 - 虽然用户可能会更改分数,但让您的请求还包含已知范围的杀戮数量等。服务器将检查哈希并确保数据有效。
  4. 考虑使用彗星服务器 - 因为您将向两个客户端提供实时数据,所以最好使用像 Orbited 或 Jetty 这样的彗星服务器。这将启用流式传输而不会使您的服务器崩溃。
  5. 让它令人沮丧。'纳夫说。
于 2009-06-12T07:00:31.817 回答