白鹭引擎稳定版即将发布,后续路线图同步公开

极悦游戏技术 网络整理

自2017年12月28日腾讯推出微信小游戏平台至今,总共发布了约600款游戏,其中有314款使用白鹭引擎开发(约占52%),包括当下火爆的《最强弹一弹》、《海盗来了》、《萌犬变变变》、《最强飞刀手》、《损友圈》、《我画你猜》、《狼来了》、《神手》、《王城霸业OL》、《逐日战神OL》、《御天传奇》等,从单机休闲到挂机网游涵盖30多个品类,覆盖过亿设备。

网民制作的微信小游戏衍生表情包,四款非常火爆的游戏有三款采用白鹭引擎,一款采用 three.js。

白鹭引擎源码_白鹭引擎游戏开发_引擎白鹭开发游戏怎么玩

由于白鹭引擎制作的游戏覆盖终端用户量非常庞大,我们也收集到大量的反馈,其中包括一些性能和特定机型适配问题,经过持续半年的改进和广泛的真机测试,我们逐步修复了这些问题,并即将在明后两天发布引擎最新稳定版本。

白鹭引擎 5.2 发布

白鹭引擎在 2017年发布了 5.0 版本,并引入了一种新的版本发布策略,我们将版本的中间位的偶数定义为稳定版本,奇数位定义为新特性体验版本,引擎团队会同时维护这两个版本。当新特性版本足够稳定后,就会升级为稳定版本,然后引擎团队就会开始下一个新特性版本的研发和新晋升的稳定版的维护工作,如下图所示:

白鹭引擎源码_白鹭引擎游戏开发_引擎白鹭开发游戏怎么玩

白鹭引擎在 2017年12月发布了 5.1 版本,从发布到现在的六个月,白鹭官方团队逐步放出了引擎的诸多新特性及性能优化,目前版本已经趋于稳定,具备了晋升为稳定版 5.2 的条件。由于 5.2 版本是稳定版本,我们不会在这个版本中引入任何的新特性,而是把主要精力放在文档编写和最佳实践上,通过这种方式,引擎研发团队会暂缓新功能的迭代速度,专注于把当前的工作做的更为扎实和易用。

我们计划从引擎入门文档开始,投入专门人员逐步梳理白鹭引擎的全部文档,包括引擎基础功能EUI、AssetsManager、DragonBones以及命令行。除了文档之外,我们会进一步完善引擎的最佳实践以及更多的 Demo。

接下来梳理一下即将进入稳定版的特性,这些特性的绝大部分都已经在 5.1 版本中已经得到了充分的验证测试:

1. 渲染性能优化

5.1版本重点优化了2D引擎的底层执行效率,我们对2D渲染核心进行了中等规模的改造,使得绝大部分使用白鹭引擎制作的游戏在升级到5.1版本后平均帧频整体提升10%左右,由于渲染模块有一定的调整幅度,所以部分开发者在升级引擎后遇到了渲染错误的问题,我们也在5.1的后续版本中通过不断迭代修复了这些问题,目前已经重新趋于稳定。

2. AssetsManager 与自定义构建管线

5.1 引入了新的资源管理器 AssetsManager 代替原有的 RES 模块,并引入了自定义构建管线与其配合。通过这两个功能,开发者可以自由扩展构建管线,实现热更新、资源合并等功能,而不再局限于引擎的构建和发布命令。这两个功能发布后,开发者普遍反映缺乏对应文档,这是因为在 5.1 版本中,这部分功能仍然不时有一些调整,当进入 5.2 稳定版本后,我们会花费很大精力完善这里的文档。

3. 全平台发布支持

除了 HTML5 平台之外,白鹭引擎 5.1 版本还允许开发者将您的游戏发布到其他平台,包括 iOS , Android , 微信小游戏,QQ 玩一玩以及 Facebook Instant Game 平台。其中 iOS / Android 我们是采用了白鹭引擎团队耗费一年时间精心打造的 Egret Native 代替原有的 Egret iOS/Android Support。通过这种方式,开发者的游戏打包为 iOS / Android 原生App时,会大幅提升其渲染性能。

