Google发布Android Game SDK改进游戏影格同步

Google正式发布用于Android开发的SDK,这个SDK的第一个版本,主要专注于改进影格同步(Frame Pacing),让游戏的每秒影帧数更为一致,强化游戏体验。

游戏画面显示主要由3个部分组成,游戏渲染、显示子系统和底层显示硬件。Android显示子系统存在的目的,是要避免当显示硬件切换影格时产生的画面撕裂,因此显示子系统会缓存先前的影格,并侦测影格交付延迟,当影格交付延迟发生时,则显示子系统会不断重复显示先前的影格。

Google表示,当游戏渲染循环和底层显示硬件渲染速度不一致时,像是以每秒30个影格运行的游戏,试图在原生支持每秒60个影格的设备上执行,则最佳的显示流程,应该要同步渲染循环、系统合成器以及显示硬件的渲染。

由于许多开发人员都想挑战移动设备的极限,但是当游戏渲染、OS显示子系统和底层显示硬件,有任何同步不协调,都可能在影格时间产生严重的不一致,当一个影格渲染时间太短,就会缩短前一个影格的显示时间,相对地,当一个影格花费太长的时间渲染,则会让前一个影格显示时间过长。

无论是哪一个情况,玩家会在游戏输入和屏幕画面更新时,感受到不一致的延迟,导致游戏画面无法流畅的显示。影格同步函数库则会使用Android上的Choreographer API,和显示子系统进行同步,并在OpenGL和Vulkan API使用时间戳扩展,来确保在适合的时间显示影格,还能同步光栅避免缓冲区填补。

在设备许可的情况下,也可以灵活地支持多种影分辨率,在支持60 Hz或90 Hz刷新率的屏幕,即便设备无法每秒生成60或是更多的影格,也能让游戏画面降至45 FPS显示,而非最低的30 FPS,以保持游戏的流畅度。影格同步函数库会预测游戏影帧速率,自动调整相对应的显示影帧速率,而且也能支持更高像是90 Hz和120 Hz的刷新率,或是将更新频率锁定于固定的值。

影格同步函数库现在内置于Unity 2019.2及更高版本中,只要在游戏引擎中勾选优化影格同步,就能让游戏显示更流畅的画面。另外,Google也发布了影格同步函数库二元文件,当开发者拥有游戏引擎源码,也可以自己将函数库集成进OpenGL或Vulkan渲染器中。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191209A0HG8000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券