遊戲效能 掉幀,記憶體過高 問題

2021-08-08 19:56:42 字數 767 閱讀 8867

前兩個星期懇求乙個顯示器,好緩解我的眼睛疲勞問題。今天居然直接給我配了個蘋果一體機。。。。(因為沒有多餘的顯示器+該mac無人使用)

近期由於新遊剛上線,暴露出來的問題不少,上頭在寫新需求的同時給我分配了幾個效能優化的工作,具體就是爭取降低記憶體占用以及避免掉幀。

網上結合書本研究了下cocos的大致渲染流程和機制,除了預設的「同一層級按先新增先繪製的佇列順序」,然後便是orderofarrival < localzorder < globalzorder的排序方式進行渲染。其中localzorder是同一層級有效,中序遍歷;global則是全域性有效,數值小的先繪製(好像是),這裡的話可以參照cocos的node.h原始碼,注釋寫的很清楚。

對遊戲過程中的gl calls次數進行監測後,發現自己搶完地主之後在牌上新增的地主標記重複繪製了n次,draw call次數增加了一倍。將標記的打包到牌型資源中之後,在addchild時多設定一項localzorder便解決了問題。

這裡提一點,目前cocos已經將spritebatchnode的功能加入到渲染流程中了,即連續、相同材質的精靈只繪製一次,碰到下乙個不同材質的,才會開始繪製在此之前的所有精靈。因此只要紋理相同,我們只需保證zorder一致並且處於同一層級即可。

老實說我並不是因為沒有c幣了才來寫部落格,我想到需要記下今天的工作的原因有倆:

一、最近狀態不是很好,學習的慾望在眼睛疲勞的影響下有所減弱,效率並不是很高。

二、出於執行環境的問題,效能優化在手遊開發過程中總是值得被一遍遍強調。手段有很多種需要摸索(自定義渲染流程,優化美術資源,及時清理快取等)。

遊戲效能優化(基礎)

資源在遊戲中會大量頻繁地使用,而在記憶體中是按照2的冪次方來載入的,例如一張大小是2020畫素的,在程式執行中是按照3232來處理的,而且從磁碟上載入每一張都屬於io操作,非常耗費cpu時間,尤其是在android的低端裝置上。所以通過打包工具 例如texturepacker 把多張小合併到一張大圖...

mysql 遊戲 知乎 遊戲效能優化雜談(七)

當代的遊戲引擎,cpu端的乙個主要工作其實就是在進行遊戲當中諸多actor的生命週期管理。遊戲相對於其它軟體的乙個顯著特點是,它的執行就是為了呈現。普通軟體注重的是功能和業務流,完成既定任務是軟體的主要目的 但是遊戲軟體的目的就是呈現。因此,聰明地 對遊戲場景以及actor進行管理,對於遊戲的整體效...

網路遊戲效能測試的幾點想法

進入遊戲行業也有一段時間了,在日常的工作中對遊戲的效能測試也產生了一些想法,因此寫出來與大家討論討論。網路遊戲行業現在越做越大,面也越來越廣了,依我的觀點主要分為以下幾個方面 1 傳統的c s架構的網路遊戲 2 現在越來越風靡的b s架構的網路遊戲 3 越來越多的wap網路遊戲 那麼我接下來就上面所...