1

我目前正在制作一个随机制作关卡的游戏,但我有兴趣让每个人在每日挑战部分都玩相同的关卡,比如 Spelunky。

起初我考虑让客户根据他们的日期来决定种子,但日期可能会被本地欺骗。

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

然后我想在服务器上加密日期并在客户端解密它,但是如果我使用对称加密,这可能会出现问题。所以......也许使用非对称加密?

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

PS:我正在使用unity3d,以防万一。

4

2 回答 2

0

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

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

假设在客户端处理的数据总是可以被黑客入侵,为了更好的游戏性能,最好在服务器端验证东西并简化客户端的数据加密/解密过程。

于 2014-07-18T16:56:15.970 回答
0

Instead of basing the daily challenge by date:

  • Use a mysql database to send info to the client which contains the challenge
  • Process the challenge client side
  • Calculate server side date and time
  • Send data from the client to the server (containing score and challenge)
  • Check if the challenge is still on using the server side date and time
  • Submit score if the challenge is still running

One possible problem using this method is that there may be high bandwidth usage because of the extra data being downloaded.

于 2014-07-18T07:42:05.390 回答