在广州市黄埔区1月6日举办的IGDC 2020国际游戏开发者大会上,自《战双帕弥什》发布后极少出现在大家视野中的库洛游戏,首次在大型活动上出现并分享开发心得。

在当晚的 “金钻榜”发布仪式上,还获得最具创新力企业奖项,《战双帕弥什》也获得最受欢迎网络游戏、最佳国产游戏两项大奖。

大会上,库洛游戏技术总监林晨晨还亲自上台进行了《战双》技术开发分享,讲述他们在游戏公平安全保障和动作游戏手感要素两方面的心得和做法,以下是手游那点事带来的演讲整理,具体内容为便于阅读有所删改:

林晨晨:下面由我来分享一下我们《战双》的两个方面的技术要点。

第一个方面是关于游戏安全的,第二个方面是关于我们怎么去做好一个动作类游戏。

一、7点防范措施,保证《战双》公平安全

在游戏公平方面,《战双》是一个网络游戏,所以我们把玩家的公平和游戏的安全看得非常重要,让《战双》尽可能地为玩家保持公平竞争,我们做了一系列事情来保障这个环境。

1.第一件是包体加固。

它可以非常好地杜绝一些非法的二次解包的情况,而那这些二次解包出来非法包可能会欺骗一些玩家。

比如说我们在某一次测试中发现,有一个群里面流出来的包,充值比较高的金额,居然只要使用一分钱,虽然这个一分钱充值不能经过我们服务器的验证,但是这种包流出来之后,会导致玩家听信一些传言。

2.第二个是外挂识别。

我们有一个外挂的黑名单,这个黑名单里面罗列了比如葫芦、烧饼等等常见的修改器,并且屏蔽了一些调试的工具。

这样的做法可以防止《战双》在运行时的内存被修改,那样会导致非常严重的战斗不平衡、购买逻辑出错、活动流程被打乱等等问题。

那防止被调试还有一个非常好的作用,就是可以尽可能地防护包体的整个交互过程,减少协议被探测的情况。

3.第三方面是关于协议加密的。

协议加密在这里主要是防止脱机挂,它会导致一个严重的问题——工作室可以通过非常廉价的成本批量的养一两百万个号,长期积累下来之后,形成一个黑色产业链,会给我们的收入造成非常大的影响。

4.第四个是关于我们与Unity合作获得的Asset Bundle加密能力。

这个加密机制,主要有两个特点,一个是片段式加密,第二个是在运行时的实时加密与解密。

这样做的主要原因是,我们的活动是以6周为一个周期,在这个6周的活动期间,我们会尽可能把所有的活动资源打包在完整的母包里面,这样会导致我们的资源提前出现在线上的包体里面。

玩家可能经过一些破解的方法,把我们后期,比如说第3周第4周甚至是第6周的活动也提前曝光出来,会比较影响我们整个运营的节奏,比如说我们后期第6周的活动比较给力,提前被泄露就会导致我们前三周的数据下跌。

5.第五方面是关于文件签名的。

前面介绍的都是基于对称的加密,我们还有一个最后的保险手段,就是对非常非常重要的配置表,代码等文件,做了一个非对称加密。

非对称加密,如果是技术同行的话应该知道,是一个耗时非常久的一个算法,我们如果对完整的文件做非对称加密跟解密,在运行时是不太可能的。

我们采取的做法就是对整个文件做一个哈希,求取它的特征,再对这个特征做一个签名。在没有拿到我们只在公司有的密钥的情况下,外部人员是没办法修改我们的文件,签出跟我们一样签名的。

这个流程我大概列了一下,我们在打包的时候会获取这个文件的具体内容,会对这个文件的内容做一个哈希求值,然后用私钥对这个哈希做签名,再把我们的签名最后的签名段加到文件的头部,最后生成一个资源。

解密就是一个相反的过程:加载的时候我们会加载完整的资源,再截取他的头部签名,再用剩下的部分算一个哈希,再用公钥对这个哈希做一个签名的校验,以此来达成我们每个重要的文件都不可能被修改的目的。

6.然后最重要的一点是我们在《战双》里面对战斗做了一个完全的脱离引擎的剥离。

《战双》里面所有的战斗都可以在服务端复现,我们把战斗内核和表现层完全做了脱离。基于这个东西我们做了几件事情:

第一个是做了一个世界状态码,第二个是做了一个服务端校验,第三个是做了一个NPC随机出生。

关于第一个世界状态码,我们把当前世界的迹象完整留下是不太可能的。就用了一个比较取巧的方式,对游戏世界里面的相关属性的数值做了一定的算法计算,最后形成一个值。用这个值来代表现在这个游戏世界里面的一个镜像状态,这个状态上传了服务端之后,我们把客户端的操作包还有客户端传上来的每一帧的世界状态码,丢到我们的服务端的,计算战斗内核里,以这个战争内核加上操作数据包和世界状态码做一个校验,最后可以得知一场战斗里面到底哪一帧作弊了,哪一帧的数值有可能被修改。

