如何看待 HTML5 开源游戏引擎 Egret,HTML5 游戏开发的前景如何?

rt,看了引擎的介绍,貌似还可以发布移动平台的原生应用,大家来讨论下前景如何~
关注者
1120
被浏览
98808

34 个回答

-----------------------------2015年3月27日更新-----------------------------
2015年3月25日,Google做出了一个针对Dart的重大决定,原文在Dart News & Updates: Dart for the Entire Web
总结这篇文章,有几个要点:
Dart is now officially only a Coffescript alternative. Today, with this official announcement, the great dream of Dart as a "javascript.next" has been abandoned by the Dart team. Dart will never be integrated in Chrome. It will run only if transpiled to javascript with the dart2js compiler.
Dart已经正式成为Coffeescript的备选;
原本Dart team想把Dart语言变为"javascript.next"的伟大梦想基本被放弃;
Dart将不会整合进入Chrome;
Dart将只会专注于Dart to JS的编译器工作;

片外话,Google和微软决定合作在AngularJS上使用TypeScript。原文在Microsoft & Google developer connection on TypeScript Angular 2

看到上述这些,只能说去年我们将Egret Engine选定在TypeScript上实属幸运之举。
---------------------------------------------------------------------------------
本来一直都在知乎潜水,但是看到楼上各位华山论剑点到了Egret,而且各持己见。我觉得我作为操盘Egret产品和技术的人,总归要回复几句,但是在诸位看官进入正文前,我先澄清一下,我的回复不会就以下几个问题展开讨论(为什么不讨论,相信各位资深看官都懂):
1. HTML5有没有未来
2.开源好还是闭源好
3.Web,Hybrid和Native哪家好
4.2D没3D牛B
我想单就Egret本身而言,给出我关于以下几个问题的想法。

1. Egret为何用TypeScript?为何不用Dart,AtScript或者其他?
TypeScript(TS)是一个严格意义上JavaScript超集,而且它目前的1.4版本的语言设计更接近于ES6,如果只是单纯认为TypeScript是微软出的一个开源语言的,请认真去TypeScriptLang.org深入了解一下这个开源项目,了解以下微软的首席架构师为何会针对JavaScript做了这么个玩意。
那么为何Egret会选用TS呢?
首先,我们认为Dart的形式针对很多会使用JS或AS3的开发者而言(尤其是初学者这个最大的群体),学习的成本曲线较陡,而谷歌又是一个在技术上“太过”创新的公司,跟随一个有可能“朝令夕改”的技术去制作一款产品,而且将整个Egret的工具和服务的体系都悬于它之上,实在有些让我坐卧难寝。谷歌的AtScript的目标又过于宏大,瞄准了ES7,但是就目前的H5的技术推进而言,下一个JS的标准是看齐ES6。我们想做一款创新好用的产品,但是首先我考虑的是先要创作一个能用的产品。回到TS,它目前版本是1.4,即将在2015出现2.0,语言的结构设计无限趋近与ES6的标准,有了module,有了Proxy,还会有很多更类似于ActionScript3.0的语法。微软还提供了一个TS的编译器,可以在编译时为开发者提供很多帮助,而且我相信以微软的实力,做个编译器的水平还是很高的。目前的JavaScript恰恰有很多设计层面和开发层面的缺陷,TS都能或多或少的弥补这些问题。选用TS这个开源项目,能再现阶段很好的帮助JS开发者创作更有规模,更成熟,更有质量的游戏项目。

其次,我们可以用TS基于Canvas来封装跟Flash ActionScript3.0的API结构设计,而且,我们仅仅封装对于游戏有帮助的部分。我在Adobe的10多年,全部铺在了Flash产品和技术上,Flash是个庞然大物,当初Flash团队之所以放弃AS3到AS4,AVM2到AVM3的项目,很大程度上是Core的部分太复杂了,经历了几代架构师和开发的调整,升级重构的成本已经无法估量,简单来说,就是当时没人改的了,所以,我们也不可能投入研发去自己做一个complier或者virtual machine去让AS3交叉编译为JS,君不见Adobe曾经宣布的AS3到JS的Falcon交叉编译项目,3年了都没动静,最后随同Flex一起捐给了Apache基金会么。Egret的API设计只是借鉴模仿了Flash AS3里跟游戏有关的API部分,做了减法,因为Egret Engine的定位不是想让开发者拿去既可以做广告,又可以做minisite,又可以做Video,又可以做游戏。我们只想在core上保持精简,如果开发者对不同的游戏类型有需求,比如状态机,物理,粒子等等,都做到了core之外的game library里。我2014年初离开Adobe时候,中国还有接近30万的Flash开发者,其中90%是游戏相关,这是一个宝贵的开发者社区群体,他们对于Web页游的开发和理解远远超过了任何使用其他web前端技术做网页游戏的群体。Egret使用TS,一方面是为了让JS游戏开发人员更舒服些,另一方面是考虑到Flash AS3这个开发群体,不争取的话,慢慢都流失掉了,很可惜。下图是我们Egret Engine在API设计上与Flash AS3 API上的对比。


