天天看點

技術幹貨分享:如何選擇 HTML5 遊戲引擎

原生手遊市場已是紅海,騰訊、網易等寡頭獨霸天下,h5遊戲市場或将成為下一個風口。據筆者所知,很多h5遊戲開發團隊由于選擇引擎不慎導緻項目甚至團隊夭折。如何選擇适合團隊和項目的引擎,筆者通過學習和項目實踐,總結微薄經驗,供大家參考,非技術人員也可以将本篇内容作為引擎選擇的重要關注點。

選擇h5遊戲引擎的思考次元

1、開發語言的支援

2、2d、3d、vr的支援

3、性能

4、引擎的應用廣度

5、設計理念

6、工作流支援力度

7、商業化成熟案例

8、學習資源與技術支援能力

首先,我們要知道,目前主流的遊戲引擎有哪些。由于h5引擎有很多,筆者在這裡進行了精心的篩選,過濾掉不支援webgl的引擎,以及封裝了第三方渲染核心的js架構,和不能直接在浏覽器中運作的js引擎。

為什麼要過濾掉這幾種呢,首先,沒有自己的渲染核心,僅僅是基于第三方的核心作的api封裝,筆者很擔心可持續的性能優化和維護能力。另外,不能在浏覽器中直接運作的js引擎,将限制h5遊戲跨平台的互動能力。還有, 筆者非常看好webgl模式,認為webgl模式才是h5引擎的未來。原因有幾點:

第一、性能,webgl模式遠超canvas數倍。dom模式就不适合用于真正的遊戲開發,更不用提。

第二、3d方向,webgl模式理論上可以制作2d和3d遊戲,canvas和dom模式下隻能制作2d遊戲。

第三、普及率,webgl的普及率已經非常高了,尤其是支援webgl的騰訊tbs-blink核心已在4月19日釋出,并逐漸在微信、qq空間、qq浏覽器、手機qq等app中采用靜默安裝方式全面更新。這個普及率在國内帶來的影響,;你懂的……

1、選擇h5遊戲開發語言

擁有廣泛開發者的h5遊戲開發語言共有三種,分别為flash as3、typescript、javascript。其中flash as3、typescript均屬于面向對象的進階腳本語言,通過編譯器将原項目代碼編譯成javascript代碼檔案運作于浏覽器之中,面向對象的進階語言無論是項目開發管理,還是項目開發的工具環境的成熟度都明顯優于javascript腳本語言,尤其是中大型項目方面,as3等進階語言的效率會更高。

技術幹貨分享:如何選擇 HTML5 遊戲引擎

從上圖看出,支援javascript語言的引擎更多,由于as3語言的編譯器為layabox引擎推出的,是以采用as3作為開發語言的僅有layabox引擎。筆者建議在開發中大型遊戲項目的時候,采用typescript或者是flash as3語言進行開發。如果是小型遊戲,任選其一即可。

2、引擎的未來延續能力

選擇一個引擎,并不是簡單的認為,滿足眼前夠用就可以了,引擎的未來延續能力也是很重要的,這個項目是2d,下個項目想開發3d,如果引擎不支援怎麼辦?去換個引擎?如果vr的機會來了,再想釋出vr版本,這個引擎不支援,需要重新開發嗎?等等問題,作為開發者盡可能要提前想好。

技術幹貨分享:如何選擇 HTML5 遊戲引擎

通過上圖,可以看出,即便是在支援webgl的h5引擎裡,有隻面向2d遊戲的,也有隻面向3d遊戲的,同時支援2d、3d、vr的h5引擎,從目前看隻有layabox與egret引擎。

3、性能是核心需求

性能是h5遊戲面臨的核心門檻,也是很多h5遊戲不被專業玩家認可的重要原因之一。遊戲卡頓,不流暢,這樣的産品體驗很難在激烈競争中生存下來。

h5産業早期的普及階段即将過去,遊戲品質在迅速提高,品質中包括精細的美術和炫酷的動畫等。在複雜的遊戲項目面前,上述種種元素,其流暢體驗度對遊戲引擎是極大的考驗。是以選擇性能優秀的引擎是保證品質的最重要基礎,一定要謹慎。

在遊戲項目研發開始時,一定要先對複雜的子產品做demo測試,特别是帶背景滾動的遊戲。比如橫屏卷軸遊戲,對幀數穩定性要求極高,如果滿足不了性能上的需求,可能會帶來眩暈、眼花、疲倦等不良體驗。

技術幹貨分享:如何選擇 HTML5 遊戲引擎

