如何在随机生成的关卡游戏中进行日常挑战?

时间:2014-07-18 06:27:57

标签: encryption unity3d parse-platform anti-cheat

我目前正在制作一个随机制作的游戏,但我有兴趣让每个人在每日挑战部分中扮演相同级别,比如Spelunky。

起初我想过让客户根据他们的日期决定种子,但是日期可以在当地被欺骗。

我可以访问parse.com免费帐户,因此我可以在云中执行代码并期望返回结果。所以我考虑根据当前日期向云代码询问哈希值,但是这可能是欺骗性的,以便在向服务器发送THAT级别的分数而不是每日级别时发挥不同的级别。

然后我想到加密服务器中的日期并在客户端上解密它,但如果我使用对称加密,那么这可能会有问题。所以...也许使用不对称加密?

我在这里错过了一个更简单的解决方案吗?这感觉就像我过度复杂,但我不确定。对于这类问题,是否有普遍接受的解决方案?谷歌搜索了一段时间后,我找不到任何东西。

P.S。:我使用unity3d,以防它相关。

2 个答案:

答案 0 :(得分:0)

而不是按日期为基础进行日常挑战:

  • 使用mysql数据库将信息发送到包含挑战的客户端
  • 处理挑战客户端
  • 计算服务器端日期和时间
  • 从客户端向服务器发送数据(包含得分和挑战)
  • 使用服务器端日期和时间检查质询是否仍然存在
  • 如果挑战仍在运行,则提交分数

使用此方法的一个可能问题是,由于下载了额外的数据,可能会有高带宽使用。

答案 1 :(得分:0)

不是使用不同的加密方法保护数据,而是在玩家完成挑战后验证发送的请求可能更容易。

  • 玩家发送开始新挑战的请求
  • 服务器检查此播放器今天是否已完成挑战,如果是有效请求则继续
  • 挑战相关数据在服务器上随机生成
  • 上述数据保存在服务器上
  • 将生成的数据发送到客户端
  • 在一段时间后,玩家向服务器发送请求,声称他或她已完成挑战
  • 对收到的数据进行验证,例如将挑战ID与先前保存的ID进行比较,或检查挑战是否仍然可用等。
  • 如果请求有效则更新玩家帐户,否则忽略它

假设在客户端处理的数据总是被黑客攻击,最好在服务器端验证内容并简化客户端的数据加密/解密过程,以便更好地执行游戏。< / p>