來做款重度小遊戲
例如在小遊戲《軒轅傳奇》優化前,遊戲功能已經做得非常完善,無論從頂點數、還是三角形面數、drawcall而言,幾乎是普通小遊戲的10倍、100倍,甚至上千倍,在這種情況下就無法通過單點的某一個函式優化讓它的幀率達到理想的提升,在小遊戲開發者學院第二季第三講中,微信公開課講師為大家帶了這種情況的全方位解決方案。
傳統效能架構的天花板
在解決效能問題之前,必須搞清楚我們面對的困難是什麼?如下圖左側所示是一款外部小遊戲框架架構圖。
其中游戲引擎中的邏輯佔了整體耗時的 80%,反而是遊戲玩法部分只佔了 20%。這是因為第三方引擎在 JS 側需要做大量的計算工作,需要把開發者在 JS 側發出的玩法請求給發已成 GL 渲染介面。由於這中間的過程極其複雜,同時 GL 介面繁瑣,iOS 上沒有 JIT,多種因素共同導致了傳統小遊戲架構執行效率低的問題。這也是我們常說的 H5 遊戲的效能天花板。
完整小遊戲效能優化方案
在針對重度小遊戲的效能優化上,我們拋棄了舊的架構,通過統一新方案來實現,方案中包含了遊戲生產所需要的各種基本能力。在新方案中,我們也提供配套的各種開發工具及介面能力。從而使得用這套小遊戲效能優化方案的遊戲,預估能得到3倍以上的效能提升。
在方案的應用上,已經有《神廟逃亡》以及上面提到的《軒轅傳奇》等多款小遊戲選擇了我們的效能優化方案來進行遊戲效能的提升。在《神廟逃亡》這樣的重度遊戲優化中,傳統方案在比如實時陰影、光照等方面需要花很大的力氣去優化,但是在我們的新框架下則無縫銜接,可以直接享受到方案的便捷。
可以期待,會有更多的MOBA、MMO、FPS射擊等型別的遊戲在小遊戲的中出現!
新方案、新架構、新挑戰
同時,新的架構也確實會帶來新的挑戰,拋棄了原有架構,確實會帶來新的成本。一方面是新架構、新介面會有學習成本。另一方面是因為新介面、新架構都在高速迭代中,所以對開發者的能力有了更高的要求。面對這些挑戰,平臺會從幾方面考量:
● 不斷完善文件,降低工具鏈的應用性,降低開發者進入門檻;
● 創造溝通機會,歡迎想要接入的遊戲團隊,通過各種各樣的渠道向我們諮詢。同時我們也會通過更多場景主動的像大家展示相關的操作。
效能優化方案原理剖析
小遊戲效能優化方案的原理和結構主要包括:整體架構、邏輯加速模組、渲染加速模組。
01、整體架構
如上圖所示,左邊是老的外部GL小遊戲框架,右側是小遊戲效能方案的整體架構,主要有兩個模組的新增,分別是邏輯加速模組和渲染加速模組。
它的思路很簡單,就是下沉,下沉了以後就可以帶來遊戲的效能提升。它具備高效能、易用性強、跨平臺、功能全的幾大特點。
02、邏輯加速
在這一模組,我們下沉了對於邏輯上比較有用的計算量很大的模組,比如節點樹,比如骨骼和物理,在渲染方面,對渲染的API進行了抽象,包括對渲染物件進行合批。基本上游戲生產鏈上所有你想要的常用功能都已經做了打包式的優化。
首先是節點樹的遍歷問題,當節點樹非常多的時候就會產生效能的瓶頸,比如MMO這樣的遊戲節點樹多的時候可以達到十萬甚至幾十萬的量級,在這種量級情況下,如果在JS側,去遍歷10萬節點樹的話是不可想象的。
所以這些效能瓶頸就需要我們做優化,整個效能方案裡也充分考量這一點,節點樹的下沉也是我們優先考量的要點,我們也通過以下三個模組來實現。
通過該模組的效能優化,開發者可以獲得:
● 節點樹遍歷效能大大提升
● 骨骼動畫效能提升 10 倍以上
● 物理模擬效能提升 2-3 倍
03、渲染加速
渲染也是我們強考量的一個模組。老的架構中使用的是WebGL,但是當到達了JS的平臺以後,由於JS和C++的互動是有成本的,每一次訪問都會有額外耗時,那麼就導致想要進行一次流水線的繪製需要呼叫外部介面相當多。這在重度遊戲,尤其10萬節點的遊戲來說,是完全無法接受的,因此只能摒棄GL介面。
摒棄了 GL 介面後,我們提供了全新的渲染介面。
- 全新的渲染 API,參考了 Vulkan/Metal 等新一代圖形 API 的設計。對於渲染流水線進行了新的抽象,可以大大降低渲染流水線的介面呼叫量,減少 JS 和 C++ 之間的互動成本。
- 除此之外,我們還在基礎渲染介面的基礎上又封裝了一層。讓渲染介面和渲染節點繫結。JS 層可以配置和修改每個渲染節點的渲染流水線,在配置後,C++ 可以無需任何 JS 互動的情況下,直接遍歷執行每個渲染節點的流水線。進一步減少 JS 互動。
看到這裡相信大家已經小遊戲效能優化方案有了一定的瞭解,下圖是整個效能方案的整體架構。除了邏輯加速層、渲染加速層,還有大量的 JS 配套能力,整體是一套非常大的系統。我們在盡己所能地提供完備的開發體系,儘可能降低遊戲開發者的接入成本。
來源:做個小遊戲
原文:https://mp.weixin.qq.com/s/bH06vgYCaQwDQQj1zvpz9g
相關文章
- 位元組跳動的16款重度遊戲遊戲
- 17款小遊戲進入阿拉丁4月榜單 中重度小遊戲長線運營能力凸顯遊戲
- AI時代,6小時做一款遊戲!AI遊戲
- 微信和QQ上重度小遊戲趨同 拉環解謎再出新爆款遊戲
- 2月版號月報:106款遊戲過審,重度遊戲不吃香了?遊戲
- 英雄聯盟官方小遊戲登陸微信 爆款IP的小遊戲該如何做?遊戲
- 小CP做遊戲的新思路遊戲
- 位元組跳動發行的3款中重度遊戲大火,首款自研已在路上遊戲
- 位元組跳動頻出爆款休閒遊戲,進軍重度遊戲將成敗幾何?遊戲
- 重度遊戲的護城河:管線遊戲
- 是什麼讓你做的小遊戲聽起來怪怪的?遊戲
- 回憶小時的快樂,利用python做一款數字猜謎小遊戲Python遊戲
- 海外產品衝擊國內榜單 微信中重度小遊戲回暖遊戲
- 這款來自未來的遊戲,能否引發VR遊戲的浪潮?遊戲VR
- 深挖1元低價高頻付費,重度小遊戲內容打磨策略遊戲
- 互動答題小遊戲怎麼做?遊戲
- 小遊戲應該如何做運營遊戲
- 微信互動小遊戲:有創意的抽獎小遊戲怎麼做?遊戲
- 重度遊戲成銀髮網民新寵遊戲
- 位元組跳動第一款月流水1.5億的重度遊戲誕生!遊戲
- 做一款3A遊戲,到底要花多少錢?遊戲
- 白鷺引擎王澤:巧用Webpack與EUI Compiler改善重度小遊戲開發效率WebUICompile遊戲開發
- 打造爆款小遊戲和休閒遊戲的“六脈神劍”遊戲
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發
- 《中重度手遊報告》:SLG策略遊戲市場洞察遊戲
- 一款66MB的射箭小遊戲,可以讓你玩得停不下來遊戲
- 連發3款中重度遊戲後,朝夕光年悄悄殺進了發行商Top20遊戲
- 《月圓之夜》製作人:小學時做自己的遊戲,如今在遊戲裡做一點自己遊戲
- 鄒偉:如何開發一款小遊戲遊戲
- 快手中重度遊戲發行實力到底如何?遊戲
- Steam動漫遊戲節來襲,超170款遊戲狂歡不停!遊戲
- 以遊戲化思維來做運營工作遊戲
- 10天,做一款Among Us-Like多人遊戲遊戲
- 在哥倫比亞,做一款日式RPG遊戲遊戲
- 靠捐助做遊戲:小團隊開始選擇Patreon來獲取資金支援遊戲
- 對話優選 | DAU超190萬 Voodoo首款微信小遊戲是如何做的?Odoo遊戲
- 30多年IP+科幻題材+SLG,朝夕光年這款重度手遊還能「輕」下來嗎?
- 位元組跳動2020年第一款重度遊戲:在老路上謹慎試水遊戲