TGDC丨維塔士13年老兵,暢談“移植優化”方法論
好的開始是成功的一半
12月9日,維塔士上海工作室技術總監Andy Fong帶來了以《在高寒處保持溫暖 —— Switch遊戲優化經驗分享》為題的演講。
近年來,PC、手機平臺的各類大作陸續都開始通過移植等方式走向主機平臺,NS正是其中大熱。
在競核此前活動“Roguelike浪潮下的先鋒探險家們”當中,多方人士都曾表示,NS,尤其是國行NS的使用者群體正呈現出越來越強的消費能力。
但在轉戰NS的過程中,挑戰如影隨形。無論是移植後的產品質量,還是移植過程的口徑對接,都是廠商長久以來所面臨的難題。
或許,大家能從今天Andy Fong的演講中找到解決方案。
移植NS為何總是“吃力不討好”
Andy Fong,2007年正式加入維塔士上海工作室,迄今為止已有超過13年的遊戲開發經驗,近年來曾參與《最終幻想12:黃道年代》《黑色洛城》《生化奇兵》《幽浮2》等大作。
可以說,這是一位在遊戲產業“戰功赫赫”的老兵。
在介紹遊戲移植優化方案之前,Andy首先對任天堂在NS平臺的一些開發理念進行了分析。
“我認為他的重點是在於功能創新。”Andy說,“這當中就包括把移動平臺和主機合併到一個遊戲機當中。實際上這更多的是為了方便玩家。”
功能創新在手柄設計方面也有體現。NS手柄加入了新的HD Rumble系統,在讓手柄觸感更加貼合、寫實之外,還能通過紅外線來檢測玩家手部動作,豐富遊玩樂趣。
當然,這種設計也是為了方便多人遊戲。NS允許兩名玩家操縱同一臺遊戲機的不同手柄同時遊玩對戰。除本地多人外,通過網路連線不同主機之間亦可以進行互動。
“實際上,NS並沒有採用當前時代最尖端的硬體。”Andy說,“這就導致,如果將其他平臺的高品質遊戲移植過來,記憶體使用不得不有所降低。”
他表示,如果想在遊戲效能方面保持30FPS,那麼就必須在CPU或GPU上做出優化調整。而這種調整,往往要在產品預生產的階段就做好打算。
然而這顯然不會對所有人適用,尤其是那些在研發時,NS尚未問世的作品。“過去的一些客戶,他們不允許掉幀、不允許畫質下降。面對這樣的要求,我們選擇採用產品優化的方法進行移植改造。”Andy如是說道。
記憶體、CPU、GPU優化層層遞進
Andy介紹說,記憶體優化、CPU優化、GPU優化是目前他們採用的部分優化策略。注意,後面兩種優化方案,是在記憶體優化達到一定水平後才會考慮的。
“記憶體優化方面,就如剛剛所講,移植作品,尤其是高畫質大作,很容易觸碰NS的記憶體上限。”Andy介紹說,“而一旦超過上限,遊戲很容易會崩潰掉。”
接著Andy介紹了一些用於記憶體優化的工具,例如報告工具、螢幕統計工具等。
以螢幕統計工具為例,該軟體其實就是通過低層記憶體的一個分配器,去採集實際上各個模組使用的記憶體,然後展示在螢幕上便於開發者觀察。
諸如此類的記憶體分析工具所提供的引數,經過程式設計師的分析,將有效解決記憶體洩漏、冗餘等問題,並幫助制定開發優化策略。
“因為其他平臺普遍記憶體充足,就會有一些不必要的冗餘資源,比如立體聲的音訊、渲染緩衝等等。”Andy表示,他們會盡量爭取在不縮減遊戲性的情況下,達到一個記憶體平衡。
劇情動畫同樣也會進行壓縮。實際上很多引擎都支援動畫壓縮,縮減動畫資料。
Andy還表示,他們曾遇到很多關卡記憶體使用過大的情況。一般來說,他們會選擇“拆分”。即將大的關卡拆分成兩、三個更小的關卡,大大節省記憶體。
做完如上的一系列優化後,遊戲算是可以在NS上跑起來了,但幀數仍舊不能達標。“這時候就需要在CPU、GPU方面進行一些優化工作。”Andy如是說道。
Andy羅列了CPU各模組實際使用的時間,並表示很多第三方工具都可以做到這一點。事實上,NS平臺本身也有提供,但受到NDA保護,只有開發者賬號可以瞭解。
“很多人一說到CPU問題,首先想到的就是draw call。”Andy說,“這將導致渲染執行緒上的投入時間過長。”
Andy在現場傳授了一個解決該問題的方法。此前他的團隊曾負責一款開發世界遊戲,draw call相當高,最終是通過用不同的渲染步驟去拆分任務,達到多執行緒渲染,大幅縮減了命令緩衝時間。
而在GPU方面,Andy同樣分享了團隊長久以來的優化心得。
“GPU效能一般會跟著色器的效率有關,也會跟每個渲染命令所填充的畫素有關。”Andy表示,對於NS的主機模式,一般推薦用1080P,而掌機模式則推薦720P。
這種推薦方式也是考慮到GPU效能的綜合選擇,保證遊戲不掉下30幀。
具體優化策略上,Andy團隊一般首先考慮去除分支,但實際上這相當困難,因為沒法判定升序的流向。
“我們採用的第一個方法是替換寫法。”Andy介紹說,“就是使用特殊語句來替代分支語句。或是使用一種條件編譯,把不同的分支程式碼組織成不同的著色器二進位制檔案。”
除此之外,圖塊緩衝也是不錯的優化方法。具體來說就是把一些繪製的請求集中收集,再把渲染緩衝劃分成許多圖塊,進行播放。
這樣的好處是,它能夠大大加快你的訪問速度,尤其是在你有很多大面積粒子的情況下。有些時候,甚至能收穫5ms的提升。
“最好的優化方案,永遠是預先的優化策略。”Andy最後總結道。
來源:競核
原文:https://mp.weixin.qq.com/s/efIhzGpnFxDa6uJEdG3y3A
相關文章
- SQL優化的方法論SQL優化
- 維塔士投資加拿大 Umanaïa Interactive遊戲工作室遊戲
- ListView最終優化方法,絕對流暢View優化
- 維塔士:希望發揮遊戲技術專長 探索更多數字化應用場景遊戲
- Oracle效能優化方法論的發展之二:基於OWI的效能優化方法論Oracle優化
- 運維角度淺談MySQL資料庫優化運維MySql資料庫優化
- 運維角度淺談 MySQL 資料庫優化運維MySql資料庫優化
- 維塔士在成都設立首個培訓專用工作室
- Oracle效能優化方法論的發展之四:基於資源瓶頸分析的優化方法論Oracle優化
- 前端體驗優化小貼士前端優化
- 從運維角度淺談 MySQL 資料庫優化運維MySql資料庫優化
- Oracle效能優化方法論的發展之三:基於響應時間分析的效能優化方法論Oracle優化
- 淺談Tomcat伺服器優化方法Tomcat伺服器優化
- 方法論系列:用四個金字塔來說明金字塔原理
- 10年出海老兵的經驗談
- 維塔士收購Third Kind Games工作室,強勢進軍英國市場GAM
- iOS效能優化系列篇之“列表流暢度優化”iOS優化
- Flutter 流暢度優化元件 KeframeFlutter優化元件
- 再談方法論和模式模式
- Oracle效能優化方法論的發展之六:基於流程分析和響應時間分析的效能優化方法論Oracle優化
- Oracle效能優化方法論的發展之五:基於工作單元的響應時間分析的效能優化方法論Oracle優化
- C/C++ 效能優化背後的方法論:TMAMC++優化
- 漫談CUDA優化優化
- Bitmap優化詳談優化
- 淺談 TCP 優化TCP優化
- 淺談webpack優化Web優化
- RWP談SQL優化SQL優化
- 淺談程式優化優化
- 談談《我的網際網路方法論》
- Android應用優化之流暢度Android優化
- 從 React render 談談效能優化React優化
- 維塔士:打破壁壘,鼓勵和支援更多女性加入到遊戲行業中來遊戲行業
- 如何實現高效運維?來談談效能優化那些事(含直播回顧 Q&A)運維優化
- [原創]淺談H5頁面效能優化方法H5優化
- 維塔士在越南戰略投資又落一子,收購Glass Egg 工作室
- 重磅!維塔士推出《遊戲重製的黃金時代》白皮書 分享經典復興的秘訣遊戲
- 談一談SEO優化的好處!優化
- 談談JavaScript非同步程式碼優化JavaScript非同步優化