在2D方面,我刚刚入门。还没用上原生、资源管理等高大上功能。
就2D小功能、编译方面,EGRET和LAYABOX(LAYAAIR)我的实践体会如下
typescript用法
EGRET WING 4.1.6 | LAYAAIR 1.7.21 | LAYAAIR 2.0.0.beta4 | |
console.log | 识别任何文件和行号,自动带上输出文件、行号 ●胜出● | 不明 | 在右边有一个小小的ts或js可点击行号。 输出内容里面的文件行号不能智能识别。 这个和原生的vscode行为一样。 |
编译器 | typescript的tsc编译器编译 js文件分散 命名空间,mudule都可以暴露在全局空间中 可以a.b.c方式直接使用 ●胜出● | 同egret 但是,编译成功的过程没有任何提示显示 因为这个引擎是action script开发为主的,估计typescript方式开发是临时工拼凑的工具。 | (●胜出●) gulp+browserify+tsify 必须import, export,向javascript es6看齐 写代码很烦,需要不断import 不支持关键字namespace, 支持关键字module 因为javascript es6 把文件看作module,所以typescript的显式namespace module 要说拜拜了 编译过程有提示显示了 |
api风格 | api不容易用,异步调用方式,异步思维满天飞 事件函数基本无封装 | api容易用,可以使用同步思维(当然,图片还是异步显示的) 一些事件功能函数易用,有些已经二次封装 ●胜出● | 同LAYA1.7.21 ●胜出● |
IDE运行速度 | 较快●胜出● | 较慢 | 较慢 |
论坛友好度 | 没有敌对情绪 ●胜出● | 有一些些敌对情绪,常常说我引擎没收你钱 | 同laya1.7 |
引擎赚钱吗 | 新三板上市(基本相当于没上),每年亏2000万 现在花投资人和新三板的钱 ●胜出● | 还没上市 现在花投资人的钱 | 同laya1.7 |
流行程度 | 更流行 | 普通流行 | 同laya1.7 |
引擎成员实力 | 通过api来看,引擎开发者没有咋开发过游戏,api不是特别好用 这有点像当年如日中天的cocos,开发者也没有开发过游戏。 | ●胜出● 通过api来看,引擎开发者开发过游戏,api相对好用 但是引擎开发者应该大实力在action script上 可以编译flash,现在2018.11月了,flash需求在PC页游中尚有一半市场 考虑手机是PC流量的2倍,用户受众影响多了20% | 同laya1.7 ●胜出● |
3D完善度 | DEMO比LAYA的好看 | 腾讯背书,应该是用ActionScript开发了一款台球游戏 在微信小程序里面有。 ●胜出● | 腾讯背书,应该是用ActionScript开发了一款台球游戏 ●胜出● |
引擎容量大小 | 容量比laya小20%左右 ●胜出● | 较大 | 较大 |
引擎速度 | 不确定优劣 | laya宣传说自己性能优 laya有cacheAs函数,但是egret也有类似的cacheAsBitmap 函数, | 同1.7 |
2D物理引擎 | 不是box2d, 叫p2 | 可能是没有集成物理引擎 | box2d ●胜出● |
网站速度 | 较快 ●胜出● | 不那么快 | 不那么快 |
书籍 | 有egret的出版书籍 ●胜出● | 无出版书籍 | 无出版书籍 |
网课流行度 | 强 ●胜出● | 弱 视频倒是官方出品。 脑残的竟然在腾讯课堂上收费才给看 两个解释: 1)laya要靠培训市场生钱 2)搞视频的人没在laya拿工资,是第三方,所以收钱弥补损失 | 同laya1.7 |
IDE技术 | VSCODE,深度定制,已经不能装任何插件了 | VSCODE,浅度定制,还能装某些插件 ●胜出● | 同laya1.7 ●胜出● |
3D支持 | 不成熟,论坛相关内容沉寂 | 成熟,论坛相关内容活跃 | 成熟,论坛相关内容活跃 |
如何选择?
API易用性:laya胜出
调试易用性:console.log智能识别文件,行号, egret胜出。laya勉强能用,如果要用sourcemap+stack功能,laya不行了。
代码组织方面:import export 模块问题,全局命名空间(egret, laya 1.7)的明显好用。两个引擎暴露出来的接口也都是会污染全局环境的,可以直接引用的。C#和Java的命名空间也是全局可用的。所以这个laya2.0的做法,就是着了es6那班老学究的魔,加上IDE开发人员只想着个人人生前途,不想公司前途,用了这个内部模块import方式,恶心到家。理想的是输出一个js加快装载,但是支持全局命名空间。
所以,现在最好的方案是把egret的api封装成同步编程模式是最彻底的解决方法。但这是不可能的事情。所以这个答案没有答案。
将就着选吧。
如果用了action script,那么服务端不能采用同一套typescript技术,现在大部分公司还是没这么强的实力,配备这么多人大眼瞪小眼。
咱不说腾讯,人家那服务端说不准是C++的,有钱任性,何况有好多只会C++的不愿和前端js竞争饭碗,但是二哥网易也是在客户端服务端方面都是向python一条龙靠齐