第三,我们使用TS,还有一个想法。将来的JS也是迟早会跟ES6看齐的,等将来所有浏览器都统一支持下一代JS的时候,现在使用Egret的开发者都已经熟悉了ES6那套做法,而Egret几乎可以0成本的直接将TS换为下一代JS的代码,平滑过渡所有开发者,比JS现有体系过渡到下一代的体系成本都低,更顺滑,何乐而不为?

2.我们2014年一口气做了一堆工具,而没有一上来就做个集成的开发环境呢?
我在这里要回答的有2点。在技术和产品的进化上,第一条真理是:天下武功,唯快不破。第二条是,长鞭理论无处不在。第三条是:工作流是工作效率提升的根本。以上三条重要性依次降低,当一个CTO和CIO做了产品形态和研发的决策时,请倒推。好了,不讲大道理,说一说Egret的做法,Egret里我带的这帮人以前是做Flash Pro,Flash Builder,Flex GUI和众多工具及框架的技术,很有经验。但是经验不能完全当做生产力,经验不能当饭吃。经验告诉我们的是,要想在市场立足,在最短时间内做出来的产品的“核”也就是中心思想很重要,它不必拘泥于是否先要有个IDE来承载这种形态,市场需要的是最有效率的工作流,其次才是一招打遍天下的IDE集成开发环境,工作流的形态可以先出现在最初的若干款产品里,他们之间独立,小巧且专注,之间的数据通用且可以协作,对于研发而言,成本和风险均可控制。而IDE,功能强大且齐全,开发者需要的功能都具备,但是研发成本高,风险大,周期长。按照Egret Engine的双周迭代速度,团队潜心于一上来就要打造一个IDE的节奏是不对的。就好像你希望快走,但是又总有一条腿迈不出去的情况一样,这个节奏的结果就是容易扯着蛋。但是2015年,我们也会做出一个第一版的IDE,叫Egret Builder。
2015年1月26日小更新:Egret IDE形态将在Egret Wing这款可视化GUI编辑器上升级,也就是第一版Egret Wing是GUI编辑器,第二版将是全功能IDE,开发H5游戏的环境将和使用Flash Builder开发Flash项目一样)

3.说了引擎和工具,Egret你们想怎么商业化呢?
商业化的问题其实在这里我不想说太多,我只想说,我们除了引擎,工具,我还让团队做了个运行时。也就是将来Egret的技术体系就是三位一体,Engine,Tools,Runtime。关于Runtime的细节,我也不想多谈,大家可以去egret-labs.org上看看Egret Runtime的产品介绍页,就明白我们为啥要针对H5做个Runtime。很多明眼人一看就会说,这不就是个Flash Player么?!答案是Yes,也是No。
Yes的部分是我们的团队原来都是做Flash的,受Flash影响颇深。Flash Player里具备很多优秀的Web游戏设计思想都是很赞的,我们就想我们可以用C/C++和OpenGL围绕着这些设计思想,再做一个取代webview的游戏加速器,让开发者基于Egret引擎开发的H5游戏,可以直接通过这个Runtime加速。No的部分是Flash Player是to C的,要让用户去装,而Egret Runtime是to B的,集成到平台app里,作为一个库,当用户在平台里玩游戏时候激活,玩家是不知道Egret Runtime存在的,我们也不打算对玩家去刷什么存在感。Egret Runtime是为了解决H5游戏性能,适配,系统底层调用和碎片化的问题而生的一个产品。在Egret Runtime上,我们跟各大平台的合作关系也很融洽,为什么?因为我们就是他们平台内部的一个组件,生命周期受平台app的控管,你激活我,我就干活,你移除了我,我就进入sleep模式,丝毫不影响人家平台业务,还能提高H5游戏的用户体验,也不骚扰用户,何乐而不为?尤其在Android上,一个activity级别的控件是让平台恐惧的,而一个view模式下的控件,平台是喜欢的。下图是Egret Runtime的HighLevel架构图:
看了这张架构图,我想诸位看官应该知道商业机会在哪里了。

