白鹭引擎 4.0.1 发布日志
===============================


最近更新时间：2017年1月23日


欢迎您使用白鹭引擎

## 概述

白鹭引擎包含了白鹭时代研发的遵循HTML5标准的游戏引擎。他包括 2D / 3D 渲染核心、GUI体系、音频管理、资源管理等游戏引擎的常用模块。

通过使用白鹭引擎，开发者可以尽可能的不用关注浏览器的底层实现，解决HTML5游戏性能问题及碎片化问题，灵活地满足开发者开发2D或3D游戏的需求。

本次更新重点为完善白鹭引擎的命令行功能，提供更易用、适配性更高的 3D 渲染核心，并为 4.0.0 提供缺陷修复及更多的文档支持。

## 更新内容

* 命令行
    * 参与编译的 TypeScript 文件列表由 tsconfig.json 进行开发者自由指定，与标准 TypeScript 项目行为一致
    * 完善项目的文件结构，如果第三方库已经在项目中，不会重复拷贝至 libs/modules 文件夹中
    * 修复一个由复杂文件排序引发的构建 BUG 
    * 修复了 egret publish 后， DEBUG 枚举仍然为 true 的 BUG 
    * 精简命令行体积，从 21mb 降低至 18mb，并重构内部逻辑，为未来进一步扩展做准备
    * 新项目模板默认添加 Promise 支持
    * 使用 egret upgrade 命令升级至 4.0.1 会为项目添加 Promise 支持
    * 不再支持白鹭引擎 2.0 以下版本的项目升级至 4.0 版本

* 白鹭引擎 3D 渲染核心
    * 允许在白鹭引擎中直接添加 3D 渲染模块，开发者可以在现有的 2D 游戏中，快速添加 3D 场景地形、人物、特效等功能，并复用游戏的现有 UI。
    * 大幅提升 3D 渲染核心在低端机的表现，大部分 2014年出厂的旗舰机型（ 如小米4，Nexus 5等）均可流畅运行
    * 降低部分 Shader 的编译时间，保证游戏的启动速度更快
    * 略微提升整体性能，大约有 5% - 10% 的性能提升
    * Unity 导出插件更新至最新版本
    * 采用 TypeScript 2.1.4 编译
    * 创建新的 3D 项目采用白鹭引擎的资源管理框架以及 2D UI 

* 资源管理框架
    * 修复加载 BitmapFont 类型文件可能报错的 BUG  
    * 完善多处 ```res```命令行和运行时的报错信息，提供更友好的错误提示
    * 修复 ```res build```在文件删除之后，资源配置文件不会正确同步删除的BUG
    * 在创建项目时允许创建资源管理框架的示例项目
    * 完善文档


## 升级策略

* 执行 egret upgrade 命令升级至 4.0.1 版本时，内部会执行以下逻辑
    * 为 ```tsconfig.json``` 添加 ```lib:['es5','dom','es2015.promise']``` 字段
    * 为开发者的项目中添加 ```polyfill/promise.js``` 文件
    * 开发者请在升级后**手动**在您项目中添加对 ```polyfill/promise``` 的脚本引用，具体可以参见使用 4.0.1 创建的新项目的 ```index.html```文件
* 升级至 4.0.1 版本后，引擎不再强制读取项目中的 ```src``` 和 ```libs```文件夹进行编译，而是由 ```tsconfig.json``` 的 ```include``` 或 ```exclude``` 字段决定。
> 在 4.0.1 版本，目前仍然强制约定所有的 ```.ts``` 源文件必须在 ```src```文件夹中，而```.d.ts```文件可以定义在任意位置
> 如果需要排除特定文件夹不要编译，可以参考以下代码
> ```
> {
>    "exclude" : [
>        "node_modules",
>        "src/somewhere/donot/compile/**/*.ts
>    ]
>}
> ```
> 预计在下的版本（4.0.2）中，源代码也将可以放置于任意文件夹


* 如果第三方库的路径在项目中，则不再将项目拷贝至 ```libs/modules``` 文件夹中，这一方面是为了确保不会因为上一条改变带来重复编译文件，另一方面也降低开发者的项目复杂度。
* 如果开发者由于特定原因，手动将引擎版本从 4.0.1 降级至 3.x，请在降级后**手动**删除```tsconfig.json```中的```lib```字段。


## 已知问题

* 修改 ```tsconfig.json```后，执行 ``` egret build ``` 不会生效，需执行 ``` egret clean ```


## 路线图

白鹭引擎将在未来的半年内，重点解决以下问题：

* 将白鹭引擎进一步向 ES2015+ / npm 、标准 TypeScript 方向靠拢，提升开发者的开发效率。
* 引入模块化策略，允许开发者针对特定模块进行升级，以便尽可能降低已经在生产环境运行的游戏因为升级引擎带来潜在问题。
* 融合白鹭引擎的 2D 与 3D 渲染，并提升渲染核心的可扩展性，允许开发者更灵活的进行定制特效。
* 进一步完善资源管理框架，帮助开发者提升对资源加载、释放方面的开发效率，并降低流量消耗。
* 与 Egret Wing 配合，进一步完善 EXML / EUI 的机制，帮助开发者提升 UI 的开发与渲染效率。
* 重点解决开发者在2016年集中反馈的问题，具体链接参见[这里](http://bbs.egret.com/thread-25005-1-1.html)