开发H5游戏引擎的选择:Egret或Laya?
开发H5游戏引擎的选择:Egret或Laya?
一、总结
一句话总结:选laya吧
二、开发H5游戏引擎的选择:Egret或Laya?
一、H5游戏开发的引擎介绍
开发H5游戏的引擎有很多,比如egret、laya、cocos-js等等。这里主要是分析的是egret和laya,因为我们团队是从as3转过来的。所以天然地在有as3基因的egret和laya之中挑选一个。
Egret
Egret Framework是一款使用JavaScript(TypeScript)编写的HTML5开源免费游戏框架。核心定位是开放,高效,优雅。基于它,你可以快速轻松地构建属于自己的HTML5移动游戏。
https://www.egret.com/Laya,这里主要就是LayaAir了。
LayaAir是Layabox旗下第二代HTML5开源引擎,是全球性能最高的HTML5引擎之一。
LayaAir突破性的将2D、3D、AR、VR和页游、Native手游、HTML5游戏等诸多需求通过一个引擎得以统一。目前引擎已被腾讯、Forgame、37玩、仙海、胡莱、蝴蝶互动等200多家知名厂商采用。
http://www.layabox.com/
二、选择引擎的思路
关于egret和laya谁比较好,比较适合。各自的评判的标准都不一样。反正他们都各自说得自己很好,加上本身没有实际用过,所以选择起来看也很为难。
所以这里也只是提出我自己的观点。只是根据具体的项目、团队等情况来做个选择。再者他们官方都有提倡或者标签自己如何高效如何好用,性能怎样怎样。但是没实际踩过那些坑,还真不好评判。
使团队最小代价进行转型,团队原先是AS3页游团队,有丰富的AS3页游开发经验以及相关的代码积累,所以希望能够利用到这些原有的优势,使得能够快速上手,快速出项目。
ActionScript3页游希望有强类型的编程语言,不然纯js这种没强类型的语言,对于开发大型游戏项目来说简直是噩梦。决定使用TypeScript语言
- 有比较完成的工具链,从开发的IDE,到资源制作管理等
- 开放源码,而且有良好的开发文档,有第三方库或者方便支持第三方库
- 活跃的论坛和客服,有问题可以直接进行询问解决实际生产中遇到的问题
三、Egret和Laya的相似性
- 支持TypeScript语言来编写
- 有自带的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
- Laya其实是支持用AS3语言开发,虽然团队有人觉得使用这个不错,成员过渡零成本。但是我还是否决了,觉得再继续写AS3没什么意义了,还是要学一些新的语言活跃思维会更好。当然更重要的是使用通用的TypeScript,也方便移植到其他引擎(这个真的很正确呀)。
六、后记,神转折
上面列了很多理由来让团队选择Laya,好像非常合理,然并卵。在决定使用laya之后,我们快速地开发出了一个aprg的demo,同时移植了as3的基础库和mvc框架。然后没多久,投资运营方要求我们换成Eerget,理由也很简单。运营商那边要求我们使用Egret。因为Egret看起来高大尚很多,各种工具也很齐全(虽然很多工具,但是实际开发,有用的真心不多)。最重要的是他们运营的几款都是基于Egret开发的,他们同时也在同Egret开发产品,为了方便之后的交流以及相关的运营经验,所以要求研发这边使用Egret。
好在,我们前期开发的大部分都是基础库,用的是TypeScript语言,所以切换回Egret的代价也不大,最后,我们采用了Egret作为我们开发H5游戏的引擎,于是开发继续了。
https://blog.csdn.net/sujun10/article/details/72824248
开发H5游戏引擎的选择:Egret或Laya?的更多相关文章
- 如何选择 H5 游戏引擎
原生手游市场已是红海,腾讯.网易等寡头独霸天下,H5游戏市场或将成为下一个风口.据笔者所知,很多H5游戏开发团队由于选择引擎不慎导致项目甚至团队夭折.如何选择适合团队和项目的引擎,笔者通过学习和项目实 ...
- h5游戏引擎有哪些
h5游戏引擎有哪些 一.总结 一句话总结: Layabox Egret Pixi.js Three.js PlayCanvas Cocos2d-js Hilo 1.H5游戏开发语言? Flash_AS ...
- HTML5 游戏引擎的选择
原生手游市场已是红海,腾讯.网易等寡头独霸天下,H5游戏市场或将成为下一个风口.据笔者所知,很多H5游戏开发团队由于选择引擎不慎导致项目甚至团队夭折.如何选择适合团队和项目的引擎,笔者通过学习和项目实 ...
- UWP简单示例(三):快速开发2D游戏引擎
准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...
- 模仿开发H5游戏,看你有多色
开发记录 前言 之前跟着慕课网学习开发H5小游戏开心鱼,勾起我的兴趣. 在写代码的过程中,不怎么会遇到问题.虽然代码是亲手敲出来的,但是由于并没有对游戏的整体思路,所以并不知道开发与优化的过程. 为了 ...
- UWP简单示例(三):快速开发2D游戏引擎
准备 IDE:Visual Studio 图形 API:Win2D MSDN 教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面你需要考虑图形.输入和网络 以及相对独立的 ...
- 一个人独立开发 3D 游戏引擎可能吗?
作者:孙志超链接:https://www.zhihu.com/question/24733255/answer/42000966来源:知乎著作权归作者所有,转载请联系作者获得授权. 当然可以,但难道有 ...
- 用canvas开发H5游戏小记
自神经猫风波之后,微信中的各种小游戏如雨后春笋般目不暇接,这种低成本,高效传播的案例很是受开发者青睐.作为一名前端,随手写个这样的小游戏出来应该算是必备技能吧.恰逢中秋节,部门决定上线一个小游戏,在微 ...
- 如何在Webstorm中添加js库 (青瓷H5游戏引擎)
js等动态语言编码最大的缺点就是没有智能补全代码,webstorm做到了. qici_engine作为开发使用的库,如果能智能解析成提示再好不过了,经测试80%左右都有提示,已经很好了. 其他js库同 ...
随机推荐
- Swift学习——A Swift Tour 枚举和结构体
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/28588095 Enumerations ...
- 007-Shell test 命令,[],[[]]
一.概述 test 命令用于检查某个条件是否成立,它可以进行数值.字符和文件三个方面的测试. 其中[]完全等价于test,只是写法不同.双中括号[[]]基本等价于[],它支持更多的条件表达式,还允许在 ...
- 如何制作一款HTML5 RPG游戏引擎——第二篇,烟雨+飞雪效果
今天我们来实现烟雨+飞雪效果.首先来说,一款经典的RPG游戏难免需要加入天气的变化.那么为了使我们的RPG游戏引擎更完美,我们就只好慢慢地实现它. 本文为该系列文章的第二篇,如果想了解以前的文章可以看 ...
- win下如何解决在chrome的同源访问问题
引子:本来是想验证如果在网页中包含多个框架,那么就会存在两个以上的不同全局环境,如果从一个框架引用另一个框架的数据比如数组a,那么用 instanceof 判断这个数组a是不是另个框架Array的实例 ...
- GlusterFS部署
一.GlusterFS简介 PB级容量.高可用.读写性能.基于文件系统级别共享.分布式.无metadata(元数据)的存储方式. GlusterFS(GNU ClusterFile System)是一 ...
- math.h函数库
C语言中之数学函数 C语言提供了以下的数学函数,要使用这些函数时,在程序文件头必须加入: #include <math.h> 编译时,必须加上参数「-lm」(表示连结至数学函式库),例如「 ...
- Java中树和树的几种常规遍历方法
其中包含有先序遍历.中序遍历.后序遍历以及广度优先遍历四种遍历树的方法: package com.ietree.basic.datastructure.tree.binarytree; import ...
- 模块讲解----sys
sys:跟python解释器相关的信息 #命令行参数list,第一个元素时程序本身路径 print(sys.argv) 注意:执行脚本时,可以传参数. #退出程序,正常退出时exit(0) sys.e ...
- JDB调试代码 20165324 何春江
Java书本程序调试: 课上程序调试
- eclipse 编译的时候 自动把SDK需要放入libs里面的so文件给删除了
解决方法: 右击Project,选Properties->Builders, 把CDT Builder 关掉. 这样就不会编译了.包括c++的代码也不会编译.. 治标不治本啊...以后c++代码 ...