如果发现我们的世界状态码跟我们客户端放上来的状态码不正确,那这个玩家就可以判别是一个作弊的玩家。

那除了以上的这个情况之外,我们还发现有一些工作室会有一些取巧的办法,他们会拿一些相对比较简单的关卡,然后用手动打一遍的方式,然后重复的向我们服务器提交打完的数据包。

基于这个情况,我们做了另一件事情,就是对每一个NPC的出生做了一个随机的波动,这个波动在视觉上是非常非常小的。它是一个1万×2 -32的一个这样的一个范围内的随机数。

每一个NPC在出生的时候,看起来像在同一个地方出生,实际上它在内部会有一个极小的一个波动,我们视觉上看不出来,但是在数据校验的时候,每一场战斗都不可能一样。

7.最后一方面是战斗相关的数据统计。

我们把所有校验失败的战斗入库,再挑取一些随机的场次,在后台有一套完整的数据校验,对这些战斗做一个完整复算校验,最后会形成一个定向追踪的IP池。

如果某一些工作室,长期的对我们的服务器发起一些奇怪的包的攻击,那这些IP会被定向追踪。

最后这整套做下来,之前我们高峰的时候每天会收到接近千万次的这种非法的战斗包。经过我们的一系列的做法,大概维持了半年之后,现在工作室已经完全对我们失去兴趣了。

二、战双的打击感是怎样被一步步打磨出来的?

下面我要稍微介绍一下我们怎么做好《战双》这样一个动作类游戏的。

我把几个主要方面做了拆分,分为攻击方、受击方的动作处理,还有特效对打击感的加持,这部分的内容以展示为主。

第一个方面是攻击方的动作处理,关于这个我们做了战斗动作位移问题的优化,第二个是做了打击的震屏,还有打击的顿帧,最后做了一些镜头轨迹的运算。

第一方面,动作位移,我们在修正前发现一些激烈的战斗动作会产生滑步的现象,大家可以比较明显的看到人物某些技能特效出来的时候,它的脚会跟地面发生位移的,这个是由于我们把技能跟移动分开的做法所导致的。

于是我们之后就把一个动作的所有帧的骨骼移动情况全部导出,参与我们人物移动的计算,就达到了基本是每一帧都不可能出现动作跟移动脱离,与地面产生错位的情况。

第二方面,我们为了增强打击感做了震屏效果。

第三方面我们在打击的受击点的那几帧会做时间减缓,达到一个顿帧的效果。

第四个是我们做了一套完整的镜头操作轨迹。

以上是攻击方的,下面我说一下受击方的。

受击方主要分了5个方面,第一个方面是我们有一个受击动作库。受击方到底是播哪一个受击动作,是由攻击者和受击方共同来决定的。

在上面的基础上我们做了一个抖动,会根据我的攻击方真实打到我的受击方的受击位置,在它受击的骨骼周围的范围内,做一个骨骼的波动。

(加入骨骼抖动前后差别)

第三方面是击飞曲线,我们做了一套物理击飞轨迹的计算模块,QQ拍卖还有一套跟他相配的击退相关的计算模块。

最后效果是受击方会根据攻击方攻击帧的时间点,做符合攻击动作的受击动作,所以我们有着非常精准的受击点判定。

下面是关于打斗特效的。特效对我们整个打击感的加持是非常重要的,我们的特效主要分为八个层次。

首先是最基础的攻击动作跟受击动作;

然后是场景灯光,还有角色灯光;

第三为普通特效;

接下来是径向模糊,可以在受击的范围内产生一定的模糊效果;

接下来是加入大量的GPU粒子,我们把原本基于CPU去做的粒子计算迁移到GPU去,可以达到之前做不到的粒子规模;

之后加入空气扭曲,效果可以让人物的剑好像把空气划开了一样;

最后是在发动技能的时候会产生场景的变色。

大家可以看到最终效果就是外界对我们的评价是在打击感方面做得比较好的一个原因,是因为我们做了这一系列的事情,并且这一系列的事情现在还在不断的加强,今年还加了一些新的效果进去,往更强的打击感方面去做。

今天我想分享的内容就是以上两个方面,谢谢大家。

