Cocos Creator v1.5发布:物理集成、2D摄像机、TypeScript

投稿人/来源: | 2017-05-25 14:56 | ypeScript Creator Cocos 1.5

在经过1个多月的Beta版发布和社区测试,直至跳票两周之后,我们终于能够发布 Cocos Creator v1.5 正式版了。这个版本又给大家带来了很多实用的新功能。

Cocos Creator 作为第二代编辑器推出之后,逐渐被社区广泛接受,我们在逐步补齐了Cocos Studio的原有功能之后,并不止步于在 Cocos2d-x 框架上修修补补,而是在v1.5里面增加了一些『我们在7年的 Cocos 历史上不曾做到的新功能』。希望大家能看到引擎团队的诚意。

这个v1.5版本最值得关注的功能亮点:

- 集成 Box2D 物理引擎 ,加入刚体和关节组件

- 加入摄像机组件,可以在无损性能的情况下支持高速卷屏

- TypeScript 和 ES6 Class 支持,全面强化 IDE 代码提示

- 优化场景加载流程,场景加载速度提高38%

- 跨项目导出/导入资源,自动关联资源依赖

- 增强 Label 和 EditBox 在 Windows 桌面平台和 Android 平台的使用体验和兼容性

- 热更新支持中断后续传

 

首先,我在标题里强调了三个功能:物理引擎集成、2D摄像机、TypeScript,这三个功能着重弥补了Cocos Creator 在动作游戏和大型项目开发方面的不足。

其次,我们进一步优化了引擎加载的逻辑,大幅提升了场景加载和解析的速度达38%。另外我们重构了 Windows 桌面和 Android 平台上Label和输入框的实现,大幅增强了使用体验和兼容性。

最后,除了上述新功能和大幅度的改进之外,我们在 Creator 1.5 版本内一共修复了54个大大小小的bug,也能带来体验上的不少提升。

下面我们将详细介绍Cocos Creator v1.5重点功能更新。

集成 Box2D 物理引擎

