如何評價小米10在崩壞3測試中使用掉幀炮出現掉幀現象?
B站的視頻,測試武器為5th聖遺物,俗稱掉幀炮。
https://b23.tv/av88992348?b23.tv
遊戲程序員來分析一下。
《崩壞3》採用Unity遊戲引擎製作,Unity引擎一個顯著特點就是,創建物體時由於會在主線程創建,很大概率會掉幀(除非在載入階段進行預先創建,例如王者榮耀,代價是內存佔用比較高)。如果你發現某個遊戲在刷怪的時候掉幀了,那麼找個遊戲很可能就是採用Unity引擎製作的。
布洛尼亞的火炮會產生上萬顆子彈,而子彈表現實體都是在主線程裡面創建的,幾千顆子彈自然要消耗非常多的CPU時間,就會造成卡頓的現象。
技術原因:
- CPU壓力:子彈表現實體和傷害飄字一幀之內創建次數過多;
- CPU壓力:子彈數量太多,移動和傷害檢測邏輯計算量太大;
- 內存壓力:內存佔用過高,觸發系統進行內存垃圾回收,垃圾回收本身需要花大量時間;
- GPU壓力:子彈數量過多,DynamicBatching在CPU端花費時間過多(存疑);
解決方案:
- 對於子彈可能數量巨大的實體,採用ECS框架,充分利用局部性原理;
- 邏輯實體和表現分離,表現實體進行分幀創建,效果類似MMO遊戲裡面角色模型逐漸出來;
- 邏輯層面分幀計算,降低子彈的移動和判定的頻率,或者將子彈作為特效,不進行嚴格的單個子彈邏輯計算;
- 遊戲策劃從設計師取消單個子彈的精準傷害判定,可以將一羣子彈當作一個特效,採用粒子系統來製作。
崩壞3萬氪棄坑老鹹魚在此。大盧治海,我來治小水。
以下是對不明真相喫瓜羣眾的科普:
掉幀炮,學名5th聖遺物,崩壞3角色布洛尼亞可使用的火炮類武器,AOE傷害。武器特點——在三段蓄力擊中敵人後會產生9枚子彈頭,注意,每一名被母彈擊中的敵人,都將產生9枚子彈頭,而且,子彈和母彈一樣都是造成AOE傷害。
下面我們來做一個計算,假設場上有20隻怪物,並且被黑洞聚集在一起。5th擊中它們後,將產生3枚母彈+180枚子彈,共計183發炮彈,對場上敵人造成183×20=3660次傷害。
注意,每一次傷害都是單獨計算(需扣除敵人的屬性抗性、防禦力、物理抗性等因素,並且計算暴擊以及人物裝備的各種加成),而且產生相應的183次爆炸動畫,顯示3660個傷害數字。
如果玩家使用了某些角色的「時空斷裂」功能(類似cod的破門時間),將會使得場上除玩家自身外的時間進入一個接近停滯的狀態,在此狀態下,玩家可以進行多次射擊,在時空斷裂結束後,所有射擊的炮彈同時擊中敵人。所以上面的數字可能不是3660,而是7320、10980。
別說865,你上英偉達RTX也是白給。
至於爵士在崩壞3上的表現,我只能說貴服氪金福利多,羨慕。
更:
我不知道評論裏在對什麼線,還有拿全戰三國舉例的?高貴的hetui用戶人均崩壞3萬氪還是人均全戰三國雙傳奇?全戰三國計算量再大,人家也是PC端i7八核優化了的遊戲,安卓模擬器那效率能比?
話就扔這兒,沒有扛得住崩壞3掉幀炮的cpu,麒麟結果只會更爛。
話說,你們一個個的說得頭頭是道,跟真玩過一樣?
來我讓你對線