TGDC丨維塔士13年老兵,暢談“移植優化”方法論

熱愛分享的發表於2020-12-10
TGDC丨維塔士13年老兵,暢談“移植優化”方法論

好的開始是成功的一半

12月9日,維塔士上海工作室技術總監Andy Fong帶來了以《在高寒處保持溫暖 —— Switch遊戲優化經驗分享》為題的演講。

近年來,PC、手機平臺的各類大作陸續都開始通過移植等方式走向主機平臺,NS正是其中大熱。

TGDC丨維塔士13年老兵,暢談“移植優化”方法論

在競核此前活動“Roguelike浪潮下的先鋒探險家們”當中,多方人士都曾表示,NS,尤其是國行NS的使用者群體正呈現出越來越強的消費能力。

但在轉戰NS的過程中,挑戰如影隨形。無論是移植後的產品質量,還是移植過程的口徑對接,都是廠商長久以來所面臨的難題。

或許,大家能從今天Andy Fong的演講中找到解決方案。

移植NS為何總是“吃力不討好”

Andy Fong,2007年正式加入維塔士上海工作室,迄今為止已有超過13年的遊戲開發經驗,近年來曾參與《最終幻想12:黃道年代》《黑色洛城》《生化奇兵》《幽浮2》等大作。

TGDC丨維塔士13年老兵,暢談“移植優化”方法論

可以說,這是一位在遊戲產業“戰功赫赫”的老兵。

在介紹遊戲移植優化方案之前,Andy首先對任天堂在NS平臺的一些開發理念進行了分析。

“我認為他的重點是在於功能創新。”Andy說,“這當中就包括把移動平臺和主機合併到一個遊戲機當中。實際上這更多的是為了方便玩家。”

功能創新在手柄設計方面也有體現。NS手柄加入了新的HD Rumble系統,在讓手柄觸感更加貼合、寫實之外,還能通過紅外線來檢測玩家手部動作,豐富遊玩樂趣。

當然,這種設計也是為了方便多人遊戲。NS允許兩名玩家操縱同一臺遊戲機的不同手柄同時遊玩對戰。除本地多人外,通過網路連線不同主機之間亦可以進行互動。

“實際上,NS並沒有採用當前時代最尖端的硬體。”Andy說,“這就導致,如果將其他平臺的高品質遊戲移植過來,記憶體使用不得不有所降低。”

TGDC丨維塔士13年老兵,暢談“移植優化”方法論

他表示,如果想在遊戲效能方面保持30FPS,那麼就必須在CPU或GPU上做出優化調整。而這種調整,往往要在產品預生產的階段就做好打算。

然而這顯然不會對所有人適用,尤其是那些在研發時,NS尚未問世的作品。“過去的一些客戶,他們不允許掉幀、不允許畫質下降。面對這樣的要求,我們選擇採用產品優化的方法進行移植改造。”Andy如是說道。

記憶體、CPU、GPU優化層層遞進

Andy介紹說,記憶體優化、CPU優化、GPU優化是目前他們採用的部分優化策略。注意,後面兩種優化方案,是在記憶體優化達到一定水平後才會考慮的。

TGDC丨維塔士13年老兵,暢談“移植優化”方法論

“記憶體優化方面,就如剛剛所講,移植作品,尤其是高畫質大作,很容易觸碰NS的記憶體上限。”Andy介紹說,“而一旦超過上限,遊戲很容易會崩潰掉。”

接著Andy介紹了一些用於記憶體優化的工具,例如報告工具、螢幕統計工具等。

以螢幕統計工具為例,該軟體其實就是通過低層記憶體的一個分配器,去採集實際上各個模組使用的記憶體,然後展示在螢幕上便於開發者觀察。

TGDC丨維塔士13年老兵,暢談“移植優化”方法論

諸如此類的記憶體分析工具所提供的引數,經過程式設計師的分析,將有效解決記憶體洩漏、冗餘等問題,並幫助制定開發優化策略。

“因為其他平臺普遍記憶體充足,就會有一些不必要的冗餘資源,比如立體聲的音訊、渲染緩衝等等。”Andy表示,他們會盡量爭取在不縮減遊戲性的情況下,達到一個記憶體平衡。

劇情動畫同樣也會進行壓縮。實際上很多引擎都支援動畫壓縮,縮減動畫資料。

Andy還表示,他們曾遇到很多關卡記憶體使用過大的情況。一般來說,他們會選擇“拆分”。即將大的關卡拆分成兩、三個更小的關卡,大大節省記憶體。

做完如上的一系列優化後,遊戲算是可以在NS上跑起來了,但幀數仍舊不能達標。“這時候就需要在CPU、GPU方面進行一些優化工作。”Andy如是說道。

Andy羅列了CPU各模組實際使用的時間,並表示很多第三方工具都可以做到這一點。事實上,NS平臺本身也有提供,但受到NDA保護,只有開發者賬號可以瞭解。

“很多人一說到CPU問題,首先想到的就是draw call。”Andy說,“這將導致渲染執行緒上的投入時間過長。”

Andy在現場傳授了一個解決該問題的方法。此前他的團隊曾負責一款開發世界遊戲,draw call相當高,最終是通過用不同的渲染步驟去拆分任務,達到多執行緒渲染,大幅縮減了命令緩衝時間。

TGDC丨維塔士13年老兵,暢談“移植優化”方法論

而在GPU方面,Andy同樣分享了團隊長久以來的優化心得。

“GPU效能一般會跟著色器的效率有關,也會跟每個渲染命令所填充的畫素有關。”Andy表示,對於NS的主機模式,一般推薦用1080P,而掌機模式則推薦720P。

這種推薦方式也是考慮到GPU效能的綜合選擇,保證遊戲不掉下30幀。

具體優化策略上,Andy團隊一般首先考慮去除分支,但實際上這相當困難,因為沒法判定升序的流向。

“我們採用的第一個方法是替換寫法。”Andy介紹說,“就是使用特殊語句來替代分支語句。或是使用一種條件編譯,把不同的分支程式碼組織成不同的著色器二進位制檔案。”

除此之外,圖塊緩衝也是不錯的優化方法。具體來說就是把一些繪製的請求集中收集,再把渲染緩衝劃分成許多圖塊,進行播放。

這樣的好處是,它能夠大大加快你的訪問速度,尤其是在你有很多大面積粒子的情況下。有些時候,甚至能收穫5ms的提升。

“最好的優化方案,永遠是預先的優化策略。”Andy最後總結道。

TGDC丨維塔士13年老兵,暢談“移植優化”方法論


來源:競核
原文:https://mp.weixin.qq.com/s/efIhzGpnFxDa6uJEdG3y3A

相關文章