43
ARM助力COCOS手机游戏开发 张晓龙 高级技术总监,触控科技

ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

  • Upload
    others

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM助力COCOS手机游戏开发

张晓龙 高级技术总监,触控科技

Page 2: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

Cocos 由触控科技推出的手机游戏引擎,整合了Cocos 2d-x、Cocos Studio、Cocos Code IDE等框架及工具,重新定义开发的工作流,为开发者提供了全套的游戏开发解决方案。

Page 3: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

整合COCOS产品

Cocos Studio

Cocos2d-X & JS

Cocos Code IDE

Cocos Store

Cocos Framework

Cocos Simulator

开源游戏引擎框架

游戏引擎Runtime

游戏场景编辑器

代码调试编译器

资源商店

游戏模拟器

Page 4: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

一站式开发解决方案

研发

原型 产品

项目创建

模拟预览 编程调试

打包发布 资源制作

Page 5: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

COCOS原生游戏

2015

2014

2013

2012

Page 6: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

MARKET SHARE OF COCOS

40% taiwan

14%

japan 32%

china 55%

korea 28%

Page 7: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

cross platform

update on-the-fly

Package size performance

android compatibility

Page 8: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

COCOS CODE IDE

Page 9: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

强大的调试工具

语言

填补Cocos2d-

Lua/Cocos2d-JS 调试

工具的空白

方便设置断点、Step in

、查看变量值等

操作 平台

支持的目标应用包括:

Mac、Windows、iOS

模拟器/设备、Android

设备

Page 10: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

特性介绍

4 资源提示

1 代码热更新

2 一键发布功

3 代码自动补

Page 11: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

Cocos Code IDE 获得 ARM Limited 授权,可以发布 DS-5 社区版给开发者使用

Page 12: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

功能介绍:安卓平台C++代码调试

Page 13: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

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

Page 14: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

DS-5 安装:

Cocos Code IDE 工具栏“帮助”→ “安装新软件…”

Page 15: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

DS-5 安装:

点击“添加…”→ “Archive…”

Page 16: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

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

Page 17: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

DS-5 调试 C++ :

准备工作:

- Cocos2d-JS v3.3 +

- Android SDK

- Android NDK r10c +

- Apache Ant 1.9 +

Page 18: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

DS-5 调试 C++ :

- 选择包含C++代码的工程

- 点击DS-5调试按钮

- 进入项目DS-5配置向导

Page 19: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

DS-5 调试 C++ :

- DEBUG设置

Page 20: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

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

Page 21: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

功能介绍:安卓平台性能分析

Page 22: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

案例:cocos 2d-x TestCpp

Page 23: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

收集profiling数据

Page 24: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

Functions分析

Page 25: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

Call Graph分析

Page 26: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

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指令优化过,没有优化可能。

Page 27: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

优化结果:

优化后,Memcpy函数的cpu时间从54.62%降到9.1%。

FPS从11.3增长到17.2, 在这个示例中,性能提升了约70%。

Page 28: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

案例2:cocos 2d-x TestCpp

Page 29: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

案例2:cocos 2d-x TestCpp

Page 30: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

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

Page 31: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

failed texture-miss count约为8030551

Page 32: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

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

Page 33: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

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

Page 34: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

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/

Page 35: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

优化结果:

由于指令失败导致的纹理计数缺失数,再使用了ETC1形式后,从8,030,551 降低到 3,081,109

The FPS 从9.3增加到12.0 , 意味着ETC形式的支持,使性能提升了30%.

Page 36: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

案例3:FishingJoy2

Page 37: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

游戏界面运行一分钟

Page 38: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

收集并分析profiling数据

采集约30秒的streamline数据,Timeview profiling 报告显示GPU片段占用比高。

Page 39: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

收集并分析profiling数据

函数界面显示,空闲进程占用最多的CPU时间。很多浮点数相关的系统调用占用了很多CPU时间, 例如:_addsf3,mulsf3,eqsf2。

Page 40: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

ARM DS-5 助力COCOS开发

使用armv7a ABI 编译游戏后,浮点数相关操作已经不再显示在CPU占用列表上。

优化结果

Page 41: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

• ARM

stream

line是

一款非

常强大

的工具

,帮助

开发者

提升性

能。

总结

Page 42: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

更多Cocos信息

微博:

微信:

CocoaChina:

微信账号:

cocoachinabbs

微信二维码

Cocos:

微信账号:

Cocos Engine

微信二维码

Page 43: ARM助力COCOS手机游戏开发 - arm.com · 整合COCOS产品 Cocos Studio Cocos2d-X & JS Cocos Code IDE Cocos Store Cocos Framework Cocos Simulator 开源游戏引擎框架 游戏引擎Runtime

THANK YOU

Email:[email protected]

开发者平台:WWW.COCOS.COM