標籤:

遊戲性能優化(2)-budget

系列文章:

遊戲性能優化(1)-why & benchmark 遊戲性能優化(2)-budget

性能預算(performance budget)是指根據遊戲類型、上市時間為遊戲定位目標機型和設置性能目標。在開發早期,制定美術效果目標、美術製作規格、技術選型,同時,在整個項目生命期中,對性能進行管理控制,反覆優化來實現目標。

制定美術效果和性能目標

在制定美術效果和性能目標要考慮的因素很多,主要分為:

  1. 遊戲類型

    不同類型的遊戲對性能的要求是不一樣的,對性能要求最高的遊戲類型是FPS遊戲,FPS遊戲需要穩定60FPS才能達到手感要求。其他競技類遊戲比如MOBA要求更低一些,但是也要足夠的流暢,至少要穩定30FPS以上。MMO遊戲要求相對更低一些,但是一般也要達到30FPS左右。一些休閒遊戲、卡牌遊戲對FPS的要求也不高。
  2. 上市時間

    在端游時代,一款產品研發周期很長,動輒4、5年。那麼在制定美術效果和性能目標的時候,要著眼於上線時間點時的市場。美術效果一般也會定位超越市面上所有可見遊戲(可能次世代這個詞就是這麼來的)。

    對於手游的研發,研發周期較短,制定美術效果和性能目標時,相當於端游要更加保守一些。
  3. 遊戲定位

    對於主打畫面的遊戲,比如很多次世代MMO遊戲,會在美術效果上傾向更多的資源,可以在性能上有所妥協。

    對於主打玩法的遊戲,沒有必要在美術效果上太過激進,優先保證遊戲的流暢性,來提升玩法體驗是更加理智的選擇。

在理解了要考慮的因素之後,我們可以通過參考市面上的遊戲、做性能試驗分析以及根據經驗來確定最後的方案。

性能預算與研發周期

我們把整個項目的研發分為幾個階段來討論性能預算:

  1. 研發早期

    這個階段還在確定項目的研發方向和計劃,這個時候要和策劃、美術一起確定玩法和美術需求,在項目早期就達到一定的共識和性能權衡。在給予美術和策劃足夠的空間的同時,也要確認性能不會有過高的風險。同時,要根據需求對技術方案進行調研,確認核心的技術選型,並且制定美術製作標準。

    部分美術製作標準涉及到大量資源的製作(比如模型的面數規格),一定要在早期確定一個沒有風險的標準,否則回爐成本是幾乎無法承受的(模型全是錢啊)。
  2. 項目中期

    項目中期是項目最長的研發期,關於性能有三件事情要做:(1)對能夠提升性能的技術點進行長期的跟進調研(2)持續跟進美術資源控制(3)持續跟進代碼性能控制。不過大部分情況下,這個時候大家的關注點還是要把美術效果和玩法做好,所以一般性能問題一直處在下滑狀態,並且低於上線標準。
  3. 項目後期

    在項目的後期,項目臨近上線。由於持續的美術資源堆積、持續的玩法堆積,性能問題一般還是沒有達到上線標準。這個時候能做的事情是:(1)權衡性能和美術效果,捨棄部分美術效果(2)效果分級,對美術效果進行合理的分級。最高檔能在最高檔機型上正常遊戲、中檔能在主流機型上正常遊戲、低檔保障最低的目標機型能正常遊戲。(4)為了達到最後的性能目標,開啟各種黑科技trick。

    經過各種努力,性能開始慢慢朝著及格線邁進。

技術選型和製作標準

性能預算對製作標準的影響(隨著硬體發展變化,並不準確):

  1. 角色面數

    這個根據角色的顯示大小和顯示數量來制定,一般端游可以到1W+;手游控制在2000面左右。
  2. 同屏最高面數

    端游50W左右;手游5W左右,10W之內

  3. DrawCall

    端游一般1000+;手游200左右
  4. Layout規劃

    在Layout規劃的時候盡量使用最少的面數和Drawcall來表現美術效果。遠景盡量採用天空、地表系統、和森林系統(森林系統可以優化成面片顯示)表現。採用建築群顯示比較難以優化(也可以採用建築群合併的方式優化)。
  5. 場景大小規劃

    大世界要比小場景對性能的壓力更大
  6. 視角視距

    開闊的視角視距需要渲染更多的模型,對性能壓力大,可以考慮討巧的45度視角(比如鎮魔曲)
  7. 物理系統

    避免全部物件帶有物理表現(很多遊戲的做法是,只有主角有比較複雜的物理效果表現)
  8. 光照系統

    減少實時光的使用,盡量使用烘焙
  9. Batch

    在模型製作時,要考慮如何規劃Batch,使用同樣材質球和貼圖的模型可以進行Batch。要權衡Batch和模型復用問題。
  10. 材質

    考慮選擇pbr、cartoon等不同的方案,盡量減少材質對貼圖的使用。
  11. 後處理

    手機解析度特別高,要減少後處理的使用,考慮合併後處理。
  12. UI

    在規劃UI布局時,要考慮降低UI的overdarw。
  13. 腳本語言的選擇

    效率:lua>python

以上部分只包含項目早期要關注的內容,個人認為目前列舉的還不夠準確,後面我會持續更新以上內容。以上給出的部分數據都可商榷,靈活性比較大。

常見的分析工具

  1. GPA

    端游GPU分析
  2. VTune

    端游CPU分析
  3. XCode

    iphone性能分析,能分析CPU、GPU性能
  4. Adreno Profiler

    Android GPU分析
  5. Snapdragon Profiler

    Android GPU分析
  6. Unity Profiler

    Unity程序全方面分析

引用

  • 《Video Game Optimization》
  • 《Optimized C++》

推薦閱讀:

兩個平均年齡十一歲的小男孩,做了兩款遊戲
遊戲資源傳送門
遊戲開發與程序設計知識總結06——常見軟體架構模式
針對中小遊戲的Unity3D插件推薦
像素鳥跳跳跳!(什麼鬼 ×

TAG:遊戲開發 |