cocos2d-js 和 createjs 性能对比(HTML5)

原文地址为: cocos2d-js 和 createjs 性能对比(HTML5)

cocos2d-js除了做native游戏外,还可以用来做HTML5游戏/动画,那么它跟adobe的createjs框架比较会怎么样呢?

(背景知识:createjs是adobe支持的HTML5框架,沿用了Flash的思想,实现了最基本的显示列表和事件机制,是一个非常轻量的框架。createjs暂时只有canvas 2d版本,webgl版本还没完成。)

 

实验一:

wps_clip_image-663

1背景,上排5个小人播放SpriteSheet动画(14帧位图轮播),下排5个小人不断做旋转和缩放。其中小人是带透明的png,尺寸为85*121px。

 

在PC的chrome运行,cocos2d-js和createjs都能满帧60fps,轻松搞掂无压力。

wps_clip_image-30676

 

cocos2d-js:

        for (var i = 0; i < 5; i++) {

var man = new cc.Sprite("res/grossini.png");

man.runAction(cc.spawn(cc.rotateBy(
1, 360, 360), cc.sequence(cc.scaleTo(1, 2), cc.scaleTo(1, 1))).repeatForever());

this.addChild(man, 2);

man.x
= size.width/6*(i+1);

man.y
= size.height/5;

}

for (var j = 0; j < 5; j++) {

var man = new cc.Sprite();

var animation = new cc.Animation();

for (var i = 1; i <= 14; i++) {

animation.addSpriteFrameWithFile(
"res/grossini_dance_" + (i < 10 ? ("0" + i) : i) + ".png");

}

animation.setDelayPerUnit(
1 / 7);

man.runAction(cc.animate(animation).repeatForever());

man.x
= size.width/6*(j+1);

man.y
= size.height / 3 * 2;

this.addChild(man, 3);

}

 

createjs:

            for (var i = 0; i < 5; i++) {

var man = new createjs.Bitmap("../res/grossini.png");

man.regX
= 42;

man.regY
= 60;

man.x
= canvas.width/6*(i+1);

man.y
= canvas.height/5*4;

man.scaleX
= man.scaleY = 1;

stage.addChild(man);

createjs.Tween.get(man, {loop:
true}, true)

.to({rotation:
360, scaleX:2, scaleY:2}, 1000).to({rotation: 360, scaleX:1, scaleY:1}, 1000);

}

var images = [];

for (var i = 1; i <= 14; i++) {

images.push(
"../res/grossini_dance_" + (i<10?("0"+i):i) + ".png");

}

for (var j = 0; j < 5; j++) {

var sheet = new createjs.SpriteSheet({

images: images,

frames: {width:
85, height: 121, regX: 42, regY: 60}

});
//需要设置每帧的宽高,注册点信息

var man = new createjs.Sprite(sheet);

man.framerate
= 60/7;

man.x
= canvas.width/6*(j+1);

man.y
= canvas.height / 3;

man.play();

stage.addChild(man);

}

 

 

 

由于播放帧动画都需要不断的替换贴图,是否使用GPU加速差别不大,所以接下来只使用旋转放缩来测试两个框架的效率区别。

 

实验二:

基于实验一,改为使用2个图,每个图新建2000个实例放到舞台上,分别做旋转放缩的缓动变化。实验二继续在PC的chrome中运行。

 

cocos2d-js:使用webGL,帧频不断变化,最高有55fps,最低只有29fps。

wps_clip_image-16316

如果让cocos2d-js强制在canvas 2d模式下渲染,帧频只有26fps左右。

 

createjs:使用canvas 2d渲染,保持在28fps。

 

在这个实验中,两者差异的原因主要是cocos2d-js使用了webgl渲染,可以让部分矩阵计算放到GPU,而createjs使用纯canvas 2d渲染,只能依赖CPU计算矩阵变换,导致每帧的计算超过了重绘时间间隔,导致了帧频降低。

接着,我们再做一个手机canvas的实验,测试机是小米1 Android 2.3,可谓是低端情况的canvas 2d,代表了一大批山寨机水平吧。

 

实验三:

判断当前帧频,如果帧频大于30,则添加20个运动的小人到舞台上,直到帧频低于30才停止。

 

cocos2d-js在UC浏览器上运行,勉强支撑40个小人,帧频13到23fps之间波动。