4.Egret现在就是个2D的,木有竞争力啊!
近一年内,Egret Engine的确是2D的,但是大伙不都是以进步的眼光看待事物么?Egret也一样,秉着天下武功,唯快不破的思路,我们规划了一下2015年的Egret Next,我们也在预研3D的部分,code name是HummingBird(请原谅我们团队就是喜欢鸟),更细节一点的计划图在这里:
当然,我们现在已经开始做了一些了,不然我也不敢说出来找虐。
2015年1月26日小更新:Egret 3D第一版预研Demo视频,10万个Triangle级别,物理系统,可破坏的mesh,光效阴影,原生多点触摸及虚拟摇杆,可H5,原生,Runtime全支持,H5为WebGL,Runtime和原生为OpenGL es或DirectX(Windows移动平台))
Egret第一版3D演示 http://v.youku.com/v_show/id_XODc3ODM0NjM2.html

5.说了半天,你们的套路到底是啥?
来看这张图,我们想为H5或者叫做使用H5(JS/TS)技术的web游戏开发者打造这么一套环境:
(当然,随着时间推移,这图里面的每个环节可能都会过期)
所以,说H5移动游戏也好,说Web移动游戏也好,说用脚本开发native也好,工作流齐全了,这些还算是问题么?

好了,头一次在知乎写了这么多东西,希望对各位有所帮助,各位要吐槽的话,请扔鸡蛋,别扔板砖。
我自己作为Egret的技术管理人,在我10多年的职业生涯里,信奉这么几句话:
1. 永远不要基于现在去假设未来。
2. 永远不要尝试用一个成功打败另一个成功。
3. 预测未来的最好方式就是创造未来。
4. 就是干!

谢谢各位,
7yue
接着潜水去了。
我来匿名吐槽一下 。怎么感觉楼主和上边的回答都把Egret引擎前景和html5游戏开发前景绑定了呢???
由于html5游戏出现已经不是一年两年了,国外早已有数不清的比较成熟html5游戏引擎了,而且都发展多年,拿出来几乎各个都比现阶段的egret强,我随便列几个
2d方面:
  • Parser.js
  • Panda.js
  • kiwi.js
  • flixeljs
3d
  • Babylon.js
  • Three.js

其他google一下还能搜到一堆html5游戏引擎,比如jawsjs impactjs craftyjs ....

而Egret现阶段只是模仿flash的架构,而flash架构本身就不是一个游戏引擎架构,只是一个渲染引擎,而纯渲染引擎在国外也有更成熟的pixi.js,webgl canvas都支持。框架上egret更单薄,说白了也就是个对canvas的包装,比如针对低效率设备游戏最常用的tilemap都没有,只是整合了几个现有的开源件,比如龙骨p2.js,他们首要目标好像也不是增加开源引擎的功能,而是对周边工具的闭源投入非常多,连visual studio插件都做了,这是其他引擎在这个阶段时所没有的。

那问题来了,为什么刚刚起步的Egret会受到这么大的关注呢? 以至于楼主以为html5游戏前景和egret游戏呢?

走中国特色的html5游戏引擎路线,优先中国开发者市场,学习cocos2dx先进经验。想在html5上再火一把。
与前边提到的闷声做技术的引擎不同,Egret 有钱!
你是怎么知道Egret的?是在github上吗?不是。他们不是在github上有名而让其他人知道的,他们走的是在其他渠道推广,求网友到github加star的路线

他们每发布一个版本都会发统一的公关文到各大站点。一个神经猫+egret传奇的软文,你知道得花多少钱推广才能人人都知道吗?现在已经html5梦工厂的田爱娜也被挖了过去,基本上以后国内的任何html5开发者大会,你都会看到egret的宣传讲座了。

当然egret也有优势,他们更了解的中国开发者,中国开发者不会在乎各种闭源工具是怎么回事,构建工具为啥要自己写而不基于grunt.js或gulp.js,他们需要的是你能一键发布,然后就适配各种小米锤子手机了。
为什么?