遊戲性能優化(2)-budget
02-23
系列文章:
遊戲性能優化(1)-why & benchmark 遊戲性能優化(2)-budget性能預算(performance budget)是指根據遊戲類型、上市時間為遊戲定位目標機型和設置性能目標。在開發早期,制定美術效果目標、美術製作規格、技術選型,同時,在整個項目生命期中,對性能進行管理控制,反覆優化來實現目標。
制定美術效果和性能目標
在制定美術效果和性能目標要考慮的因素很多,主要分為:
- 遊戲類型不同類型的遊戲對性能的要求是不一樣的,對性能要求最高的遊戲類型是FPS遊戲,FPS遊戲需要穩定60FPS才能達到手感要求。其他競技類遊戲比如MOBA要求更低一些,但是也要足夠的流暢,至少要穩定30FPS以上。MMO遊戲要求相對更低一些,但是一般也要達到30FPS左右。一些休閒遊戲、卡牌遊戲對FPS的要求也不高。
- 上市時間
在端游時代,一款產品研發周期很長,動輒4、5年。那麼在制定美術效果和性能目標的時候,要著眼於上線時間點時的市場。美術效果一般也會定位超越市面上所有可見遊戲(可能次世代這個詞就是這麼來的)。
對於手游的研發,研發周期較短,制定美術效果和性能目標時,相當於端游要更加保守一些。 - 遊戲定位對於主打畫面的遊戲,比如很多次世代MMO遊戲,會在美術效果上傾向更多的資源,可以在性能上有所妥協。對於主打玩法的遊戲,沒有必要在美術效果上太過激進,優先保證遊戲的流暢性,來提升玩法體驗是更加理智的選擇。
在理解了要考慮的因素之後,我們可以通過參考市面上的遊戲、做性能試驗分析以及根據經驗來確定最後的方案。
性能預算與研發周期
我們把整個項目的研發分為幾個階段來討論性能預算:
- 研發早期這個階段還在確定項目的研發方向和計劃,這個時候要和策劃、美術一起確定玩法和美術需求,在項目早期就達到一定的共識和性能權衡。在給予美術和策劃足夠的空間的同時,也要確認性能不會有過高的風險。同時,要根據需求對技術方案進行調研,確認核心的技術選型,並且制定美術製作標準。部分美術製作標準涉及到大量資源的製作(比如模型的面數規格),一定要在早期確定一個沒有風險的標準,否則回爐成本是幾乎無法承受的(模型全是錢啊)。
- 項目中期項目中期是項目最長的研發期,關於性能有三件事情要做:(1)對能夠提升性能的技術點進行長期的跟進調研(2)持續跟進美術資源控制(3)持續跟進代碼性能控制。不過大部分情況下,這個時候大家的關注點還是要把美術效果和玩法做好,所以一般性能問題一直處在下滑狀態,並且低於上線標準。
- 項目後期在項目的後期,項目臨近上線。由於持續的美術資源堆積、持續的玩法堆積,性能問題一般還是沒有達到上線標準。這個時候能做的事情是:(1)權衡性能和美術效果,捨棄部分美術效果(2)效果分級,對美術效果進行合理的分級。最高檔能在最高檔機型上正常遊戲、中檔能在主流機型上正常遊戲、低檔保障最低的目標機型能正常遊戲。(4)為了達到最後的性能目標,開啟各種黑科技trick。
經過各種努力,性能開始慢慢朝著及格線邁進。
技術選型和製作標準
性能預算對製作標準的影響(隨著硬體發展變化,並不準確):
- 角色面數這個根據角色的顯示大小和顯示數量來制定,一般端游可以到1W+;手游控制在2000面左右。
- 同屏最高面數
端游50W左右;手游5W左右,10W之內
- DrawCall端游一般1000+;手游200左右
- Layout規劃在Layout規劃的時候盡量使用最少的面數和Drawcall來表現美術效果。遠景盡量採用天空、地表系統、和森林系統(森林系統可以優化成面片顯示)表現。採用建築群顯示比較難以優化(也可以採用建築群合併的方式優化)。
- 場景大小規劃大世界要比小場景對性能的壓力更大
- 視角視距開闊的視角視距需要渲染更多的模型,對性能壓力大,可以考慮討巧的45度視角(比如鎮魔曲)
- 物理系統避免全部物件帶有物理表現(很多遊戲的做法是,只有主角有比較複雜的物理效果表現)
- 光照系統減少實時光的使用,盡量使用烘焙
- Batch在模型製作時,要考慮如何規劃Batch,使用同樣材質球和貼圖的模型可以進行Batch。要權衡Batch和模型復用問題。
- 材質考慮選擇pbr、cartoon等不同的方案,盡量減少材質對貼圖的使用。
- 後處理手機解析度特別高,要減少後處理的使用,考慮合併後處理。
- UI在規劃UI布局時,要考慮降低UI的overdarw。
- 腳本語言的選擇效率:lua>python
以上部分只包含項目早期要關注的內容,個人認為目前列舉的還不夠準確,後面我會持續更新以上內容。以上給出的部分數據都可商榷,靈活性比較大。
常見的分析工具
- GPA端游GPU分析
- VTune端游CPU分析
- XCodeiphone性能分析,能分析CPU、GPU性能
- Adreno ProfilerAndroid GPU分析
- Snapdragon ProfilerAndroid GPU分析
- Unity ProfilerUnity程序全方面分析
引用
- 《Video Game Optimization》
- 《Optimized C++》
推薦閱讀:
※兩個平均年齡十一歲的小男孩,做了兩款遊戲
※遊戲資源傳送門
※遊戲開發與程序設計知識總結06——常見軟體架構模式
※針對中小遊戲的Unity3D插件推薦
※像素鳥跳跳跳!(什麼鬼 ×
TAG:遊戲開發 |