开发H5牛牛大厅游戏引擎的选择:Egret或Laya?

Q1446595067官网:h5.haozibbs.com
一、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页游ActionScript3页游

希望有强类型的编程语言,不然纯js这种没强类型的语言,对于开发大型游戏项目来说简直是噩梦。决定使用TypeScript语言
有比较完成的工具链,从开发的IDE,到资源制作管理等
开放源码,而且有良好的开发文档,有第三方库或者方便支持第三方库
活跃的论坛和客服,有问题可以直接进行询问解决实际生产中遇到的问题

三、Egret和Laya的相似性

支持TypeScript语言来编写
有自带的IDE工具,可以进行断点调试,带有Web服务和二维码。都是基于Visual Studio Code这个工具进行扩展的,所以两者长得非常像。左边是Egret,右边是Laya Air
这里写图片描述

这里写图片描述

  1. 都是对AS3程序友好。egret是很大部分继承as3系统,as3上大部分api它都有。laya也算是大部分继承as3,经典常用的类都有。下面是AS3、Egret、Laya的部分API图
    这里写图片描述
    两者的渲染体系以及基础API都非常类似,原来的AS3程序员可以轻松上手。
  2. 都有支持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

1

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

1

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

public on(type:String, caller:*, listener:Function, args:Array = null):EventDispatcher

1

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游戏的引擎,于是开发继续了。
这里写图片描述

原文地址:http://blog.51cto.com/13595268/2068428

时间: 2024-08-04 23:51:48

开发H5牛牛大厅游戏引擎的选择:Egret或Laya?的相关文章

手游开发攻防——一、游戏引擎的选择

现在手游火的一塌糊涂,引擎也是层出不穷除了引领3D市场的Unity3D,独霸2D市场的Cocos2D-X之外,还有虚幻.Sphinx等,甚至搜狐也开发了国产的Genesis-3D引擎. 其它的不多少,这里主要就对比Unity3D和Cocos2D-X,帮助大家选择. 如果你想开发一个2D游戏,有着C++/C/LUA之一的基础,那么Cocos2D-X也许比较适合你.他本身就为2D游戏设计,有着丰富的源码.实例和教程文档.你可以得到社区的大力支持. 如果你想开发一个3D或2D游戏,有着面向对象编程语言

新大番薯棋牌牛牛源码安装搭建 微信h5牛牛大厅开发选择方式

一个完整的客户端棋牌游戏从结构上包括了游戏.游戏大厅.游戏网站.客户端等部分,如果把做棋牌游戏比作建房子,那打造一个自己的棋牌之家就得经过前期的规划设计,中期的建筑施工,后期的装修设计等环节,有的人建房子可能会亲力亲为,有的人为了省钱而去购买小产权房或二手房,更多的人则选择开发商购买商品房.本质上,做棋牌游戏基本也是如此,无论个人还是团队企业,在当前日渐成熟的网络棋牌游戏市场,新大番薯棋牌牛牛源码安装搭建(h5.maliwl.com) 微信h5牛牛大厅开发选择方式   ,要想涉足无非也是以下这几

android网络游戏开发——客户端开发——游戏引擎的选择

就在上次说了想写一款手机端的网络游戏之后,我就开始着手准备一些资料和搭建开发环境,由于在之前开发了一个基于java的C/S的题库程序,游戏的网络通信这一块的技术算是有点准备了,但是还是有很多的不确定性因素,这些因素主要来自客户端和服务器端的开发语言的选择上. 对于客户端来说,因为客户端的开发是如果不选择已经有的游戏引擎的话,那么开发是非常耗时间的,所以客户端的开发肯定是要在一个开源的游戏引擎上面进行,所以如果客户端和服务器端的语言不一样的话,可能出现相同的数据类型所占的字节数不同,那么就可能出现

为什么游戏引擎大多选择使用 c++ 而不是 c 开发?

