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,麒麟結果只會更爛。

話說,你們一個個的說得頭頭是道,跟真玩過一樣?

來我讓你對線


原來你知道這玩意兒叫掉幀炮啊?你猜它為什麼叫掉幀炮?別說A13、990、865了,就是9900K,線程撕裂者都得卡你懂嗎?拿崩壞三測試就算了,用掉幀炮測手機性能?你咋不用超算呢


現在配置2700x+rx580,別說掉幀炮,我空之律者來個虛界降臨有時都會卡爆,想必mate 30 pro的處理器戰力已經超過amd的桌面級處理器和顯卡了。可喜可賀,可喜可賀啊。


很丟臉嗎?

你拿2080ti都扛不住的東西。

小米10要真扛住了,建議N家和A家當場去世。

I家別笑!你也好不到哪去!


推薦閱讀:
相關文章