帧同步的一些思考(三):技能动作表现

问题

帧同步中的逻辑层使用的简单包围盒做碰撞。渲染层要表现出”拳拳到肉”的效果。

比较直接的方法是 逻辑层有一套完备的定点物理引擎

这里讨论的是,是否能在现有技术上,达成”拳拳到肉”的效果。

逻辑层与渲染层的关系

先理清逻辑层与渲染层的关系,有助于本文后面要讲的实现方法。

  • 服务端与客户端的关系
    传统端游,1 份游戏服逻辑 + N 份客户端逻辑。N 份客户端逻辑根据 游戏服逻辑 的计算结果,进行不断渲染。它们的数据同步,通过网络广播的方式。

    再看,帧同步的逻辑层与渲染层

    N 份逻辑层 + N 份渲染层。每份渲染层根据自己对应的逻辑层计算结果,进行不断渲染。它们的数据同步,通过N份逻辑层自身计算的一致性达成。

    从这个角度来看:

    • 逻辑层代码要具备计算过程强一致性
    • 渲染层代码相对宽松不少,只要最终结果一致性

    即从这个角度来看帧同步,每端的画面表现允许有微小的差别。

    这样的好处有以下几点:

    • 传统网游的客户端优化手段经验,均能用于逻辑层与渲染层
    • 允许每端画面表现有微小的差别,可以让游戏更流畅,抗网络波动性更好些
  • 关键帧与补间帧的关系
    上述关系更进一步,逻辑层与渲染层就可以看成是关键帧与补间帧的关系。

    显然每端的关键帧必须要强一致性。

    至于补间帧,可以牺牲一定的一致性,达成诸如:更加流畅、技能动作表现更好等效果。

如果赞同上述观点,那么我们试着分析下,渲染层要表现出”拳拳到肉” 需要做哪般。

图解渲染层与逻辑层工作机制

这里写图片描述

上图图解了一种渲染层做动画补间的方法。

来分析下:

  • 逻辑层,第 N 帧,计算得出红方块被砍到;并使红方块位移变化到 (X, Y )
  • 逻辑层把这2个状态事件压入队列
  • 渲染层,在第 M 帧 (即逻辑层第 N 帧)从队列中取出 “红方块被砍到” 事件,一直验算,直到砍到。
    可能渲染层1帧内砍到、也可能2帧砍到,都没关系。
  • 渲染层,在第 M + 1 帧 或 第 M + 2 帧 (上个事件处理完毕的那帧),从队列中取出 “红方块被击飞到X,Y” 事件。速度做插值,开始平滑被击飞至 X, Y

本例子采用1种原网游客户端动作优化方案,应用于 帧同步中逻辑层与渲染层 中的例子。

总结

  1. 帧同步中是可以应用 传统网游的客户端优化手段经验 的
  2. 帧同步中在“定点物理库”不是很完备的情况下,可以通过牺牲一定的每端画面一致性来提高技能动画表现效果。

以上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fananchong2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值