Insomniac, 256人全職3年開發
5km的城市地圖
總資源量3TB, CPP源代碼有154MB...
Timeline視圖是多線程性能分析神器(吐槽下UE4也不集成一個, 還要自己拿開源的往裡整...)
ComponentUpdate也做了並行優化
Houdini程序化生成已經成為業界標配了...
使用json做為中間交換格式, 方便TA/程序和工具使用
場景Tile分塊載入
裝飾物根據不同環境狀態載入不同的模型
除了模型還有各種標記區域信息
移動與載入區域的關係
相比於6邊形的分塊方案, 正方形的分塊需要在移動時多載入兩塊
只把兩邊的載入優先順序降低了
每塊Tile的數據量約28MB, PS4的讀取速度又慢, 後臺一直在Streaming, 幾乎用完了帶寬
怎麼減少高速移動時載入的數據量呢?
提高讀取速度的另一個思路是減少磁碟Seek
為了減少磁碟讀取Seek, 把一些數據做了冗餘存儲, 保證文件讀取一直是順序執行的, 典型的空間換時間思路
帶來的問題是, 一張藍光碟都裝不下了...
有選擇性的進行冗餘保存, 減少數據量. 就這樣冗餘數據還有10GB, 然後想法壓縮數據:
優化完後每個區域的數據量減少到11.75MB
接下來是Rendering, 背景一直載入
他們的Impostor不是Billboard, 而是一些盒子. (這樣的效果比Simplygon簡化成的那一坨X強多了)
Impostor共享一張4k的Texture Atlas
不是所有的東西都能生成盒子狀的Impostor
使用Instancing來繪製, 坐標使用了區域中心的相對坐標壓縮
這些ReflectionProbe到處都是, 改成運行時生成Cubemap, 省了8GB
表情也是3Lateral的技術, 真人掃描, 每張臉有18375頂點
臉模型的Streaming壓力也很大, 進行數據壓縮:
動畫數據也使用DeltaCompression
附: 原文鏈接
https://www.dropbox.com/s/cngcqlvb8zoqxq5/ElanRuskin_gdc2019_marvels_spider-man_preliminaryexport.pdf?dl=0?www.dropbox.com 推薦閱讀: