Cocos 深圳技术分享会精彩回顾
2019.06.20 by Cocos
活动 开发者沙龙

6 月 15 日下午,由 Cocos 主办的游戏技术分享会在深圳圆满结束!“混迹江湖”多年的子龙山人(腾讯资深技术屈光辉)、火爆球球主程 Leon 等多位大咖出席了本次活动,带来游戏深度开发经验分享,并同从各地赶来参会的技术负责人、客户端主程、游戏开发工程师等一起互动切磋,探讨技术。


Cocos 技术顾问赵铮雄首先同与会开发者介绍了 Cocos Creator 的近况:

  • 进一步推动小游戏平台支持,Cocos Creator 新增小米快游戏即刻玩小游戏两大平台
  • 2.0.x 性能优化稳定性提升,包括微信小游戏下载优化、Label 缓存模式优化、骨络动画里的原生平台优化、web 和微信小游戏平台优化、压缩纹理支持等;
  • Story Master面向 AVG 品类社区贡献和第三方开发者服务,包括技术支持、统计、Agora、Matchvs等。
  • Cocos Creator 2.1.1 新增3D 功能,包括有:场景编辑、摄像机视窗、光照和阴影、更强大的材质系统、压缩纹理支持。

《Cocos Creator Renderer 流程及优化》

Cocos Creator 引擎工程师 刘航

Cocos Creator 引擎开发工程师刘航现场分享了 Cocos Creator 2.x 版本的渲染框架以及渲染流程,并对场景树及渲染引擎交互的数据对象进行了详细介绍,让开发者对引擎渲染底层有一个清晰完整的认识。

此外,刘航通过对比 Render 1.0 版本的渲染流程,详细介绍了 Render2.0 对应的优化内容,总结了几点渲染层面需要清楚的优化准则及通用的优化点,如:

  • 渲染优化的本质是 CPU、GPU、内存三者之间的负载均衡;
  • 批次合并的本质是保证渲染状态的一致性;
  • 引擎面向所有开发者,需要保证通用性,不能完全依赖引擎做所有优化。

《粒子引擎的优化》

《火爆球球》主程 Leon

《火爆球球》主程 Leon 介绍了粒子引擎优化的两种模式:CPU 模式和 GPU 模式。

粒子引擎有两个核心的部分,一个是发射器,另一个是系统。发射器有一个重要的指标是产生复率,量极比较少。系统则主要处理粒子整个周期的颜色、速度、位置、大小、数据的修改存储,所以工作量比较大。传统模式 CPU 按一千个粒子计算每一个都要修改,关系到旋转不一样的数据以外,量比较大。

Leon 现场撸码测试了两种不同模式的优化效果,基于同屏 1K 左右粒子,6 个特效(平均 200 粒子),测试机 IP6 的环境下,实测录屏总结出:

  • FPS:  35 对比 60   提升 70%
  • 游戏逻辑时间: 24ms 对比 3-5ms  提升 400%
  • Render  消耗: 2-3ms 对比 3-5ms 下降 50-100%
  • 总体消耗时间: 26ms   对比 6-8ms  提升 250%

根据上面的数据比对,Leon 也给出了他的归纳和建议:

CPU 能够大量释放,增加了 Render 的时间,但整体上消耗时间是非常可观,让 CPU 更轻松地处理其他游戏逻辑。针对增加的 Rende 的时间,可以用极限优化,如减少纹理无效面积,粒子使用多点 Mesh、减少上传 VBO 次数,进行 batch合并处理。

《微信小游戏加载优化思路以及方案分享》

Cocos Creator 引擎开发工程师 王浩

首次启动时间是微信小游戏的重要指标之一,微信提供了文件系统相关接口,用于对资源文件进行操作,包括对文件的下载以及访问、缓存等,为每个小游戏都提供了50M的缓存空间供其使用,用于缓存资源加快启。在此情况下,游戏开发遭遇了性能瓶颈,例如:

  • 相关 API 消耗较大缓存资源造成首次启动游戏过慢;
  • 部分 API 在 iOS 与 Android上 性能表现不一致;
  • 查询文件次数较多;
  • 缓存目录结构不高效等。

王浩从缓存时机、API 的选用、缓存查询、调整缓存组织形式、开启 Gzip 等方面分享了微信小游戏加载的优化思路。

接着王浩对 AssetManager框架进行了简单介绍,AssetManager 是目前正在开发的用于替代现有 cc.loader 的新模块,除了增加新功能之外,还用于解决 cc.loader 一系列实现问题。AssetManager 与 cc.loader 相比,有几个方面的优势:

  • 模块划分更细,流程逻辑清晰,接口标准化
  • 更易扩展
  • 在部分平台(包括预览时)有显著性能提升
  • 增加功能,代码量减少

《CocosCreator Signed Distance Field Font Rendering》

腾讯游戏高级工程师—屈光辉《子龙山人》

来自腾讯的子龙山人为大家分享的主题内容是《SDF字体的原理以及如何在Creator引擎中使用SDF字体进行实际项目的文本性能优化》,他详细讲解了 SDF 字体的实现算法,通过对比 BMFont 来说明 SDF 字体在项目使用中的优缺点。

在说明 SDF 字体的优势之后,子龙山人又详细说明了在 Cocos Creator 中使用 SDF 字体的方法及完整过程,并通过 Demo 项目来向开发者展示 SDF 字体的强大效果,对实现 SDF 字体无损放大,字体描边,字体阴影等效果的相关 Shader 进行代码讲解,帮助在场开发者快速地理解 SDF 字体并掌握如何在项目中集成使用的方法。

这场 Cocos 技术交流会干货满满,无一人提前离场,与会开发者的热情一直持续到活动结束,也让 Cocos 再一次感受到了开发者对于游戏、对于技术的热爱,未来 Cocos 将牵手更多的技术大拿,去往更多城市,围绕“技术”开展交流会议,还请各位关注!对于会议内容、技术类型有什么意见和建议,也欢迎大家通过留言告诉我们噢!