由于公司业务需要,不得不硬着头皮,开始写H5游戏(主要运用于手机端),之前对于游戏开发完全是陌生领域,突然要开发游戏了,只能说一脸懵逼。
然后,我就开始调研,H5游戏都用的哪些游戏引擎,大致搜索了一下,主要以下几种:
Egret
LayaBox
Cocos2d-js
其它还有一写引擎,但不是主攻游戏的,比如
three.js
等等,就暂时不提了。
纯小白,也不知道哪个好,就去早对比资料,选择一个入手
三大引擎对比
H5游戏引擎主要三大语言:
JavaScript
,
TypeScript
,
ActionScript3
其中
ActionScript3
是flash游戏的主要语言,但是,我也不会它,所以,只要关注
JavaScript
,
TypeScript
即可。
很幸运,
Egret
、
Layabox
、
Cocos2d-JS
这三个引擎,在工具链方面都提供足够全面的支撑。
其中
Layabox
的工具链最完善,
Egret
也提供了一系列工具
三款引擎官方文档都齐全,相对来说,
Cocos2d-JS
目前支持力度不行。
基本上可以排除
Cocos2d-JS
了,就是在
Egret
与
Layabox
二选一,不过我个人感觉,Layabox 更加面向 flash 游戏开发者转型,我反正是做小游戏,而且不关心flash,也没有flash基础,还是使用名气更加大的
Egret
好了。
引擎也选择好了,就开始动手撸代码了。
开始前的准备
https://www.egret.com/
高大上的官网,直接下载引擎
Egret Engine
.
安装之后,双击打开,下载工具
Egret Wing3
(IDE)、
Texture Merger
(帧动画制作工具). 别的软件暂时没啥用(主要是我水平渣)
创建工程的时候,有点傻眼,好多选择,最终考虑到我们的游戏设计师出生于网页设计,大量类似网页的元素存在,还是勾上eui好了。
简单介绍一下eui,其实eui在我看来就是模拟HTML的dom。
因为是在canvas中,所以本身没有dom,这样游戏中的一些弹窗,滚动浏览一类的东西,需要自己做,omg,不会。。。 所以最终借助EUI这种东西,写一个叫exml,没错其实就是xml,只是egret进行定制版本而已。。。
简单的说,就是你写 xml来作为dom节点,egret内置几种类型,来模拟常见的几种HTML标签,当然只是比较类似,做不到一模一样,也没有css,但是可以用js进行类似css的样式调整。有点像react native中使用jsx来进行布局,调整样式。
所以,我这样的一直是纯H5前端开发的,还是老老实实选上eui。方便属性很多。
做游戏和一般的前端开发不一样,有一个主函数入口,一起都从 main 函数开始(有点类似c++)
白鹭引擎也是从Main函数开始创建,进行场景进入与切换。
白鹭引擎本身提供了几个库,可以直接用它的api写代码了,不需要了解canvas的底层api了,渲染、性能等等,它都帮你解决了。
开发中遇到的问题
白鹭引擎没有提供粒子库,所以需要使用第三方的库,而第三方的库,导入项目,确实麻烦,各种修改之后才成功。