日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Cornfox Bros.如何将手游移植到Switch

發(fā)布時間:2024/8/26 88 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cornfox Bros.如何将手游移植到Switch 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家好,我叫Kalle H?m?l?inen,是開發(fā)《海之號角2:失落王國的騎士》的資深程序員。在這篇博客文章中,我將會介紹一下我們怎樣把這款游戲(它本來是針對Apple Arcade支持的所有設(shè)備開發(fā)的,從iPhone 6系列到最新的MacBook Pro都包括在內(nèi))移植到任天堂Switch的。
?


我們在著手工作時設(shè)定了下列目標:
?

  • 保持盡可能高的畫質(zhì)水平。
  • 實現(xiàn)穩(wěn)定的幀率。
  • 實現(xiàn)原生分辨率(TV模式下1080p,掌機模式下720p)。
  • 通過動態(tài)分辨率使用超采樣抗鋸齒取代多重采樣抗鋸齒(用于iOS中)或臨時抗鋸齒(用于Mac)。
  • 使用移動端渲染器取代PC渲染器,因為我們要優(yōu)先確保分辨率,而不是渲染功能。


為了進行Switch移植,我們與工作室Engine Software進行了協(xié)作。總的來說,我們制定的目標對Switch硬件提出了很高要求,因為它配備的是三個時鐘頻率比較低的CPU核心。
?


第一次迭代

我們的第一次Switch迭代僅達到13幀/秒的運行速度。而在iOS上,我們開發(fā)時的目標是30幀/秒。當Apple Arcade首次公布時,我們還不清楚它支持的最老的設(shè)備是什么(后來知道是iPhone 6系列)。把目標定在30幀/秒能讓我們保持很高的分辨率,而且最重要的是,電池的電量消耗不會太高。

解決方案

在30幀/秒的速度下,可以用33.3毫秒來渲染一幀畫面,而我們初步得到的結(jié)果卻很不幸,每幀需要近80毫秒。我們感到很困惑:這個游戲已經(jīng)針對移動設(shè)備優(yōu)化過了。我們忽略了什么?后來的事情表明,忽略了很多。QQ號碼買賣平臺新型的蘋果移動設(shè)備擁有比Switch更強大的CPU——這使我們可以忽略許多資源沒有得到高效利用的情況。于是我開始分析這款游戲并尋找答案。

主機游戲和移動端游戲的區(qū)別是,在移動平臺上,性能會根據(jù)后臺應(yīng)用程序、電池電量和設(shè)備溫度進行調(diào)整。而在主機上,如果游戲有穩(wěn)定的性能,你就知道它會始終如一。

我開始進行優(yōu)化,我的方法就是尋找所有運行緩慢的藍圖,把它們移植到C++。只用兩天時間,我就把渲染時間從最初的結(jié)果削減了20毫秒。這些立竿見影的成果讓我想到,肯定還有另一些可以輕松實現(xiàn)的優(yōu)化是我們沒有做的。其中一個很快就被我找了出來:一些關(guān)卡有超過5000個Actor——這個數(shù)字遠遠超過推薦的數(shù)量。雖然iOS設(shè)備處理這么多Actor不是什么大問題,但Switch版不經(jīng)過大手術(shù)是做不到的。

我統(tǒng)計了每一幀中有多少Actor會發(fā)生更新,發(fā)現(xiàn)這個數(shù)字超過了1000。除此之外,還有近1500個會更新的組件。這就是我們要解決的問題。我們要做的第一件事就是減少每幀的更新數(shù)量。下面是我們的發(fā)現(xiàn)和節(jié)省渲染時間的方法:

  • 有些Actor在更新中基本上沒做什么。對于這類Actor,我們要么完全禁用更新,要么就顯著延長更新間隔。
  • 有些Actor會手動查詢重疊。對這類Actor可以進行重構(gòu),使用重疊事件取代查詢,而且僅在事件發(fā)生后暫時啟用更新。
  • 有些Actor執(zhí)行的操作只和視覺效果有關(guān),但是玩家卻看不到。為了解決這個問題,我們使用了視錐體、距離、動態(tài)和靜態(tài)遮蔽剔除,然后只更新可見的Actor。
  • 有些Actor執(zhí)行的操作從技術(shù)角度來說是可見的,但是距離太遠,玩家不會注意到。例如,在白市,任何時候的角色總數(shù)都超過300個,但是在玩家周圍通常只有10個左右——只有這些角色才是需要更新的。


虛幻引擎提供了一些方法來優(yōu)化這些情況;但是,團隊有責任做出明智的決策,有時候需要選擇性使用或自定義代碼。在這次移植中,我們添加和刪除了一些代碼,同時也使用了內(nèi)置的優(yōu)化;例如,我們使用了動畫tickrate。
?


另一個拖慢速度的因素來自地形青草系統(tǒng)。這個系統(tǒng)會在地形上動態(tài)生成數(shù)以百萬計的青草和其他植物網(wǎng)格體。我們發(fā)現(xiàn)它每幀要占用多達2.5毫秒。我們注意到,我們對不同地形圖層使用不同類型植物的方法會生成許多空的批次。這個問題很好解決,只需要讓組件的每個特定植物類型的權(quán)重為零時提前退出即可。這個系統(tǒng)還會更新來自地形的所有組件。為了解決這個問題,我們首先確定任何植物類型的最大距離是多少,然后只更新那些在此范圍中的組件。我們把地形組件從4000個減少到了10個(在玩家身邊的那些),從而使渲染時間縮短到0.1毫秒。如果你覺得這些優(yōu)化會令你的項目受益,那么我們要高興地告訴你,我們已經(jīng)在GitHub上的最新虛幻引擎版本中提供了它們。

最后但同樣值得注意的是,Engine Software實現(xiàn)了一種叫做Actor Tick Batching的技術(shù),它曾被用于《盜賊之海》。Actor Tick Batching能減少指令緩存缺失并開啟其他優(yōu)化可能,例如減少重復(fù)工作或根據(jù)Actor距離執(zhí)行更新速度優(yōu)化。
?


這一切努力造就了經(jīng)過高度優(yōu)化的《海之號角2:失落王國的騎士》移植版,它將在2020年秋季登陸任天堂Switch。感謝閱讀本文!

總結(jié)

以上是生活随笔為你收集整理的Cornfox Bros.如何将手游移植到Switch的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。