开发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移动游戏。
    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页游

  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,理由也很简单。运营商那边要求我们使用Egret。因为Egret看起来高大尚很多,各种工具也很齐全(虽然很多工具,但是实际开发,有用的真心不多)。最重要的是他们运营的几款都是基于Egret开发的,他们同时也在同Egret开发产品,为了方便之后的交流以及相关的运营经验,所以要求研发这边使用Egret。

好在,我们前期开发的大部分都是基础库,用的是TypeScript语言,所以切换回Egret的代价也不大,最后,我们采用了Egret作为我们开发H5游戏的引擎,于是开发继续了。

 
参考:开发H5游戏引擎的选择:Egret或Laya? - 弃天笑的程序世界 - CSDN博客
https://blog.csdn.net/sujun10/article/details/72824248
 

开发H5游戏引擎的选择:Egret或Laya?的更多相关文章

  1. 如何选择 H5 游戏引擎

    原生手游市场已是红海,腾讯.网易等寡头独霸天下,H5游戏市场或将成为下一个风口.据笔者所知,很多H5游戏开发团队由于选择引擎不慎导致项目甚至团队夭折.如何选择适合团队和项目的引擎,笔者通过学习和项目实 ...

  2. h5游戏引擎有哪些

    h5游戏引擎有哪些 一.总结 一句话总结: Layabox Egret Pixi.js Three.js PlayCanvas Cocos2d-js Hilo 1.H5游戏开发语言? Flash_AS ...

  3. HTML5 游戏引擎的选择

    原生手游市场已是红海,腾讯.网易等寡头独霸天下,H5游戏市场或将成为下一个风口.据笔者所知,很多H5游戏开发团队由于选择引擎不慎导致项目甚至团队夭折.如何选择适合团队和项目的引擎,笔者通过学习和项目实 ...

  4. UWP简单示例(三):快速开发2D游戏引擎

    准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...

  5. 模仿开发H5游戏,看你有多色

    开发记录 前言 之前跟着慕课网学习开发H5小游戏开心鱼,勾起我的兴趣. 在写代码的过程中,不怎么会遇到问题.虽然代码是亲手敲出来的,但是由于并没有对游戏的整体思路,所以并不知道开发与优化的过程. 为了 ...

  6. UWP简单示例(三):快速开发2D游戏引擎

    准备 IDE:Visual Studio 图形 API:Win2D MSDN 教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面你需要考虑图形.输入和网络 以及相对独立的 ...

  7. 一个人独立开发 3D 游戏引擎可能吗?

    作者:孙志超链接:https://www.zhihu.com/question/24733255/answer/42000966来源:知乎著作权归作者所有,转载请联系作者获得授权. 当然可以,但难道有 ...

  8. 用canvas开发H5游戏小记

    自神经猫风波之后,微信中的各种小游戏如雨后春笋般目不暇接,这种低成本,高效传播的案例很是受开发者青睐.作为一名前端,随手写个这样的小游戏出来应该算是必备技能吧.恰逢中秋节,部门决定上线一个小游戏,在微 ...

  9. 如何在Webstorm中添加js库 (青瓷H5游戏引擎)

    js等动态语言编码最大的缺点就是没有智能补全代码,webstorm做到了. qici_engine作为开发使用的库,如果能智能解析成提示再好不过了,经测试80%左右都有提示,已经很好了. 其他js库同 ...

随机推荐

  1. notepade++使用

    Notepad++也可以实现双视图/双窗口对比显示,目前最新版本(6.32)只能支持双视图显示,而且只能支持左右视图,希望后续版本能得到改进. 我们打开两个需要对比显示的源文件 默认的情况下是分成了两 ...

  2. PAT 1059 Prime Factors[难]

    1059 Prime Factors (25 分) Given any positive integer N, you are supposed to find all of its prime fa ...

  3. Jenkins节点配置页面,启动方法没有"Launch agent via Java Web Start"解决方法?

    Jenkins的配置从节点中默认没有Launch agent via JavaWeb Start,解决办法: 步骤: 1:打开"系统管理"——"Configure Glo ...

  4. Code signing is required for product type 'Application' in SDK 'iOS 11.2'

    在打包的时候出现这样一个错误,Code signing is required for product type 'Application' in SDK 'iOS 11.2'  ,就是说代码签名证书 ...

  5. python字符串的操作(去掉空格strip(),切片,查找,连接join(),分割split(),转换首字母大写, 转换字母大小写...)

    #可变变量:list, 字典#不可变变量:元祖,字符串字符串的操作(去掉空格, 切片, 查找, 连接, 分割, 转换首字母大写, 转换字母大小写, 判断是否是数字字母, 成员运算符(in / not ...

  6. J2Cache 和普通缓存框架有何不同,它解决了什么问题?

    不少人看到 J2Cache 第一眼时,会认为这就是一个普普通通的缓存框架,和例如 Ehcache.Caffeine .Spring Cache 之类的项目没什么区别,无非是造了一个新的轮子而已.事实上 ...

  7. SqlMapConfig.xml配置

    总结自:https://blog.csdn.net/d582693456/article/details/79886780 SqlMapConfig.xml是mybatis的核心配置 properti ...

  8. 20145313张雪纯 《Java程序设计》第6周学习总结

    20145313张雪纯 <Java程序设计>第6周学习总结 教材学习内容总结 将数据从来源中取出,可以使用输入串流:将数据写入目的地,可以使用输出串流. 输入串流代表对象为java.io. ...

  9. 20145324 《Java程序设计》第9周学习总结

    20145324 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作 ...

  10. 20145328 《Java程序设计》第8周学习总结

    20145328 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO与NIO2 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供了clear(),re ...