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

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

Sep 23, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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