《2018年基于Cocos的高性能跨平台开发方案.pdf》由会员分享,可在线阅读,更多相关《2018年基于Cocos的高性能跨平台开发方案.pdf(53页珍藏版)》请在三个皮匠报告上搜索。
1、基于Cocos的高性能跨平台开发方案项目背景体会和实践效果对比123项目背景体会和实践效果对比123ABCmouse美国销量第一幼教App团队开发,全美国7万教师推荐使用ABCmouseABCmouse 采用典型的 Hybrid App 跨平台解决方案Hybrid APP 性能问题loading,又在loadingABCmouse 各场景加载耗时3.72.43.52.32.92.300.511.522.533.54原版启动耗时(s)ArtPuzzleGamesMusicVideosSongs and ChantsListening LibraryABCmouse 腾讯版针对中国儿童精心制作焕然
2、一新的界面设计更符合中国儿童使用习惯的学习路径强化的社交分享能力技术目标性能效率表现力社交技术选型:Cocos跨平台性能效率表现力我们选择使用Cocos改造ABCmouse项目背景体会和实践效果对比123体会和实践架构篇甜头篇踩坑篇优化篇架构篇客户端架构通用通用UI组件组件音音频播放频播放图片加载图片加载常常驻节点管理器驻节点管理器上上报报日志日志webview视频播放视频播放音音频播放频播放callStaticMethodevalString支付支付账号体系账号体系安全安全上上报报日志日志推送推送社交社交录音录音VAD场景场景Creator 组件组件弹窗调度器弹窗调度器Cocos2d-x J
3、S BindingsCocos2d-xScript Engine WrapperJavaScriptCoreSpiderMonkeyV8ChakraCoreCocos 层Native 层跨平台原理 VS React NativeUI Threadscripts/fireGLThreadGLCocos2d-xScene TreeJS(JSX)Virtual DOMAndroidiOSBrowserReact NativeCocos甜头篇甜头1:跨平台一周搞定小游戏版本甜头2:高效开发Cocos Creator:基于 Cocos2d-x,组件化,脚本化,数据驱动,跨平台发布甜头2:高效开发Coco
4、s Creator 支持直接在浏览器中预览调试场景,省去构建编译的耗时。甜头3:热更新灵活同时支持脚本和资源的更新;无需重启,直接 reload;支持自定义热更新方案;支持增量更新、断点续传、文件校验、失败重试和跳过甜头4:强大的社区支持和市场占有率踩坑篇坑1:需要自己开发一些UI组件坑2:UI 节点需要注意调度没有调度有调度坑3:VideoPlayer 视频置顶问题Cocos 的 GLSurfaceView 不能直接支持渲染视频,因此,Cocos 提供了VideoPlayer 组件用于播放视频。VideoPlayer 是独立且置顶的一层。问题:无法在视频上绘制UI。GLSurfaceView
5、VideoPlayer(fix top)坑3:VideoPlayer 视频置顶问题解决方案:改用自定义的 Native 视频播放器。GLSurfaceView自定义 VideoPlayer(fix top)坑4:AudioEngine 不支持 native 端远程音频播放开发一个跨平台音频播放器,支持多端播放远程/本地音频。A/art:art/runtime/indirect_reference_table.cc:138 JNI ERROR(app bug):local reference table overflow(max=512)A/art:art/runtime/indirect_re
6、ference_table.cc:138 local reference table dump:A/art:art/runtime/indirect_reference_table.cc:138 Last 10 entries(of 512):A/art:art/runtime/indirect_reference_table.cc:138 511:0 x12e45170 java.lang.String A/art:art/runtime/indirect_reference_table.cc:138 510:0 x12dd33c0 java.lang.ClassA/art:art/runt
7、ime/indirect_reference_table.cc:138 509:0 x12e45180 java.lang.String A/art:art/runtime/indirect_reference_table.cc:138 508:0 x12f89490 java.lang.String 59A/art:art/runtime/indirect_reference_table.cc:138 507:0 x135a4f40 java.lang.String 62A/art:art/runtime/indirect_reference_table.cc:138
8、506:0 x12e89400 java.lang.String onLoadA/art:art/runtime/indirect_reference_table.cc:138 505:0 x12e451d0 java.lang.String A/art:art/runtime/indirect_reference_table.cc:138 504:0 x12c8bc00 java.lang.Class 3)if(call.isValid()&call.getArgumentsCount()=(argc-3)for(int i=0;i NewStringUTF(str.c_str();brea
9、k;ok=call.executeWithArgs(jargs);if(jargs)delete jargs;没有释放!JavaScriptJavaBridge.cpp坑5:Local Reference Table Overflow Error 问题提交修复 Pull Request(#1178)优化篇?ScrollView 优化解决方案:官方 ScrollView 组件会一次加载全部的子节点组件,当子节点过多时,会导致渲染掉帧,内存消耗高。ScrollView 优化优化思路:滚动过程回收不可视的子节点组件并重用。可视区域ScrollView 优化优化思路:滚动过程回收不可视的子节点组件并重
10、用。可视区域ScrollView 优化效果:稳定在 60 fps 左右内存占用优化优化前:内存占用过高,引发强制GC导致黑屏或OOM。待补充内存占用优化优化思路一:绘制内存监视器,找出消耗大的元凶待补充totalBytes+=selTexture.getPixelWidth()*selTexture.getPixelHeight()*(url&url.indexOf(.jpg)0?3:4);内存占用优化优化思路一:绘制内存监视器,找出消耗大的元凶内存占用优化优化思路二:使用纹理压缩兼容性大多数设备质量差内存消耗:0.5 bppiOS低端设备兼容差质量较差内存消耗:0.5 bpp低端设备兼容差质
11、量较好内存消耗:1 bpp内存占用优化PVR/ETC2 效果对比16mb原图ETC2PVR4mb2mb内存占用优化混合纹理压缩方法,单图内存消耗降低接近75%87.5%。输入待压缩纹理高质量要求纹理低质量要求纹理纹理归类ETC2纹理大小减半纹理PVR纹理输出内存占用优化增量混合纹理压缩工具(即将开源)优化方法耗时(s)无优化180增量压缩10drawcall 优化CPU将渲染指令传递给GPU的过程为一次drawcall。通过降低drawcall,提升性能。SceneNodeSpriteSprite场景树渲染队列GPUDraw call#1Draw call#2Draw call#3贴图A渲染指
12、令#1贴图A渲染指令#2贴图B渲染指令#3贴图B渲染指令#4贴图C渲染指令#5贴图C渲染指令#6贴图C渲染指令#7drawcall 优化分析:deactive 节点手段:batching 静态 Sprite:合并图集 Label:BMFont 位图字体局限:动态资源、动画drawcall 优化:避免跨层切换贴图SceneNodeSpriteSprite场景树渲染队列GPUDraw call#1Draw call#2Draw call#5贴图A渲染指令#1贴图A渲染指令#2贴图B渲染指令#3贴图B渲染指令#4贴图C渲染指令#5贴图C渲染指令#6贴图C渲染指令#7Draw call#3Draw c
13、all#4Hybrid 页面优化对未改造的 H5 页面进行一系列优化,达到首屏直出的要求。直出动静分离、增量更新缓存并行加载、预加载Hybrid 页面优化效果对比优化前(ms)优化后(ms)我的房间1522688688仓鼠2004870870鱼缸1944850850游戏 Hello:Ballon Popper2037987987游戏 I Can Do This1792713713游戏 My Clothes MatchingCards1821739739游戏 Magic RainbowPainter1853741741游戏 Lots of Leaves1588685685游戏 This is M
14、y Face1323572572游戏 Family:Memory Match1421692692项目背景体会和实践效果对比123整体Cocos化率15%24%40%4%8%9%ArtPuzzleGamesMusicVideosSongsandChantsListeningLibraryCocos:56%H5:40%Native:4%启动速度对比3.70.82.40.53.50.92.30.52.90.62.30.500.511.522.533.54原版腾讯版启动耗时(s)ArtPuzzleGamesMusicVideosSongs and ChantsListening Library启动速度对比:画图待补充待补充包大小对比415.3 MB85.8 MB包大小减小79.3%。