手游服务端战斗校验攻略 | 游戏开发

  • 手游服务端战斗校验攻略 | 游戏开发已关闭评论
  • A+
所属分类:遊戲攻略大全
摘要

1、简介与端游不同,目前大部分手游战斗设计上没有采用实时交… 全屏攻击等 2、服务端策略这里例举两种方案:1、客户端上报关…

1、简介

与端游不同,目前大部分手游战斗设计上没有采用实时交互,只在战斗开始和结束时,服务器和客户端才有通讯。整个战斗过程的逻辑全部运行在客户端。这种设计在弱网络下,依然能有良好的战斗体验,但是由于战斗逻辑完全没有经过服务器,导致外挂作弊的难度大大降低。

目前客户端可以作弊的方式有:

1)内存修改器

这种最为普遍,通过修改攻击力,HP等达到过关的目的,常用工具如烧饼大师、八门神器等,

2)加速器

加速游戏运行,以快速过关练级,例如变速齿轮。

3)协议破解

伪造战斗胜利包上报

4)客户端破解

无敌,全屏攻击等

 

2、服务端策略

这里例举两种方案:

1、客户端上报关键数据,服务端对过程进行验算。

2、客户端上报全量数据,服务端进行战斗重演。

战斗重演通常单独搭建一组monosvr进行验证,它的好处是前后台采用同一套代码,准确度高,但由于上传数据量大,计算量大,需要消耗大量网络流量,和大量服务器资源。

如果选用的对关键数据进行验算的方案,从玩家角色的角度,采集以下数据。

 

2.1 具体采集数据有

命中怪的技能序列

被击中序列

Buff序列

被特殊怪击中序列

 

2.2 通过这些数据可以检验的点有

单次输出伤害

输出总伤害

单次承受伤害

承受总伤害

技能次数

技能CD

技能攻击范围

技能合法性

Buff触发合法性

怪生成合法性

总伤害与怪总血量比较

消耗时间

被命中(无敌)

隐藏怪固定频率使用全屏命中但无伤害的技能,并上报该技能的命中次数,服务器需根据战斗时长,频率,校验玩家被该技能命中的次数。用于对无敌闪避状态的检测。

 

2.3 优点

只上报关键数据, 节省网络流量和服务器资源。校验直接在gamesvr上进行,架构简单,无需另外搭建checksvr。 接口调用简单, 无需回调。能有效应对:内存修改,资源破解及协议破解,变速器。

 

2.4 缺点

没有采集每帧的数据,缺乏对AI校验,玩家移动操作校验。但如果游戏本身是一个数值型游戏,操作的作用较弱,且有时间和次数限制,因此重点是验证对排名奖励影响大的输出伤害。承受伤害对排名奖励影响很小。另一个问题是容易误报。由于前后台不是同一份代码,且重度游戏数值复杂,Buff类型多,副本加成等,服务端容易造成误报。

 

2.5 如何应对

首先前后台用不同代码也有个好处是可以互相印证。

尽量使用公共的数值资源,战斗相关需求与改动抄送后台开发同事。

给与一定的阈值便于容错,并提供灵活的开关配置,在外网出现大量误杀时先提高阈值或关闭相关开关。

 

3、一些经验

1、如何做正确性排查?

战斗详细日志较大,可以只在出错时拉取客户端详细日志。

2、如何降低误报?

设置更小范围预警值,达到预警值时不报错,只采集日志。

优化措施:

进程启动时对常用数据资源进行提取加工后保存,如某副本怪加成后属性。使在循环中对数据查找复杂度达到O(1)。

在一次对攻击序列的遍历中,同时验证多个策略,如输出伤害,技能CD等。

手游服务端战斗校验攻略 | 游戏开发手游服务端战斗校验攻略 | 游戏开发

Gad祝大家新年快乐!

Gad-GameDev∣腾讯游戏开发者平台


长按,识别二维码,加关注

免费组件下载丨专业知识学习

组队游戏制作丨项目孵化渠道

国内业界首家专业独立游戏开发者平台。

面向游戏从业者,

打造开放、互联、回馈、分享的专业游戏人社区。