Upload
others
View
26
Download
0
Embed Size (px)
Citation preview
ARM助力COCOS手机游戏开发
张晓龙 高级技术总监,触控科技
ARM DS-5 助力COCOS开发
Cocos 由触控科技推出的手机游戏引擎,整合了Cocos 2d-x、Cocos Studio、Cocos Code IDE等框架及工具,重新定义开发的工作流,为开发者提供了全套的游戏开发解决方案。
整合COCOS产品
Cocos Studio
Cocos2d-X & JS
Cocos Code IDE
Cocos Store
Cocos Framework
Cocos Simulator
开源游戏引擎框架
游戏引擎Runtime
游戏场景编辑器
代码调试编译器
资源商店
游戏模拟器
一站式开发解决方案
研发
原型 产品
项目创建
模拟预览 编程调试
打包发布 资源制作
COCOS原生游戏
2015
2014
2013
2012
MARKET SHARE OF COCOS
40% taiwan
14%
japan 32%
china 55%
korea 28%
cross platform
update on-the-fly
Package size performance
android compatibility
COCOS CODE IDE
强大的调试工具
语言
填补Cocos2d-
Lua/Cocos2d-JS 调试
工具的空白
方便设置断点、Step in
、查看变量值等
操作 平台
支持的目标应用包括:
Mac、Windows、iOS
模拟器/设备、Android
设备
特性介绍
4 资源提示
1 代码热更新
2 一键发布功
能
3 代码自动补
全
ARM DS-5 助力COCOS开发
Cocos Code IDE 获得 ARM Limited 授权,可以发布 DS-5 社区版给开发者使用
ARM DS-5 助力COCOS开发
功能介绍:安卓平台C++代码调试
ARM DS-5 助力COCOS开发
DS-5 安装
下载:
http://www.cocos2d-x.org/filedown/arm-ds-5-5.20.0.20141022-for-cci.zip
Size:250.7MB
ARM DS-5 助力COCOS开发
DS-5 安装:
Cocos Code IDE 工具栏“帮助”→ “安装新软件…”
ARM DS-5 助力COCOS开发
DS-5 安装:
点击“添加…”→ “Archive…”
ARM DS-5 助力COCOS开发
DS-5 安装:
初次安装需要安装授权文件,请选择社区版本。
http://www.cocos.com/doc/article/index?type=code-ide&url=/doc/cocos-docs-master/manual/code-ide/ds-5/zh.md
ARM DS-5 助力COCOS开发
DS-5 调试 C++ :
准备工作:
- Cocos2d-JS v3.3 +
- Android SDK
- Android NDK r10c +
- Apache Ant 1.9 +
ARM DS-5 助力COCOS开发
DS-5 调试 C++ :
- 选择包含C++代码的工程
- 点击DS-5调试按钮
- 进入项目DS-5配置向导
ARM DS-5 助力COCOS开发
DS-5 调试 C++ :
- DEBUG设置
ARM DS-5 助力COCOS开发
DS-5 调试 C++ :
- DS-5调试界面
http://www.cocos.com/doc/article/index?type=code-ide&url=/doc/cocos-docs-master/manual/code-ide/ds-5/debug-with-ds-5/zh.md
ARM DS-5 助力COCOS开发
功能介绍:安卓平台性能分析
ARM DS-5 助力COCOS开发
案例:cocos 2d-x TestCpp
ARM DS-5 助力COCOS开发
收集profiling数据
ARM DS-5 助力COCOS开发
Functions分析
ARM DS-5 助力COCOS开发
Call Graph分析
ARM DS-5 助力COCOS开发
解决方案:
• 检测memcpy方法本身
• 检测调用memcpy的函数 在调用updateQuad方法的代码中使用element reference。
例如,将以下代码:
_textureAtlas->updateQuad(&_quad, _atlasIndex);
改为:
quad = &((_textureAtlas->getQuads())[_atlasIndex]);
quad->bl.colors = _quad.bl.colors;
通过检测,memcpy已经被neon指令优化过,没有优化可能。
ARM DS-5 助力COCOS开发
优化结果:
优化后,Memcpy函数的cpu时间从54.62%降到9.1%。
FPS从11.3增长到17.2, 在这个示例中,性能提升了约70%。
ARM DS-5 助力COCOS开发
案例2:cocos 2d-x TestCpp
ARM DS-5 助力COCOS开发
案例2:cocos 2d-x TestCpp
ARM DS-5 助力COCOS开发
打开counter配置窗口,添加以下两个counters到列表中,保存并再次生成streamline数据。 Mali GPU Fragment Processor 0: Instruction completed count Mali GPU Fragment Processor 0: Instruction failed texture-miss count
ARM DS-5 助力COCOS开发
failed texture-miss count约为8030551
ARM DS-5 助力COCOS开发
打开counter配置窗口,再添加2个硬件counters,再次生成streamline数据。 Mali GPU Fragment Processor 0: Active Clock Cycles
Mali GPU Fragment Processor 0: Fragment passed z/stencil
ARM DS-5 助力COCOS开发
可以看到,passed z/stencil count约为8,573,446.
通过Overdraw的公式计算,overdraw约为22.3,数值偏高,标准参考值为3。 公式为:
overdraw = "Fragments Passed Z/stencil count" / "Device Resolution"
= 8573446/(800*480) = 22.3
ARM DS-5 助力COCOS开发
原因分析:
我们使用的设备Mali300的Cache只有 8 K,它可能就是导致大量的纹理缺失的原因。
使用压缩的纹理技术将有助于减少此忽略。
解决方案:
将以下代码:
sprite = Sprite::create("Images/grossinis_sister1.png");
改为:
sprite = Sprite::create("Images/grossinis_sister1.pkm");
将.png文件转化成ETC1
ARM提供一个名为 “Mali GPU Texture Compression Tool”的工具,用于将png格式的文件转换为ETC1格式。 下载链接: http://malideveloper.arm.com/develop-for-mali/mali-gpu-texture-compression-tool/
ARM DS-5 助力COCOS开发
优化结果:
由于指令失败导致的纹理计数缺失数,再使用了ETC1形式后,从8,030,551 降低到 3,081,109
The FPS 从9.3增加到12.0 , 意味着ETC形式的支持,使性能提升了30%.
ARM DS-5 助力COCOS开发
案例3:FishingJoy2
ARM DS-5 助力COCOS开发
游戏界面运行一分钟
ARM DS-5 助力COCOS开发
收集并分析profiling数据
采集约30秒的streamline数据,Timeview profiling 报告显示GPU片段占用比高。
ARM DS-5 助力COCOS开发
收集并分析profiling数据
函数界面显示,空闲进程占用最多的CPU时间。很多浮点数相关的系统调用占用了很多CPU时间, 例如:_addsf3,mulsf3,eqsf2。
ARM DS-5 助力COCOS开发
使用armv7a ABI 编译游戏后,浮点数相关操作已经不再显示在CPU占用列表上。
优化结果
• ARM
stream
line是
一款非
常强大
的工具
,帮助
开发者
提升性
能。
总结
更多Cocos信息
微博:
微信:
CocoaChina:
微信账号:
cocoachinabbs
微信二维码
Cocos:
微信账号:
Cocos Engine
微信二维码