为什么那些引擎选择 C++ 而不是 C,或者说在游戏引擎的开发中有哪些功能.特性是可以通过 C++ 开发而不可以通过 C 的? 我也曾经试着用C写,可结果发现开发效率.代码可读性,都不是一个档次的.最后才明白,发明C++的人确实是为了解决一些问题,而不是闲的蛋疼. 如何成为一个优秀的高级C++程序员当初我是非常讨厌C++语言的,我认为C++能做的C都能做,它只是个语法糖而已,简单才是最美的,为什么我要去浪费时间研究那些诡异的特性. 后来慢慢的我对C++的态度变了,现在我觉得C++虽然不完美,但是

VC++实战《星际传奇》网游课程第一部分网络游戏开发基础篇(游戏引擎设计)

本系列课程基于最新的DirectX11接口进行深入细致的讲解,内容涉及D3D11原理与应用.DirectInput.DirectSound等: 教程中专门针对新兴的D3D11接口展开深入的讲解,详细讲解了D3D11渲染管线.DirectComputer(参看<VC++游戏开发系列之Directcomputer并行计算原理与实践--DX11游戏实战开发>).Tessellation.多线程渲染.Shader动态链接等新内容.新知识.并且基于这些内容的基础,更进一步讲解了光照模型原理及实现.高级的

手机游戏引擎的选择--学习游戏开发Cocos2d-x和Unity3D/2D哪个前景更好?更易上手?

现在手游火的一塌糊涂,引擎也是层出不穷除了引领3D市场的Unity3D,独霸2D市场的Cocos2D-X之外,还有虚幻.Sphinx等,甚至搜狐也开发了国产的Genesis-3D引擎. 其它的不多说,这里主要就对比Unity3D和Cocos2D-X,帮助大家选择. 如果你想开发一个2D游戏,有着C++/C/LUA之一的基础,那么Cocos2D-X也许比较适合你.他本身就为2D游戏设计,有着丰富的源码.实例和教程文档.你可以得到社区的大力支持. 如果你想开发一个3D或2D游戏,有着面向对象编程语言

用TypeScript开发了一个网页游戏引擎,开放源代码

最开始学习电脑编程的原动力之一就是想自己编写游戏,一方面很好奇这些游戏是怎么做出来的,另一方面觉得有些地方设计的不合理,希望电脑游戏既能让人玩的有趣,又不浪费时间. 学校五年,毕业十年,学用了十多种编程语言.期间有过几次做游戏的尝试,但由于很难驾驭游戏程序的复杂度,都半途而废了.今年1月份看了一本书之后,重新激发了我做游戏的欲望. 这本书的名字叫<Building JavaScript Games>,书里面讲了如何利用HTML5技术在网页上绘制图片,播放声音,处理键盘和鼠标输入,让图像动起来等

开发h5斗地主大厅算法——第十二章の主动出牌(1)

本章开始,我们介绍主动出牌的算法,和被动出牌类似,我们第一步把主要架子搭起来. 首先清空出牌序列 [cpp] view plain copy clsHandCardData.ClearPutCardList(); 主动出牌的策略按照优先级大体可以分为三类: [一]能直接一手牌出去,优先出. [二]两手牌出去且有绝对大牌,先出绝对大牌. [三]出一手牌使得接下来自己手牌价值最大化. [cpp] view plain copy //剪枝:如果能出去最后一手牌直接出 CardGroupData Sur

游戏引擎cocos2d-js和egret 对比

目前项目组的游戏开发都已经完成,准备开下一个项目.因为产品制作人想要兼容html5,备用的引擎有cocos2d-js和egret,下面就简单的来看看这两个引擎. cocos2dx官方主页:http://cn.cocos2d-x.org/ egret官方主页:http://www.egret-labs.org/ 下面是个简单的对比列表: 参考资料: http://www.zhihu.com/question/24614447 https://github.com/finscn/The-Best-J