自2014年底起,白鹭引擎推出的2.0 版本便已经支持开发者将游戏打包为 iOS / Android App 发布到原生平台中,除此之外,2017年我们又推出了微端解决方案。在这次更新中,我们将 iOS / Android Support 的底层内核切换为了微端内核,并添加了新的 NativeRenderer 机制,大幅提升了打包后的 App 的渲染性能。

白鹭引擎源码_引擎白鹭开发游戏怎么玩_白鹭引擎游戏开发

之所以会有如此重大的提升,这是因为在之前的 iOS / Android Support 中,原生内核虽然提供了优化后的 HTML5 Canvas2D / WebGL 渲染接口,但是核心渲染驱动仍然是由 JavaScript 逻辑执行的,在新推出的 NativeRenderer 中,渲染驱动逻辑从 JavaScript 端迁移到了 Native C++ 端,这样做会大幅降低 JavaScript 引擎的负担,特别是在所有的 iOS 设备以及低端 Android 设备中表现极其明显,具体技术原理如下图所示。

白鹭引擎游戏开发_引擎白鹭开发游戏怎么玩_白鹭引擎源码

4. 支持发布到微信小游戏

受益于和微信团队长期的技术合作,白鹭引擎于微信小游戏正式发布当天放出了对微信小游戏的正式支持,通过白鹭引擎的后台数据,我们可以看到开发者平均每周使用白鹭引擎创建了超过4000个微信小游戏项目,这些数据可以从一个侧面证明微信小游戏的火爆。由于微信小游戏的底层运行环境并不是传统的 Web 容器,白鹭引擎在适配过程中,也在和小游戏开发者以及微信团队紧密沟通,共同解决了诸多问题。

在这里梳理一些较为常见的问题:

4.1 特定 GPU 的渲染出现花屏

这个问题和微信的纹理管理机制有关,具体问题体现是《最强弹一弹》这款游戏在特定一两款安卓手机上的特定纹理渲染会出现花屏,通过与游戏开发商、微信的技术同学、以及硬件提供商和芯片供应商的共同努力,这个问题在微信的灰度测试版本中得到了解决。

白鹭引擎源码_白鹭引擎游戏开发_引擎白鹭开发游戏怎么玩

4.2 文件合并与缓存优化

由于微信小游戏的缓存策略是每次重新进入游戏后,资源都会重新从网络端获取,所以引擎官方添加了本地缓存模块。考虑到微信小游戏的加载并发限制比浏览器低,为了提升加载效率,引擎还为部分开发者定制了零碎配置文件自动合并的插件。这些功能会在 5.2 版本中正式放出。目前已经有多款游戏正在采用这些优化方式,比如《海盗来了》

引擎白鹭开发游戏怎么玩_白鹭引擎源码_白鹭引擎游戏开发

4.3 游戏文字渲染出现黑块

这个问题高发于一些内存占用较大的场景,特别是进入后台之后再返回前台时,偶尔出现游戏中的所有文字变成黑块的情况,引擎曾经通过一种 hack 方式尝试解决这个问题。以《我画你猜》这款游戏为例,在应用了这种方法之后,游戏中的黑块问题的出现频率大大降低。除了这种 hack 方式以外,通过和微信技术团队的配合,在微信的灰度测试版本已经在底层完全修复了这个 BUG

白鹭引擎游戏开发_白鹭引擎源码_引擎白鹭开发游戏怎么玩

4.4 引擎包体积优化

白鹭引擎游戏开发_引擎白鹭开发游戏怎么玩_白鹭引擎源码

在白鹭引擎 5.1 刚发布时候,为了支持开放数据域渲染,开发者需要在主域和开放数据域各放置一份白鹭引擎,这样做导致了游戏初始包体积占用较大,为了解决这个问题极悦游戏平台,白鹭引擎单独为开放数据域定制了一份“极简引擎”,这个“极简引擎”除了包含最简单的渲染调用方式之外,考虑到大多数开发者使用开放数据域主要是用于实现游戏排行榜,我们还直接提供了一份可以直接使用的排行榜代码,以便尽可能的降低引擎的包体积。