Cocos Creator 在 1.5 版本中终于集成了知名的物理引擎 [Box2D](https://github.com/erincatto/Box2D),这款容易上手功能强大的物理引擎将为 Cocos Creator 带来全面的物理检测和运算能力,全面支持你的动作和物理游戏。

除去通用的物理引擎功能之外,Cocos Creator 集成后的物理系统中还加入了刚体(Rigidbody)和关节(Joint)组件,加上专门为物理引擎定制的碰撞体(Collider)组件,我们仅仅通过在场景中摆放各种不同的物理组件,就可以实现有趣的交互效果了。配合新加入的 Camera 摄像机组件,在编辑器中完成丰富关卡内容的平台动作卷屏游戏将会非常轻松!

 

摄像机组件

开发动作和冒险类游戏时,视角的移动和场景的卷屏必不可少,之前开发者们只能通过整体移动场景里所有节点来模拟视角移动的效果,但大量节点位移的运算会影响性能,尤其是在加入物理引擎之后,每次移动碰撞体都会导致重新生成和计算物理世界。

而在 1.5 版本中加入的 Camera 组件就能够完美解决视角移动的问题,Camera 组件中可以指定一个或多个节点作为被摄像机渲染的目标,将场景的根节点拖拽到 Camera 的目标列表中,之后移动 Camera 组件所在节点,就可以实现场景卷屏的效果。Camera 的渲染是通过矩阵运算来实现的,因此不会对场景中的运动计算带来额外的开销,可以说是 2D 动作游戏卷屏的完美解决方案!

 

TypeScript 和 ES6 Class 支持

为了更好的支持各类 IDE(如 VS Code, WebStorm 等)里的游戏脚本代码提示,我们在 1.5 版对 cc.Class 的声明方式进行了一次重构,现在可以在 Cocos Creator 项目里使用 ES6 Class 或 TypeScript 来声明组件和编写游戏逻辑了。

之前很多有静态语言使用经验的用户在上手 Creator 时反馈代码提示和自动完成功能较差,无法准确的提示组件的成员属性和方法,以及引用其他脚本时也无法提示被引用脚本里的成员。这主要是由于编辑器序列化数据需要的特殊声明格式和各大 IDE 能够识别的原生语法不符合。而在这次重构中我们引入了装饰器语法来帮助编辑器进行数据识别,之后我们就可以使用 ES6 和 TypeScript 的标准语法声明 cc.Class 和 cc.Component 了。使用标准语法声明的 cc.Class 所有成员类型都能够被各种主流 IDE 自动识别,加上引擎 API 类型声明文件 creator.d.ts,使得目前 Creator 脚本开发时可以正确提示几乎所有的相关接口代码!

TypeScript 支持强类型声明,对于多人协作开发的大型项目来说,也能够提供更准确的接口通讯规范和错误报告。推荐有相关强类型语言开发经验和大型项目的技术团队尝试!

 

场景加载速度提升 38%

Web 版游戏的最大优势就是免安装,即开即玩,因此 web 版游戏场景的加载速度,尤其是初始场景的加载速度对于用户体验和留存都至关重要。本次更新在场景资源加载方面进行了大幅优化,使用对象池让原来在 uuid-loader 和 deserialize(反序列化)模块中的对象创建频率大大减少,在本地预览时场景加载速度提升幅度达到 38%。但实际项目中加载速度的瓶颈可能来自网络连接速度,所以实际游戏中的提升幅度可能没这么大,但基本也能有 200ms~300ms 以上提升。

跨项目资源导入/导出共享

在前一个版本中,我们通过扩展插件的系统实现了项目间共享一个资源路径的功能,但还有更多朋友希望我们能够提供一种更简单直接的,跨项目导入导出资源的机制,来实现将已有项目中的资源导入到新项目,或者美术人员和开发人员的项目分开,并通过导出导入来生产和整合美术资源的生产线。

通过主菜单的「文件 -> 导入/导出资源」打开的资源导入导出工具,我们可以轻松的导出场景或 Prefab,选择导出目标后会自动列出该场景和 Prefab 依赖的资源,导出时自动生成 zip 包。在另一个项目中导入该 zip 包即可。如果遇到 uuid 冲突还可以选择自动更新 uuid 以保留两个版本的资源。

 

完整改动列表可以到Cocos官网(http://www.cocos.com/category/blog)查看。

下个版本 Creator v1.6 的重点功能预告

1、Bug修复。社区里很多人提出了来一个『0 Feature』的版本,我觉得这个建议蛮好,v1.6的主要基调就是修bug,以及提高性能。

2、文档更新。虽然同事们一直在努力更新文档,但是我看了论坛反馈之后,自己再去看这些中文文档,发现同事们还是写得太跳跃了,对于引擎人员很多地方觉得显而易见就一笔带过,实际上很容易给刚入门的新手带来困惑。

3、原生平台性能优化,升级SpiderMonkey版本 —— 目前用的是三年前的老版本了。同时,这项工作会重构JSB API的绑定层面,目前的进度是,我们已经让一个JavaScript - C++绑定层的设计不仅可以用在Spider Monkey上,也可以用在iOS的JavaScriptCore、Android的v8、微软的ChakraCore等不同JS引擎上,这可以最终达到减小包体积、提高JS引擎性能的目的。我非常希望这项功能可以赶上v1.6版本的发布时间点。这项工作实际上已经启动了几周了,但还处于比较初期的状态。

写了那么多,还是希望大家能感受到Cocos引擎开发团队的诚意,如果你在大型项目里希望使用TypeScript以获得更友好的IDE编码提示,如果你希望在编辑器里拖拖拽拽就完成游戏的物理引擎设定,如果你正打算开发动作游戏,或者你只是想让当前的游戏场景加载更快,那么在今天赶紧下载Cocos Creator 1.5试试呗。

Cocos Creator v1.5下载地址:

http://www.cocos.com/download