腾讯游戏开发精粹Ⅲ
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 网络游戏的客户端预表现技术

绝大多数的网络游戏,总会将服务器作为各客户端间交互通信的权威中转站和裁决者,玩家的操作指令总要经过服务器的中转,直到接收到服务器的下行数据后才能真正执行游戏逻辑、更新画面表现。这段网络通信的时间,导致从玩家发起操作到看到画面展示出相应的操作表现之间存在一段显示延迟。显示延迟超过一定阈值后,玩家的操作将不能得到即时的表现反馈,会有明显的延迟感受。特别是移动端游戏,常常运行在不稳定的网络下,延迟和抖动现象较严重,玩家的操作手感和游戏体验都会受到很大影响。

为了优化高延迟网络下的游戏操作和表现延迟,客户端预表现技术应运而生。其主要策略是:在游戏操作发出时,由客户端在本地立即处理,先行执行和展示一些画面表现,而不必等到服务器确认下发。这样,在玩家按键操作的同时,游戏画面就能立即更新、展现部分操作表现反馈,玩家的操作手感得到明显提升。

例如,对于玩家的移动操作,在高延迟网络下,玩家原本需要等待服务器下行回包后才能看到角色播放奔跑动画、移动位置,在停止操作后角色还会继续运动一段时间才能停止。这样,玩家的操作不能及时得到响应和确认,游戏体验较差。预表现技术尝试消除网络通信造成的显示延迟,实现操控立即反馈的顺畅体验,即在玩家操控摇杆时立即移动角色,松开摇杆时角色也随之停止运动,使得玩家的操作能立刻在画面上呈现。

客户端预表现技术可以在相当大的程度上消除网络通信造成的操作反馈滞后延迟,对于弱网下的游戏体验和操作手感提升明显,因而得到越来越多的应用和发展。但现有的大部分客户端预表现技术依赖基于C/S架构的状态同步模式实现,基于帧同步模式的网络游戏鲜少应用。特别是对于MOBA类型的游戏,由于以下困难,尚未有可靠、成熟的移动预表现方案实现:(1)技能、普攻与移动的衔接机制复杂,在预表现移动下难以还原玩家的真实操作手感。(2)角色移动、墙体阻挡和技能位移逻辑复杂,耦合度高,难以保证画面位置与真实逻辑位置的偏差可控。

本章将介绍一种应用于MOBA类型的帧同步游戏的客户端移动预表现方案。此方案基于逻辑与渲染表现分离的框架,实现了主控角色移动操作的实时响应和画面反馈,经过调整也可适用于其他帧同步类型的网络游戏。

此方案通过处理预表现移动与技能施法的操作衔接、兼容墙体阻挡机制,保证了玩家的移动与技能连招操作的手感,以及表现状态与真实逻辑的近似一致性。本方案的主要技术模块包括:预表现移动实现,基于帧命令队列对照的逻辑移动预测与位置修正,移动、普攻、技能间的逻辑衔接与表现处理,墙体和动态阻挡的计算,以及操作手感的指标评价。