库洛游戏首次公开分享:《战双帕弥什》的动作打击感是怎么做出来的相关推荐

  1. 战双帕弥什登入显示服务器错误,战双帕弥什无法登陆怎么办 进不了游戏解决方法...

    战双帕弥什无法登陆怎么办 进不了游戏解决方法 最近有款游戏即将公测,这款游戏就是战双帕弥什.在之前的测试中,有很多小伙伴就说,战双帕弥什这个游戏登录不了,或者说无法进入游戏.为什么会出现这种情况呢?下 ...

  2. 战双帕弥什登入显示服务器错误,战双帕弥什游戏进不去怎么办 卡在初始界面解决方法...

    战双帕弥什游戏进不去怎么办.<战双帕弥什>是一款末世科幻题材的3D动作手游,游戏马上要公测了,不过在之前的测试很多玩家都或多或少的出现过进不去游戏的情况,这个该怎么办呢?下面小编就为大家带 ...

  3. 《战双帕弥什》战斗系统解析:适合手机的动作游戏

    在2019年年末,一款手游以一种十分另类的方式闯入我们的视野,但是作为游戏本身优秀的玩法却不应该因此埋没. 战双帕弥什,我愿称它为2019年最佳动作手游,而它的玩法和操作方式可能也是在目前为止的手机游 ...

  4. 战双帕弥什显示服务器满员,战双帕弥什星火和信标服务器有何区别

    战双帕弥什星火和信标服务器有何区别 2019-12-05 10:40 作者:佚名 来源:本站整理 浏览:893 评论:1 战双帕弥什星火服和信标服有什么不同?人气手游大作<战双帕弥什>已经 ...

  5. 竞品分析——崩坏3 战双帕弥什

    游戏介绍: 崩坏3,2016年10月14日全平台公测,是由米哈游科技有限公司制作发行的3D动作手游,截止2022年9月6日,taptap下载量为1830万,评分6.6. 战双帕弥什,2019年12月5 ...

  6. 战双帕弥什qq登录服务器未响应是什么意思,战双帕弥什渠道账号登录失败怎么办...

    战双帕弥什是一款非常好玩的对战手游,玩家可以在游戏中通过操作进行战斗,许多玩家在登录游戏的时候显示渠道账号登录失败,接下来小编就给大家分享一下解决方法. 战双帕弥什渠道账号登录失败解决方法 1.查看网 ...

  7. 战双服务器维护,战双帕弥什维护到几点 战双帕弥什维护什么时候结束

    战双帕弥什今日正式火爆开测,随着大量玩家的加入,服务器也难免出现了过载情况,很多玩家在登陆时出现了战双帕弥什提示服务器未开放请稍后再试的情况,那么战双帕弥什维护什么时候结束?战双帕弥什维护原因是什么? ...

  8. 战双帕弥什qq登录服务器未响应是什么意思,战双帕弥什qq登录

    战双帕弥什qq登录是一款非常经典的二次元手游,玩家在这款战双帕弥什qq登录游戏中有很多有趣的角色可以体验,玩家在这里有很多好玩的游戏玩法可以享受,还有超多礼包等着玩家前来体验,感兴趣的玩家快来下载这款 ...

  9. 战双帕弥什登入显示服务器错误,战双帕弥什渠道账号登录失败/安装失败/提示新版本/卡顿闪退FAQ大全[多图]...

    <战双帕弥什>游戏在登录过程中会出现一系列的问题,这与很多因素息息相关,玩家需要根据特定的问题描述才能找到正确的解决方式,建议玩家按照文中提供的见解去处理: 1.打开游戏提示渠道账号登陆失 ...

最新文章

  1. 三种基本排序的实现及其效率对比:冒泡排序、选择排序和插入排序
  2. OpenCASCADE绘制测试线束:数据交换命令之XDE 命令概览
  3. OpenGL窗口属性
  4. 如何在 Entity Framework 中计算 时间差 ?
  5. jQuery函数的等价原生函数代码示例
  6. golang开发环境配置及Beego框架安装
  7. 中国 AI 开发者真实现状:人才依赖海外引进,本科 AI 教育盛行
  8. C#的变迁史 - C# 4.0 之线程安全集合篇
  9. 在Leangoo里怎么修改密码?
  10. 简单理解混淆矩阵—Matlab详细代码注解
  11. 【手势识别】基于matlab k-means聚类手势识别【含Matlab源码 386期】
  12. 我的世界服务器如何开无限小号,实操神技能,微信能“无限”开小号?
  13. linux 时间戳计数器,用时间戳计数器测量频率的方法(下)-测试测量-与非网
  14. JavaScript实现效果——考试倒计时
  15. 软考--快速掌握操作系统的PV操作
  16. Nexus 7 二代 挂在U盘成功
  17. SpringBoot集成jsoup多线程爬取美剧天堂全部电影资源
  18. Definition, Lemma ,Theorem ,Proposition ,Corollary ,Proof ,Conjecture ,Axiom 概念的含义和区别
  19. DDD领域驱动设计之领域基础设施层
  20. MTK关于手机AGPS问题总结

热门文章

  1. php 输出的区别,php的6种输出方式的区别_后端开发
  2. python会议室系统预定_python项目篇-酒店(会议室,电影)预定
  3. php mysql 预编译语句_php mysql 预编译
  4. tensorboard ckpt pb 模型的输出节点_PyTorch 1.1.0发布,官方支持TensorBoard,还有更多性能提升!...
  5. php页面增加自选项,php - 添加自定义设置选项卡,Woocommerce的设置客户列表内容 - SO中文参考 - www.soinside.com...
  6. 机器学习从零开始-Kaggle数据用PurePython实战
  7. oracle让查出来的数据排序,Oracle数据库的查询排序
  8. Python学习:numpy的使用技巧和注意
  9. BZOJ1044: [HAOI2008]木棍分割 (二分 + DP)
  10. vscode去除控制台ES6报错