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渲染器中。


Advertisement

更多 iThome相關內容