wps_clip_image-16220

createjs情况就没有在PC chrome那么风光了,运行20个小人就已经卡得掉牙了,只有10到15fps。

wps_clip_image-4070

通过这个实验可以发现,手机的canvas性能真心不行,包括UC浏览器和微信内嵌的浏览器。这可能是手机CPU性能带来的主要瓶颈吧,所以在手机上只能多依赖GPU,要么发布为native,要么只给iOS 8(带webgl)的高帅富使用。

有兴趣的朋友,可以拿起手机扫一下,看看你的手机测试情况如何,跟个贴。

cocos2d-js:

wps_clip_image-28596

createjs:

wps_clip_image-23801

 

小结:

总体来说,由于cocos2d-js可以在webgl上渲染,所以性能会比createjs要好。单纯比较在canvas 2d上的渲染来说,createjs和cocos2d-js不相伯仲,没太大区别,尤其在手机(Android)上基本都是废物,手机的canvas2d游戏/动画只能尽量避免全屏重绘,减少每帧的变化。

再考虑框架的附加能力方面,cocos2d-js框架提供的UI编辑器、粒子系统、骨骼动画、瓦片地图等等,都是createjs这个轻量级选手不具备的,createjs只能从零开始,一切都得靠开发者自行实现。因此,cocos2d-js更适合做中大型游戏(大型指的是游戏画面复杂程度,而不是渲染要求高),而createjs更适合做小游戏,例如神经猫级别。

 

本文的代码可以在github.com/kenkozheng/cocos/cocos_vs_createjs中找到。


转载请注明本文地址: cocos2d-js 和 createjs 性能对比(HTML5)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos2d-JS开发之旅 从HTML 5到原生手机游戏》 《Cocos2d-JS开发之旅——从HTML 5到原生手机游戏》从简单到复杂逐渐深入介绍Cocos2d-JS,包括HTML5和手机原生游戏两个方面的内容。这些内容融汇了作者多年的工作经验和Cocos2d-JS 的亲身使用教训,有助于读者快速掌握游戏开发的方法和避开不必要的麻烦。 《Cocos2d-JS开发之旅——从HTML 5到原生手机游戏》以两个游戏为线索,每一章的学习都为最终实现游戏而准备。除了基础的Cocos2d-JS使用方法,本书还会探讨如何调试发布原生手机游戏和另外一些高级话题。 《Cocos2d-JS开发之旅——从HTML 5到原生手机游戏》适合所有对2D 游戏开发感兴趣的人群,尤其是计算机专业学生、Flash/JS 开发者,因为Cocos2d-JS简单易懂,读者会发现自己已有的基础能快速应用或转移到Cocos2d-JS 游戏的开发中。 目录 第一部分 准 备 篇 第1 章 Cocos2d-JS 介绍 / 2 第2 章 跑起我们的HelloWorld / 10 第一部分总结 / 27 第二部分 做一个简单的小游戏 第3 章 Cocos2d-JS 的平面世界 / 30 第4 章 让世界来点动静 / 51 第5 章 让玩家操纵这个世界 / 72 第6 章 控制小怪按时出现——定时器 / 84 第7 章 游戏界面 / 96 第8 章 不能光说不练——小小碰碰糖 / 122 第9 章 把成果分享到网上 / 143 第二部分总结 / 158 第三部分 再做一个高大上游戏 第10 章 走向高大上的必经之路——简单的性能优化 / 160 第11 章 让主角不再死板 / 173 第12 章 动态的背景 / 188 第13 章 界面的文字有点丑 / 204 第14 章 超炫的效果——粒子系统 / 211 第15 章 尝试做一个更大的游戏——Hungry Hero(上篇)/ 226 第16 章 尝试做一个更大的游戏——Hungry Hero(下篇)/ 235 第三部分总结 / 291 第四部分 把两个游戏做成原生手机游戏 第17 章 咱们也来做APP / 294 第18 章 真是这么美好吗?更多问题来了 / 304 第四部分总结 / 320 第五部分 高 级 篇 第19 章 订阅者模式——事件机制 / 322 第20 章 屏幕尺寸适配哪家强 / 331 第21 章 让死去的主角灰掉——渲染控制 / 342 第22 章 动态热更新 / 363 第23 章 想说的还有很多 / 374 第五部分总结 / 376
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值