隨著合約的敲定, 目前的專案確定要參與到最後一刻了
現在處於專案後期, 不太會有令人興奮的演算法或新功能開發了, 以問題修復以及穩定性為主
儘管如此, 也不能掉以輕心, 我覺得如何收尾比如何開始還更加重要
現在需要密集Cook Windows、PS5、XSX三平台, 出事機率大增, 所以筆記一下怎麼減少意外
善用UnrealGameSync守望相助
圖片是UE官方舉Fortnite為例, 而UGS的官方文件連結
見此簡單來說它是個不錯的整合工具, 而每個change list都會有健康狀態
綠燈的話大致上就沒問題, 紅燈的話可能是右側某一項出了問題
看右側的CIS可以得知是Code、Editor還是Content的問題
而圖裡沒有顯示, 但開發者可以對CL進行星號標記, 當我們確認平台cooking都通過後, 我們通常會手動進行這個標記, 這樣大家就知道想要測試cooking, 用哪一個CL會比較好了
不要在開發設備(或者說儲存設備)上吝嗇
AAA專案動輒數百GB, 儲存空間的重要性就很高了
目前辦公室甚至拉了1Gbit的寬頻, 目的就是為了降低更新專案所花費的傳輸時間
儲存設備方面, 至少也要2TB SSD / 32GB RAM才行
我同事的專案更誇張了, 他們已經安裝到128GB RAM跟10TB SSD...
現在不論SSD還是記憶體價格都相當低廉了, 注重時間成本的話就花下去吧
記憶體炸裂的處置
儘管我的電腦有64GB RAM, 有時候還是會cooking到記憶體不足, 幾個除了加RAM的解決方式
- 從UGS這邊cooking, 避免開Editor來做, 畢竟開Editor本身也會吃一些RAM
- 增加虛擬記憶體容量, 反正硬碟相比記憶體容量大多了
- 關閉一些吃RAM的程序
硬碟空間炸裂的處置
經過測試, 我的專案大概cook兩種平台就塞滿2TB硬碟了, 第三種要測的話怎樣都必須清掉其他一種才行, 不然就是得升級硬碟容量, 在不升級的情況下, 我自己可以做的事就是定期清除舊的cooking內容
- 各平台的cooking內容會儲存在專案\Saved\Cooked以及專案\Saved\StagedBuilds下, 可放心刪除爭取更多空間
- 在IDE裡面, 定時Clean Solution, 雖然會造成重新編譯但值得, 反正我的工作環境有平行化編譯, 夠快了
Shader快取炸裂的處置
有一陣子遇過, 十分討人厭的問題, 快取炸了cooking某個步驟就會一直卡住
- 刪除Engine\DerivedDataCache
- 刪除專案\Saved\ShaderCache
這樣一來Shader部分應該就不成問題
避免Data Validator謊報
例如你可以設計一個Validator來檢查A素材是否啟用了B設定
它不只是在存檔的時候會被執行, 在cooking時也會
如果一個Validator實作上真的存在謊報, 那也會導致cooking停擺
而不論是謊報還是真的有問題, 驗證錯誤會反映到CIS的Content上
==================================================================
大概這樣
未來還有遇到什麼新雷的話會再繼續補充