開發H5游戲引擎的選擇:Egret或Laya?


一、H5游戲開發的引擎介紹

開發H5游戲的引擎有非常多,比方egret、laya、cocos-js等等。這里主要是分析的是egret和laya,由於我們團隊是從as3轉過來的。

所以天然地在有as3基因的egret和laya之中挑選一個。

  1. Egret

    Egret Framework是一款使用JavaScript(TypeScript)編寫的HTML5開源免費游戲框架。核心定位是開放,高效,優雅。基於它,你能夠高速輕松地構建屬於自己的HTML5移動游戲。


    https://www.egret.com/

  2. Laya,這里主要就是LayaAir了。

    LayaAir是Layabox旗下第二代HTML5開源引擎,是全球性能最高的HTML5引擎之中的一個。
    LayaAir突破性的將2D、3D、AR、VR和頁游、Native手游、HTML5游戲等諸多需求通過一個引擎得以統一。眼下引擎已被騰訊、Forgame、37玩、仙海、胡萊、蝴蝶互動等200多家知名廠商採用。


    http://www.layabox.com/

二、選擇引擎的思路

關於egret和laya誰比較好。比較適合。

各自的評判的標准都不一樣。反正他們都各自說得自己非常好,加上本身沒有實際用過,所以選擇起來看也非常為難。


這里寫圖片描寫敘述
所以這里也僅僅是提出我自己的觀點。僅僅是依據詳細的項目、團隊等情況來做個選擇。再者他們官方都有提倡或者標簽自己如何高效如何好用,性能如何如何。可是沒實際踩過那些坑,還真不好評判。

  1. 使團隊最小代價進行轉型,團隊原先是AS3頁游團隊,有豐富的AS3頁游開發經驗以及相關的代碼積累,所以希望能夠利用到這些原有的優勢,使得能夠高速上手。高速出項目。
    ActionScript3頁游ActionScript3頁游

  2. 希望有強類型的編程語言。不然純js這樣的沒強類型的語言,對於開發大型游戲項目來說簡直是噩夢。

    決定使用TypeScript語言

  3. 有比較完畢的工具鏈。從開發的IDE,到資源制作管理等
  4. 開放源代碼,並且有良好的開發文檔。有第三方庫或者方便支持第三方庫
  5. 活躍的論壇和客服,有問題能夠直接進行詢問解決實際生產中遇到的問題

三、Egret和Laya的類似性

  1. 支持TypeScript語言來編寫
  2. 有自帶的IDE工具。能夠進行斷點調試,帶有Web服務和二維碼。

    都是基於Visual Studio Code這個工具進行擴展的,所以兩者長得非常像。左邊是Egret,右邊是Laya Air
    這里寫圖片描寫敘述

這里寫圖片描寫敘述
3. 都是對AS3程序友好。egret是非常大部分繼承as3系統。as3上大部分api它都有。laya也算是大部分繼承as3。經典經常使用的類都有。

以下是AS3、Egret、Laya的部分API圖
這里寫圖片描寫敘述
兩者的渲染體系以及基礎API都非常類似,原來的AS3程序猿能夠輕松上手。
4. 都有支持AS3代碼直接轉TypeScript的工具(后來實際使用發現這個轉換工具沒什么用,最后移植的代碼都是純手打)

四、Egret和Laya的狀況

egret成名比較早,發展得比較快,各方面的資源而比較多。也有大神的添加,利用它開發游戲的廠商也會比較多。

配套也比較齊全。各種工具都有,可是給人感覺是大而不精的樣子。都有各種各樣的問題。

IDE Wing以及TextureMerger比較經常使用。其它的僅僅有依據項目須要的時候才會用。

laya相對出名比較晚,工具和資金也會相對缺乏一些。

五、終於選擇

說真的。Egret當時也是認為非常好。經過網上相關資料搜尋比較和細致考慮。終於選擇了Laya。僅僅能依據搜索一些信息來綜合評價。感覺感性會多一些。

說下主要原因:
1. laya的社區比較活,客服回復速度快,有問題直接問客服。那邊也積極回答。


2. 從網上得到的一些消息,都是說egert做小游戲的比較多,做大型的游戲的話,還是laya好一點。並且官方也說專門做大型游戲的。

(這點沒經考證的。網上據說)
3. 另外一個決定因素是我們之前as3頁游的時候。ui框架是採用mornui。

laya官方自帶就是mornui。加上我們用egret的時候。非常不習慣他們的eui框架。

(我認為這個是最基本的原因。其它的性能什么的,終於都是編譯h5,所以預計區別不會非常大。剩下的就是開發體驗和ui工具的便捷性了)
4. 感覺盡管laya非常大程度模仿了as3的api。可是會對當中一些繁瑣的部分進行了優化和改進。使用起來也方便和舒服非常多。

比方事件監聽相當簡潔 on和off取代了以及添加了once

Egret代碼: egret.IEventDispatcher

public addEventListener( type:string,listener:Function ,thisObject:any ,useCapture:boolean ,priority:number ):void
public removeEventListener( type:string,listener:Function ,thisObject:any ,useCapture:boolean ):void

再看Laya的代碼:laya.events.EventDispatcher

public on(type:String, caller:*, listener:Function, args:Array = null):EventDispatcher
public off(type:String, caller:*, listener:Function, onceOnly:Boolean = false):EventDispatcher
  1. Laya事實上是支持用AS3語言開發,盡管團隊有人認為使用這個不錯,成員過渡零成本。可是我還是否決了,認為再繼續寫AS3沒什么意義了。還是要學一些新的語言活躍思維會更好。當然更重要的是使用通用的TypeScript。也方便移植到其它引擎(這個真的非常正確呀)。

六、后記。神轉折

上面列了非常多理由來讓團隊選擇Laya。好像非常合理。然並卵。

在決定使用laya之后,我們高速地開發出了一個aprg的demo,同一時候移植了as3的基礎庫和mvc框架。然后沒多久,投資運營方要求我們換成Eerget,理由也非常easy。運營商那邊要求我們使用Egret。由於Egret看起來高大尚非常多,各種工具也非常齊全(盡管非常多工具。可是實際開發,實用的真心不多)。最重要的是他們運營的幾款都是基於Egret開發的,他們同一時候也在同Egret開發產品,為了方便之后的交流以及相關的運營經驗,所以要求研發這邊使用Egret。
這里寫圖片描寫敘述
好在,我們前期開發的大部分都是基礎庫,用的是TypeScript語言,所以切換回Egret的代價也不大。最后,我們採用了Egret作為我們開發H5游戲的引擎。於是開發繼續了。
這里寫圖片描寫敘述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM