來做款重度小遊戲

遊資網發表於2020-11-03
在小遊戲開發過程中,過往我們和開發者們分享過CPU、GPU以及記憶體的多方面優化。但當開發者面對的或者籌備中的是一款重度的小遊戲時,單點的優化就顯得無法滿足需求。

例如在小遊戲《軒轅傳奇》優化前,遊戲功能已經做得非常完善,無論從頂點數、還是三角形面數、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

相關文章