手游服务端如何验证客户端的传回的战斗结果(战报)?

如果把战斗都放到客户端,战斗结束后服务端如何验证客户端返回的战斗结果?如刀塔传奇,求详解,thx:)

阅读 6k
2 个回答

在客户端发生的计算和回报结果都有可能被更改,真想不能被更改可能得到量子计算机时代。

所以像刀塔传奇之类的游戏,都是服务器计算,然后本地只是做前面的显示而已。

当然如果计算不涉及到伪随机数,也就是结果是确定的。可以考虑多个客户端运行,并综合采信。

新手上路,请多包涵

我们项目现在的实现方法是这样子的:
1,前后端战斗逻辑各自实现一套,并且保持算法一致
2,前端战斗时,发起请求
3,后端构建战斗相关数据发给前端,包括各种随机时使用的随机种子
4,前端模拟战斗,并将战斗结果、结束时的随机种子等数据(如果有战中操作,需要把玩家关键帧数据一并发过来)发给后端,后端进行模拟,并验证结果。

对于这套方案,其实我是很担心的,有这么几点风险:
1,前后端的语言和平台都不一样,所以战斗逻辑保持一致的风险比较大!
2,debug比较难,现在是通过对比日志来确定哪一步出现bug。

我个人比较倾向于,前后端都使用相同的语言实现(比如lua),其他的步骤都不改,这样风险应该降低不少~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题