数字化浪潮席卷全球,云计算已成IT行业发展之核。云游戏作为新兴技术力量,将游戏渲染从玩家设备转移至集中服务器,革新游戏体验。然而,当前PC端云游戏始终受限于网络限制在流畅度、延迟和画面上难以达到本地游戏的体验。其中有一个关键因数便是鼠标刷新率问题。
鼠标刷新率(也叫鼠标轮询率)既鼠标每秒钟向操作系统报告位移的频率,常见的有125Hz、500Hz、1000Hz、4000Hz和8000Hz。这项数据对游戏体验极为重要,人手操作鼠标移动是一段自然平滑的曲线,而鼠标上报给系统的位移从微观尺度来看,并不是连续的,而是由一个一个零散的位置点连成的位移线段。系统在每次鼠标上报位移时,系统就会将鼠标位置瞬移到相应的位置,因此当鼠标上报频率不够高时,在用户看来,鼠标的滑动显示出来就是一卡一卡的不连续画面,在FPS类游戏中,由于画面整体跟着鼠标移动,因此卡顿更为明显。反之鼠标刷新率越高就越能拟合出自然平滑曲线,视觉流畅度就越高。因而一般游戏专用鼠标往往会将轮询率设置得比较高,1000Hz设置4000Hz、8000Hz。
高鼠标轮询率对于本地游戏环境而言只是会消耗更多的CPU资源来处理USB轮询信号。但对于云游戏来说,就是非常棘手的问题。云游戏由于操作和渲染分离,需要将玩家的鼠标操作通过网络传输给远端的机房,因此当鼠标轮询率过高时,就会造成大量的网络数据包,而这些大量的鼠标位移网络数据包在网络传输中非常容易造成网络拥塞或者触发网络设备QoS限制机制导致丢包。
因此云游戏难以像本地游戏一样通过提高鼠标刷新率来提升画面流畅度。但是过低的鼠标刷新率又会导致Moba类游戏鼠标移动卡顿,FPS类游戏画面移动卡顿。
综上所述,目前云游戏鼠标体验上存在以下难题
1)若像本地游戏一样通过提高鼠标刷新率来提升画面流畅度会造成网络拥塞和鼠标网络数据包丢失。
2)若为保证网络传输稳定,鼠标轮询率就要设为较低的值,游戏画面就会因鼠标位移不连续而出现卡顿。
本文所提出的基于三次样条插值算法提升云游戏鼠标刷新率的方法核心思想是降低云游戏客户端发送的鼠标位移频率以降低对网络的负载,在低频率的每一帧鼠标位移数据包到了算力端后,会加入到一个位移缓存队列,并将缓存中所有的位移帧数据,输入三次样条插值算法,将最新一次的低频位移帧插值成高频位移帧,按照插值后的时间间隔逐次输入给系统。这样对于云游戏的算力系统而言得到的就是一个高刷新率的鼠标位移曲线,能够生成更流畅的鼠标滑动动画和更流畅的游戏画面移动。
具体流程如下:
1)云游戏客户端对鼠标采样设置一个较低的采样率
2)云游戏客户端每次采样鼠标位移后,将鼠标位移封装为网络数据包发送给云游戏算力端
3)云游戏算力端接收到每一帧的鼠标位移后,加入缓存(若队列满,则弹出最早的鼠标位移数据),并利用三次样条插值算法,将前一段时间的位移数据和本次的位移数据作为输入共同输入到三次样条插值算法模型,得出本次位移经过插值后的位移数据组
4)算力端根据插值后的位移数据组按照相应的时间间隔输入到算力端系统
5)系统根据插值后的高频鼠标位移渲染更流畅的鼠标滑动或者是游戏画面移动。