8月1日,Egret3D正式版上线,本次更新的版本号从 0.x提升至 1.0,这意味着引擎已经足够成熟到可以将其应用于生产环境。您可以放心使用这个版本开发基于Web或者微信小游戏的3D游戏。
目前官方团队已经开发了多款即将发布到微信小游戏的3D产品,其性能、稳定性、适配性均已通过微信小游戏的兼容性测试与品控。
本次更新内容具体如下:
1.与 AssetsManager的res.json配置文件更好的共同工作
在内测阶段,Egret3D 包含了一个简单的资源管理类 Assets 。在 Egret 0.9 版本中,我们将其逻辑嫁接至了白鹭引擎的 AssetsManager 中,但是遗留了一个问题,即 Egret3D 所有的配置文件中的路径均使用文件的相对路径,而非AssetsManager 中的资源名。在正式版v1.0中,这个问题得到了解决,如下所示:
通过这种修改,引擎的资源管理机制会彻底统一,这为后续的资源加载效率优化奠定了基础。开发者可以通过 paper upgrade {your-project} 命令,将您的资源升级至最新版本。
2.优化加载效率,平均提升30%
在 Egret3D 内测阶段,受限于旧的 Asset 机制的限制,Egret3D的 Prefab资源无法并行加载。我们通过重构底层代码以及使用 AssetsManager 替换陈旧的机制,使得资源加载目前可以并行化。如下所示:
从上述代码中可以看出,由于本次发布的正式版v1.0支持资源的并行加载。经过真实游戏项目检测,加载效率会提升至少30%,配置文件资源体积也降低了大约10%。
3.更完善的材质系统,方便未来进一步扩展
1.0的材质系统进行了一些向下兼容的重构,方便未来扩展,并梳理结构,提升代码质量。通过这些重构,真实游戏项目在微信小游戏上的渲染性能整体提升了大约 10%。与此同时我们调整了材质配置文件的配置格式,将其修改为遵循GLTF标准的格式。您无需关注这些细节,只需执行paper upgrade {your_project}脚本,这些配置文件就会自动更新。
4.重构底层代码,为 Egret3D 编辑器做准备
Egret3D 编辑器目前已经应用在一款 3D 游戏中,为了保证Egret3D和编辑器可以无缝集成,我们这次更新修改了大量底层涉及生命周期,对象序列化反序列化相关机制,并保证上述修改对开发者尽可能完全透明,如果开发者已经在使用 Egret3D 0.9 版本开发项目,如果升级引擎后发现部分API不向下兼容,可以参考如下原则进行升级:
- 引擎内部使用了 StartSystem , UpdateSystem , EndSystem 替代 BehaviourSystem。
- 部分API从egret3d 命名空间调整至 paper 命名空间。
我们将在第一款使用 Egret3D编辑器的产品上线后(初步估算8月底),将 Egret3D 编辑器推送给部分开发者。届时我们的申请方式是采用内测邀请机制,邀请少量开发者率先进行试用,我们会优先将编辑器提供给已经立项了Egret3D项目的开发者。如果您已经开始开发 Egret3D项目,为了后续您可以更轻松的使用 Egret3D 编辑器,我们强烈建议您遵守如下开发规范:
- 尽可能的使用预制体配置文件( prefab.json ),而非硬编码在 TypeScript 源码中。
- 充分利用 paper.Behaviour 或者组件实体系统的方式进行开发。
- 遵循 Egret3D 提供的生命周期函数进行开发,而非直接调用浏览器的API。
5.文档更新
正式版1.0中,除了细节完善之外,我们重点优化了如下文档:
- 合并了【首页】与【新手上路-关于Egret3D】
- 添加【新手上路-HelloWorld源码剖析】文档
- 添加了【高级渲染特性-粒子系统】文档
- 完善了【Unity3D导出插件】文档
- 完善了【文件格式】文档
后续计划
白鹭引擎 Egret3D 团队目前保持每月一个大版本的迭代效率,在下个版本1.1中,我们计划为开发者带来如下新功能:
- 向部分开发者提供 Egret3D 编辑器的内测版,代号“Paper”
- 更完善的碰撞和物理系统
- 优化材质贴图的加载效率
- 完善文档
本文暂时没有评论,来添加一个吧(●'◡'●)