12月28日微信迎来更新,正式上线小游戏,并开放了小游戏开发文档和开发者工具。在微信发布新版本后,白鹭引擎立即添加了对于微信小游戏开发的支持,开发者只需要使用白鹭引擎的最新版本,通过使用白鹭引擎完整工具流,就可以快速创建、开发与发布微信小游戏,而无需过多的关注底层技术细节。 1如何创建微信小游戏项目 (1)创建微信小游戏项目需要您需要下载白鹭引擎最新版本,首先创建一个新的白鹭引擎项目。 (2)创建项目之后,点击项目设置按钮,将发布平台设置为微信小游戏,并下载白鹭引擎提供的微信小游戏支持库 。 (3)最后在项目配置中填写 appid,projectname等内容后,点击发布,即可将您的游戏发布到微信开发者工具中 (4)在发布之后,您可以在到微信开发者工具中预览及调试您的游戏。 2如何将现有白鹭引擎项目迁移至微信小游戏 由于微信小游戏与传统的HTML5游戏的底层机制有较大差异,所以使用白鹭引擎开发的 HTML5 游戏需要一定的开发工作量才能移植为一款微信小游戏。整体步骤分为三步: 将一款白鹭引擎游戏升级至 5.1.1 版本 将该游戏的发布目标设置为微信小游戏 进行适配性修改 具体这三步的处理方式如下: (1)将一款白鹭引擎游戏升级至 5.1.1 版本 白鹭引擎 5.1 目前暂不支持使用 egret upgrade 命令进行升级,请您下载 5.1 版本后,创建一个 5.1 新项目,然后将现有游戏逻辑和资源拷贝至新项目中。后续无论是 HTML5 版本,iOS / Android 版本还是小游戏版本,均使用这个新项目进行后续开发。 如果您的项目使用了 EUI,请将 EUI 的发布模式设置为 commonjs,并修改您的 ThemeAdapter.ts的实现,具体可以参考 5.1.1 版本创建的新项目的实现方式。 升级至 5.1.1 这一步骤可能占用您大约两小时至两天时间。主要风险在于引擎升级后,也许存在一些渲染错误的 BUG,经过了一个多月的内部测试以及多个开发者团队的反馈,我们已经解决了已知的所有问题,稳定性可以基本保障。但是如果您发现了问题,请及时与白鹭引擎团队联系,并提供可以复现的 Demo,白鹭引擎官方团队会第一时间处理。 (2)将游戏发布目标设置为微信小游戏 在执行这一步骤前,建议开发者首先创建一个新项目,并将新项目的发布目标设置为微信小游戏,将其发布并确保可以在微信IDE里正确预览,这样您会对整个项目结构更加熟悉。 通过白鹭最新的 Egret Launcher ,您可以直接将游戏发布目标设置为微信小游戏,如果您更偏爱命令行的调用方式,可以采用如下的调用方式: 执行上述步骤之后,您可以使用微信开发者工具打开项目,就可以看到您的项目了 (3)进行适配性修改 上述步骤均完成后,您就可以将您的项目迁入微信小游戏中,为了给最终用户提供更好的用户体验,微信小游戏对您的游戏存在一些技术限制,针对微信小游戏现在公布的制作标准其进行改造可能占用您一天至一个星期。具体限制如下: 禁止 eval , new Function 等动态代码加载机制,白鹭引擎的 EUI 使用了这种方式,已经通过将主题文件的发布策略改为 commonjs 进行了规避,如果您的项目采用了上述动态代码机制,需要采用其他方式实现。 微信小游戏没有直接执行 JavaScript 文件的接口,都是通过 require 方式进行加载,除了禁止动态加载外,require 由于是基于CommonJS 的模块机制,所以不支持全局对象,如果您的项目中存在了全局对象的跨文件访问,需要设置 window.object1 = object1 这样的方式强制将特定对象转为全局对象。由于白鹭引擎的项目会将您的项目所有文件编译为一个文件,所以这种问题主要出现在 main.js 文件与其他第三方库文件之间的全局调用上。 游戏总体积不得大于 4M,目前引擎的体积占用为 800k 左右,目前比较大的占用是生成的 commonjs 格式的皮肤文件,如果您的皮肤文件过大导致体积过大,请等待白鹭引擎后续版本的持续迭代优化 如果您的游戏资源大于4M,可以使用动态加载的机制,动态加载文件的缓存不得大于 50M,如果您的资源总体积可以控制在 50M 以内,只需要将部分资源文件不放置到项目中即可,但是如果总体积大于 50M,您需要设计资源的缓存存储和释放策略。再次强调,代码文件必须放在游戏包中,不可以动态加载。 需要对接微信相关接口,如用户信息、社交关系等,具体请参见微信提供的 API 文档与示例。 3后续路线图 微信小游戏上线或将为HTML5行业带来重要利好,为行业带来机遇与挑战,后续发展有待行业从业者共同探索。白鹭科技作为HTML5引擎研发商致力于为开发者提供更为便捷的开发,白鹭引擎后续会与微信团队进行进一步的技术合作,完善使用白鹭引擎开发微信小游戏的开发体验。主要包含: 将微信的文件读写 API 与白鹭引擎资源管理器进行更紧密的集成。 开发效率与工作流优化。
|