咨询热线

+86-0000-92555

新闻资讯
您当前的位置:主页 > 新闻资讯 >

快节奏手游时代!格斗类游戏的帧同步优化措施

发布时间:2017-12-27  点击量:
更多

由于现在4G手机网络越来越普及,绝大多数用户的时延都可以在150ms以内,所以一些快节奏的帧同步网络游戏开始大行其道,现在最火的帧同步游戏无疑是某农药了。帧同步技术除了可以用来做MOBA类游戏,同样可以用来做需要大量快速操作的格斗类游戏,本文就是尝试提出一些解决帧同步方案下格斗游戏的优化措施。

(本文中涉及一些使用Unity引擎的术语,但大多数其他游戏引擎也有类似的概念,所以并不仅仅是针对使用Unity的游戏)

概念

我们一般认为,LockStep游戏由于网络延迟,画面的反应会比直接本地渲染要慢很多,所以我们希望画面能对玩家的输入有即刻的反应。但也希望对其他用户的交互是一致的。所以有一些游戏采用所谓“预渲染”策略:

一、逻辑与渲染分别驱动:所谓渲染模块,就是用来给本地客户端表现的画面,使用本地渲染驱动,也就是Unity的Update()事件;所谓逻辑模块,就用来运行所有的攻击判定(角色位置、攻击与受击区域)的变化,使用服务器发来的网络包进行驱动,也就是通过同步服务器得到包后再运行。

二、纠正渲染误差:由于本地客户端驱动导致的表现,可能和网络包驱动的情况不一致,所以需要某些机制予以纠正,使两者的差异不要太大。一般采用的策略有两个:一是定时同步。预渲染的角色,每隔200ms(可以设置成其他值),就停止运行,等待逻辑角色的状态和自己同步。——这种策略适合那种走走停停的角色行为;二是对于某些输入,比如释放攻击技能,或者受到攻击,逻辑角色启动对预渲染角色的纠正。纠正内容包括位置的拉扯(可以是瞬时或者平滑过程)和播放对应的动画(如播放受击动画)动画分线

·以Sprite组合的Animation为“渲染角色”

·以Collider组合的Animation为“逻辑角色”

·“渲染角色”动画由Update()事件驱动,同时负责向同步服务器发出操作

·“逻辑角色”动画由同步服务器收包得到的数据驱动

·Update()事件每秒60个调用,而从同步服务器收包操作,一般每秒15-30个调用,所以,每次“逻辑角色”动画或位置更新,都要以x4 – x2的倍速来运行
总结

使用预渲染技术的最重要策略,还是坚持帧同步的原则:相同的输入,得到相同的输出。而预渲染的方案,是把那些严格同步的游戏逻辑、与其表现区分开来,这样可以专门的去让画面看起来更流畅,同时不影响帧同步游戏的“一致性”。由于存在一个“看不见”但正确的逻辑模型,所以只要想办法尽量“好看”的把表现纠正到正确的位置或状态即可。这种纠正可以利用游戏中的各种“不可操作”时机,或者其他游戏特色中可以利用的条件,来让纠正尽量不影响游戏体验。

地址:这里是您的公司地址  电话:+86-0000-96877  手机:+86-0000-96877
技术支持:杏彩娱乐平台  ICP备案编号:浙ICP备10200655号-1
2002-2018 杏彩娱乐游戏有限公司 版权所有  统计代码放置
网站地图(百度 / 谷歌