开发H5游戏引擎的选择:Egret或Laya?
开发H5游戏引擎的选择:Egret或Laya?
⼀、总结
⼀句话总结:选laya吧
⼆、开发H5游戏引擎的选择:Egret或Laya?
⼀、H5游戏开发的引擎介绍
开发H5游戏的引擎有很多,⽐如egret、laya、cocos-js等等。这⾥主要是分析的是egret和laya,因为我们团队是从as3转过来的。所以天然地在有as3基因的egret和laya之中挑选⼀个。
1. Egret
Egret Framework是⼀款使⽤JavaScript(TypeScript)编写的HTML5开源免费游戏框架。核⼼定位是开放,⾼效,优雅。基于它,
你可以快速轻松地构建属于⾃⼰的HTML5移动游戏。
2. Laya,这⾥主要就是LayaAir了。
LayaAir是Layabox旗下第⼆代HTML5开源引擎,是全球性能最⾼的HTML5引擎之⼀。
LayaAir突破性的将2D、3D、AR、VR和页游、Native⼿游、HTML5游戏等诸多需求通过⼀个引擎得以统⼀。⽬前引擎已被腾
讯、Forgame、37玩、仙海、胡莱、蝴蝶互动等200多家知名⼚商采⽤。
⼆、选择引擎的思路h5平台源码下载
关于egret和laya谁⽐较好,⽐较适合。各⾃的评判的标准都不⼀样。反正他们都各⾃说得⾃⼰很好,加上本⾝没有实际⽤过,所以选择起来看也很为难。
所以这⾥也只是提出我⾃⼰的观点。只是根据具体的项⽬、团队等情况来做个选择。再者他们官⽅都有提倡或者标签⾃⼰如何⾼效如何好⽤,性能怎样怎样。但是没实际踩过那些坑,还真不好评判。
1. 使团队最⼩代价进⾏转型,团队原先是AS3页游团队,有丰富的AS3页游开发经验以及相关的代码积累,所以希望能够利⽤到这些原有的优
势,使得能够快速上⼿,快速出项⽬。
ActionScript3页游
2. 希望有强类型的编程语⾔,不然纯js这种没强类型的语⾔,对于开发⼤型游戏项⽬来说简直是噩梦。决定使⽤TypeScript语⾔
3. 有⽐较完成的⼯具链,从开发的IDE,到资源制作管理等
4. 开放源码,⽽且有良好的开发⽂档,有第三⽅库或者⽅便⽀持第三⽅库
5. 活跃的论坛和客服,有问题可以直接进⾏询问解决实际⽣产中遇到的问题
三、Egret和Laya的相似性
1. ⽀持语⾔来编写
2. 有⾃带的IDE⼯具,可以进⾏断点调试,带有Web服务和⼆维码。都是基于这个⼯具进⾏扩展的,所以两者长得⾮常像。左边是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,理由也很简单。运营商那边要求我们使⽤Egret。因为Egret看起来⾼⼤尚很多,各种⼯具也很齐全(虽然很多⼯具,但是实际开发,有⽤的真⼼不多)。最重要的是他们运营的⼏款都是基于Egret开发的,他们同时也在同Egret开发产品,为了⽅便之后的交流以及相关的运营经验,所以要求研发这边使⽤Egret。
好在,我们前期开发的⼤部分都是基础库,⽤的是TypeScript语⾔,所以切换回Egret的代价也不⼤,最后,我们采⽤了Egret作为我们开发H5游戏的引擎,于是开发继续了。
参考:开发H5游戏引擎的选择:Egret或Laya? - 弃天笑的程序世界 - CSDN博客blog.csdn/sujun10/article/details/72824248