Cornfox Bros.如何将手游移植到Switch
大家好,我叫Kalle H?m?l?inen,是開發《海之號角2:失落王國的騎士》的資深程序員。在這篇博客文章中,我將會介紹一下我們怎樣把這款游戲(它本來是針對Apple Arcade支持的所有設備開發的,從iPhone 6系列到最新的MacBook Pro都包括在內)移植到任天堂Switch的。
?
我們在著手工作時設定了下列目標:
?
- 保持盡可能高的畫質水平。
- 實現穩定的幀率。
- 實現原生分辨率(TV模式下1080p,掌機模式下720p)。
- 通過動態分辨率使用超采樣抗鋸齒取代多重采樣抗鋸齒(用于iOS中)或臨時抗鋸齒(用于Mac)。
- 使用移動端渲染器取代PC渲染器,因為我們要優先確保分辨率,而不是渲染功能。
為了進行Switch移植,我們與工作室Engine Software進行了協作。總的來說,我們制定的目標對Switch硬件提出了很高要求,因為它配備的是三個時鐘頻率比較低的CPU核心。
?
第一次迭代
我們的第一次Switch迭代僅達到13幀/秒的運行速度。而在iOS上,我們開發時的目標是30幀/秒。當Apple Arcade首次公布時,我們還不清楚它支持的最老的設備是什么(后來知道是iPhone 6系列)。把目標定在30幀/秒能讓我們保持很高的分辨率,而且最重要的是,電池的電量消耗不會太高。
解決方案
在30幀/秒的速度下,可以用33.3毫秒來渲染一幀畫面,而我們初步得到的結果卻很不幸,每幀需要近80毫秒。我們感到很困惑:這個游戲已經針對移動設備優化過了。我們忽略了什么?后來的事情表明,忽略了很多。QQ號碼買賣平臺新型的蘋果移動設備擁有比Switch更強大的CPU——這使我們可以忽略許多資源沒有得到高效利用的情況。于是我開始分析這款游戲并尋找答案。
主機游戲和移動端游戲的區別是,在移動平臺上,性能會根據后臺應用程序、電池電量和設備溫度進行調整。而在主機上,如果游戲有穩定的性能,你就知道它會始終如一。
我開始進行優化,我的方法就是尋找所有運行緩慢的藍圖,把它們移植到C++。只用兩天時間,我就把渲染時間從最初的結果削減了20毫秒。這些立竿見影的成果讓我想到,肯定還有另一些可以輕松實現的優化是我們沒有做的。其中一個很快就被我找了出來:一些關卡有超過5000個Actor——這個數字遠遠超過推薦的數量。雖然iOS設備處理這么多Actor不是什么大問題,但Switch版不經過大手術是做不到的。
我統計了每一幀中有多少Actor會發生更新,發現這個數字超過了1000。除此之外,還有近1500個會更新的組件。這就是我們要解決的問題。我們要做的第一件事就是減少每幀的更新數量。下面是我們的發現和節省渲染時間的方法:
- 有些Actor在更新中基本上沒做什么。對于這類Actor,我們要么完全禁用更新,要么就顯著延長更新間隔。
- 有些Actor會手動查詢重疊。對這類Actor可以進行重構,使用重疊事件取代查詢,而且僅在事件發生后暫時啟用更新。
- 有些Actor執行的操作只和視覺效果有關,但是玩家卻看不到。為了解決這個問題,我們使用了視錐體、距離、動態和靜態遮蔽剔除,然后只更新可見的Actor。
- 有些Actor執行的操作從技術角度來說是可見的,但是距離太遠,玩家不會注意到。例如,在白市,任何時候的角色總數都超過300個,但是在玩家周圍通常只有10個左右——只有這些角色才是需要更新的。
虛幻引擎提供了一些方法來優化這些情況;但是,團隊有責任做出明智的決策,有時候需要選擇性使用或自定義代碼。在這次移植中,我們添加和刪除了一些代碼,同時也使用了內置的優化;例如,我們使用了動畫tickrate。
?
另一個拖慢速度的因素來自地形青草系統。這個系統會在地形上動態生成數以百萬計的青草和其他植物網格體。我們發現它每幀要占用多達2.5毫秒。我們注意到,我們對不同地形圖層使用不同類型植物的方法會生成許多空的批次。這個問題很好解決,只需要讓組件的每個特定植物類型的權重為零時提前退出即可。這個系統還會更新來自地形的所有組件。為了解決這個問題,我們首先確定任何植物類型的最大距離是多少,然后只更新那些在此范圍中的組件。我們把地形組件從4000個減少到了10個(在玩家身邊的那些),從而使渲染時間縮短到0.1毫秒。如果你覺得這些優化會令你的項目受益,那么我們要高興地告訴你,我們已經在GitHub上的最新虛幻引擎版本中提供了它們。
最后但同樣值得注意的是,Engine Software實現了一種叫做Actor Tick Batching的技術,它曾被用于《盜賊之海》。Actor Tick Batching能減少指令緩存缺失并開啟其他優化可能,例如減少重復工作或根據Actor距離執行更新速度優化。
?
這一切努力造就了經過高度優化的《海之號角2:失落王國的騎士》移植版,它將在2020年秋季登陸任天堂Switch。感謝閱讀本文!
總結
以上是生活随笔為你收集整理的Cornfox Bros.如何将手游移植到Switch的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏开发者怎么做出以假乱真的画面效果?大
- 下一篇: 大世界游戏制作:《幽灵行动·荒野》程序化