以《女皇陛下》这款游戏为例,使用这种方式后,游戏的初始包体积降低了大约500k,这使得开发者可以将更多的素材放置在初始包中,降低网络请求。这个功能会在 5.2 版本正式提供

白鹭引擎游戏开发_白鹭引擎源码_引擎白鹭开发游戏怎么玩

4.5 皮肤尺寸优化

由于微信小游戏不支持动态代码加载,而之前白鹭引擎的 EUI 皮肤是通过动态代码生成的方式进行初始化的,所以为了能让 EUI 可以在微信小游戏上顺利运行,白鹭引擎的 EXML 发布引入了名为 CommonJS 的模式代替原有的 content 模式。这种模式可以在微信小游戏中正确运行,并且与 Content 模式相比体积略有降低,解析速度也更快。

但是这种做法产生了一个新的问题,由于微信小游戏的初始包最多只允许 4M,大量重度游戏仅皮肤文件就已经超过了2M,这导致了这种重度游戏无法发布到微信小游戏中。

为了解决这个问题,我们在 5.1.11版本中初步引入了名为 CommonJS2 的一种模式,并在即将发布的 5.2 版本中将其改为 JSON 模式。以《野猪来了OL》 这款游戏为例,通过这种新的模式,皮肤文件的体积有了大幅降低(大约降低至原有的 15% )。这个改动会随着 5.2 版本正式放出。

白鹭引擎游戏开发_白鹭引擎源码_引擎白鹭开发游戏怎么玩

5.3 版本后续计划

除了 Egret 5.2 稳定版之外,我们会同步放出一个 Egret 5.3 版本,Egret 5.3 暂时不会发布到 Egret Launcher 中,开发者应从 GitHub 上下载引擎的 5.3.x 分支获取。这个版本是引擎的开发版本,重点进行了以下优化:

2D渲染性能进一步优化

5.3 版本我们小幅度的重构了2D渲染模块,进一步提升了渲染性能,在极限 benchmark 下性能提升大约有 25%,但客观的讲,由于 2D 渲染模块已经被压榨到了一个很高的程度,在不大幅修改 API 的前提下,在实际游戏中尚未有明显的性能提升。

Egret3D

5.3 版本我们将内测已久的新版本 Egret3D 添加到了引擎中。与白鹭引擎早期发布的 Egret3D 相比,新版本主要包含了如下特性:

和最近半年向开发者提供的内测版本相比,这个版本的主要变化包括:

这个公开版本将在一两天内向开发者开放下载,为了方便开发,您可以加入 Egret3D 开发者群,直接向官方团队进行反馈和建议。

引擎白鹭开发游戏怎么玩_白鹭引擎游戏开发_白鹭引擎源码

如果显示无法加入群,您可以添加微信号 "egretengine" 为您的好友,好友通过后会将您添加至群中。

Paper

由于新版本 Egret3D是采用数据驱动开发,所以一款 3D 编辑器是非常重要的。白鹭引擎在 2017年开发了一款名为 Egret Paper 的组件实体系统编辑器,经过这半年的努力,这款编辑器已经可以基本支持 3D 项目的编辑,编辑器预计将会在 2018年6月下旬放出第一个内测版本,目前白鹭引擎官方团队已经在用这款编辑器开发游戏,提前给各位开发者透露一下:

白鹭引擎游戏开发_引擎白鹭开发游戏怎么玩_白鹭引擎源码

结语

Egret 5.2 和 5.3 版本都会在这周发布,白鹭引擎的成长离不开各位开发者朋友的支持,也欢迎各位开发者将游戏开发中遇到的问题同步反馈给引擎团队,大家一起努力把 HTML5 游戏生态做的更好。

联系我们

开发者技术交流区:bbs.egret.com

合作开放平台:open.egret.com

商务合作:bd@egret.com

招聘邮箱:hr@egret.com