战斗验证

问题:

由于在开发中,涉及到战斗验证的问题,开始的时候战斗是客户端再做,但是服务器只验证战斗结果是否正确。

服务器验证的方式就是:战力是否足够打败boss,如果战力小于boss很多战力,则服务器认为是作弊

但是有时候玩家和boss的战力相差不大的时候,这种验证方式就不能判断了。

解决方案:

客户端将战斗模块打包成dll,该dll只负责战斗逻辑,进入战斗前,传入相关数据,输出战斗结果和战后数据

这样客户端,服务器可以共用这个战斗dll逻辑模块。

服务器跑的战斗逻辑和客户端一样,这样结果就肯定没问题了。也不用担心客户端作弊的情况

服务器只验证战斗胜利的情况,并且玩家和boss的战力相差不是很大的时候

如果战斗胜利,但战力相差很大,肯定是作弊。

 

进入战斗前:客户端向服务器发送战斗请求,同时把战斗前玩家的所有数据,包括参战的所有角色属性,还有玩家的所有属性,发送给服务器。

服务器拿到客户端的初始数据之后,模拟客户端进行战斗。

战斗结束:客户端再次把所有阵容数据和玩家数据发送到服务器,服务器拿客户端数据和自己计算的数据进行比较。数据不一致,说明客户端作弊,认为战斗失败。

 

一般这种验证只在回合制的pve中使用,pvp或者自由竞技的游戏的话,就可能需要用到帧同步

 

这就用到了再unity中将战斗模块打包成dll的功能,这篇博客说的比较仔细

https://blog.csdn.net/zhenghongzhi6/article/details/78874580

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值