在webgl的2d渲染性能方面,pixi.js的性能處于目前的頂級。在webgl的3d渲染性能方面,three.js非常優秀。在runtime方面cocos2d-js也有着原生級的表現,經過對比,筆者認為layabox性能的綜合實力最強,在各個渲染領域都保持在html5引擎的頂級水準。當然,上圖僅作為參考,對于任何号稱某個引擎性能最牛的論調,一定要親自進行性能demo的測試對比,而不要輕易采信。

由于性能是遊戲最核心的需求,筆者這裡再多說一句,大型項目在系統複雜度、ui複雜度、動畫顯示數量和種類等方面與小型遊戲項目完全不在一個量級。會涉及到比小遊戲更複雜的性能優化、記憶體管理、資源管理等需求,如果選擇了小馬拉大車的低性能引擎,項目夭折可能性非常大,除非最後項目開發者花大量時間自己優化引擎。是以性能差一點,就會導緻結果差很多,不可主觀想象。

4、與引擎的應用廣度

随着h5遊戲品質提升,在其他領域也具備一定的競争力和價值,一次開發可發行各個領域版本,已成為日漸明确的需求,這裡面包括發行原生app手遊和pc的flash頁遊需求,大統一的引擎時代即将來領。目前最火爆的h5遊戲《傳奇世界h5》據說有40%的收入來自pc網頁。

釋出pc頁遊時,由于pc浏覽器目前對html5相容性不足70%,使用者損耗很大,頁遊聯運平台可能會拒絕或放量很少,隻有采用能同時釋出flash版本的引擎,才能解決這個問題。

技術幹貨分享:如何選擇 HTML5 遊戲引擎

5、設計理念與定位

設計理念是個比較大的話題,也是個很重要的引擎選擇因素,比如引擎是要專注移動端,還是要面向全平台多端遊戲市場。是注重性能,還是注重工具鍊等等。深入了解不同引擎的理念與定位,才能更好的與遊戲産品進行結合。

技術幹貨分享:如何選擇 HTML5 遊戲引擎

上圖内容僅作參考,詳情建議去各引擎官網深入了解。

作為商業級開源引擎,工具鍊的提供與支援也是一種選擇考量要素,比如ui編輯器、粒子編輯器、骨骼編輯器、場景編輯器等等,如果引擎方直接提供或支援,那麼将會較大的提升研發效率。

本文中提到的7個引擎,隻有egret、layabox、cocos2d-js這三個引擎,在工具鍊方面提供足夠全面的支撐。

7、是否有成熟的商業案例

怎麼證明引擎是成熟的?一定要有成熟的商業案例,一般引擎的官網上都會有遊戲案例介紹,我們在選擇引擎之前要進行深入體驗,包括:商業案例的數量、商業案例的種類、穩定性、流暢度(要在低端機裡體驗)、項目複雜度、項目相似度等。如果有一些大型成功案例背書會相對安全可靠些。

從目前的行業案例來看,layabox引擎的mmorpg《醉西遊》、重度動作遊戲《獵刃2》、大型模拟經營遊戲《夢幻家園》等無疑是h5引擎技術的最高水準代表作。但是從卡牌、挂機等類型的付費遊戲總體數量來看,egret引擎明顯占優,充分說明該引擎的市場宣傳力度更勝一籌。

能提供什麼樣的學習資源,以及技術支援,對于開發者也是重要因素,如果你是技術大牛,隻想使用輕量的第三方渲染核心。那麼2d遊戲,pixi.js無疑是首選。3d遊戲,筆者推薦three.js。但是這兩種引擎的學習資料都比較稀少。筆者認為學習資料的完善,以及在學習過程中的技術支援力度,将會很大的幫助你解決引擎使用中的問題。是以,api完善,demo完善,文檔完善,社群的響應速度,交流氛圍,以及qq技術支援等,都可以作為你選擇引擎的因素考量之一。

9、頁遊移植産品的引擎選擇

目前像《醉西遊》等優秀h5産品是flash頁遊或手遊移植而成,移植類的産品在選用引擎時要注意,代碼是否可以直接移植?如果可以,那将節省大量的開發成本。比如flash as3開發的2d或3d頁遊或手遊,可以把邏輯與算法代碼直接拷貝移植到layabox引擎項目中,開發速度提高數倍。

寫在最後:最後提醒一下,千萬不要相信某些引擎的單方宣傳,一定要花一點時間去研究實踐,親自制作demo去作一作對比,動手體驗到的才是真理。

針對demo測試筆者有幾點建議:

====================================分割線================================

繼續閱讀