Egret Engine官方版(白鷺引擎)是一款開(kāi)源免費(fèi)的遵循HTML5標(biāo)準(zhǔn)的2D、3D引擎,解決了HTML5性能問(wèn)題及碎片化問(wèn)題,靈活地滿足開(kāi)發(fā)者開(kāi)發(fā)2D或3D游戲的需求,并有著較強(qiáng)的跨平臺(tái)運(yùn)行能力。
多平臺(tái)渠道功能一鍵接入
可以快速接入眾多游戲渠道、支付、用戶(hù)系統(tǒng)等接入更加輕松。
較高的項(xiàng)目開(kāi)發(fā)效率
簡(jiǎn)潔、易用、高效的API,讓游戲開(kāi)發(fā)像寫(xiě)作一樣簡(jiǎn)單。完善的中文文檔說(shuō)明,讓你快速上手。
完整的游戲開(kāi)發(fā)工作流
從資源配置到代碼編寫(xiě)、再到調(diào)試發(fā)布,針對(duì)每個(gè)環(huán)節(jié)提供不同工具幫你完成。
較強(qiáng)的跨平臺(tái)支持
完善的2D、3D引擎,忽略平臺(tái)差異性,寫(xiě)一份代碼在任何平臺(tái)都可使用。
高速的運(yùn)行性能
Egret底層針對(duì)不同瀏覽器優(yōu)化策略進(jìn)行大量?jī)?yōu)化,讓你的代碼運(yùn)行計(jì)算處于健壯性狀態(tài)。
獨(dú)有的臟矩形渲染
內(nèi)置臟矩形算法可幫助你優(yōu)化游戲畫(huà)面渲染性能,整體性能提升1倍,項(xiàng)目運(yùn)行更加流暢
組件化的EUI系統(tǒng)
更好的屏幕適配,功能強(qiáng)大的組件系統(tǒng),更加優(yōu)化的渲染體系,新手易用性更強(qiáng)。
下載本站安裝包,雙擊運(yùn)行后,跟隨安裝向?qū)ё撸?ensp;稍等片刻即可完成安裝。
安裝引擎
下載Egret Engine。
安裝開(kāi)發(fā)工具
打開(kāi) Egret Launcher,會(huì)顯示登錄界面,如下圖。
登陸成功后會(huì)顯示 Egret Launcher 主界面。
創(chuàng)建項(xiàng)目
1、點(diǎn)擊菜單 項(xiàng)目 -> 創(chuàng)建項(xiàng)目 來(lái)創(chuàng)建項(xiàng)目,如下圖。
也可以選擇 導(dǎo)入項(xiàng)目 來(lái)導(dǎo)入已有項(xiàng)目。
2、在彈出的新建項(xiàng)目面板中,設(shè)置項(xiàng)目的基本配置,如下圖。
項(xiàng)目名稱(chēng)
當(dāng)前項(xiàng)目的名稱(chēng),如 HelloWorld。
項(xiàng)目路徑
該項(xiàng)目所存放的文件路徑。
項(xiàng)目類(lèi)型
該項(xiàng)目的項(xiàng)目類(lèi)型,如 Egret 游戲項(xiàng)目 , Egret EUI 項(xiàng)目。
引擎版本
當(dāng)前項(xiàng)目所使用的 Egret 的版本。
選擇擴(kuò)展庫(kù)
項(xiàng)目中需要使用的系統(tǒng)庫(kù)。更多關(guān)于擴(kuò)展庫(kù)選擇的介紹可以參考:擴(kuò)展庫(kù)簡(jiǎn)介
舞臺(tái)尺寸
默認(rèn)游戲舞臺(tái)的高度與寬度,以像素為單位.
縮放模式
屏幕的適配方式,這里選擇showALL模式。更多關(guān)于縮放模式的介紹可以參考:屏幕適配
旋轉(zhuǎn)方式
屏幕的旋轉(zhuǎn)模式,這里選擇auto模式。更多關(guān)于旋轉(zhuǎn)設(shè)置的介紹可以參考:屏幕適配
點(diǎn)擊 創(chuàng)建 ,創(chuàng)建Hello World項(xiàng)目。
項(xiàng)目可以直接在Egret Launcher 中進(jìn)行打開(kāi),管理。
項(xiàng)目結(jié)構(gòu)
在Egret Wing左側(cè),可看到當(dāng)前項(xiàng)目的目錄結(jié)構(gòu):
各文件夾功能說(shuō)明
.wing:包括 Egret 項(xiàng)目的任務(wù)配置文件和啟動(dòng)配置文件。
bin-debug:項(xiàng)目調(diào)試時(shí),所產(chǎn)生的文件存放于此目錄。
libs:庫(kù)文件,包括 Egret 核心庫(kù)和其他擴(kuò)展庫(kù)存放于此目錄。
resource:項(xiàng)目資源文件存放于此目錄。
script:項(xiàng)目構(gòu)建和發(fā)布時(shí)需要用到的腳本文件存放在此目錄。
src:項(xiàng)目代碼文件存放于此目錄。
template:項(xiàng)目模板文件存放于此目錄。
egretProperties.json:項(xiàng)目的配置文件。具體的配置說(shuō)明可以參考:EgretProperties說(shuō)明
index.html:入口文件。具體的配置說(shuō)明可以參考:入口文件說(shuō)明
manifest.json:清單文件。
tsconfig.json:typescript 編譯配置文件。
wingProperties.json:Egret Wing 項(xiàng)目配置文件。
運(yùn)行項(xiàng)目
點(diǎn)擊菜單“項(xiàng)目”->“構(gòu)建”,編譯項(xiàng)目,如下圖。
構(gòu)建完成之后點(diǎn)擊菜單“項(xiàng)目”->“調(diào)試”,運(yùn)行項(xiàng)目,如下圖。
如何分包加載資源?
關(guān)于微信小游戲中新加入的分包加載 API
微信小游戲增加了分包加載功能(微信 6.6.7 客戶(hù)端),運(yùn)用分包功能,小游戲代碼包總上限可以從之前的 4 M提升至 8 M。開(kāi)發(fā)者可以根據(jù)游戲品類(lèi)和場(chǎng)景需要,在合適時(shí)機(jī)加載指定包,提升打開(kāi)速度,優(yōu)化用戶(hù)體驗(yàn)。
微信小游戲之所以提供了分包的策略,最主要的目標(biāo)是希望開(kāi)發(fā)者將包體積盡可能降低,將首屏加載的壓力分散到游戲邏輯中,保證盡快給玩家一個(gè)可以交互的界面,而不是停留在微信小游戲的啟動(dòng)頁(yè)中。為此,微信小游戲本次更新中不僅僅更新了分包加載,也在管理后臺(tái)的運(yùn)維中心提供了加載性能監(jiān)控功能,允許開(kāi)發(fā)者針對(duì)上述數(shù)據(jù)數(shù)據(jù)分析功能,正是希望通過(guò)這些數(shù)據(jù)分析能力幫助開(kāi)發(fā)者更精細(xì)化的優(yōu)化小游戲的加載效率。
因此,將微信的本次更新簡(jiǎn)單粗暴的理解為“包體積從4M提升到了8M”是片面的。也很不建議開(kāi)發(fā)者直接這樣做,因?yàn)槟壳澳匀灰嫒菸⑿挪淮嬖诜职螺d的老版本,如果您將您的游戲直接放置了8M的分包,就會(huì)在用戶(hù)首次啟動(dòng)時(shí)必須加載完8M資源才能跳出啟動(dòng)頁(yè),這也不是很好的用戶(hù)體驗(yàn)。
為此,白鷺引擎的策略是,引入一個(gè) loading.js 的邏輯,并將其與白鷺引擎的核心代碼(以及最簡(jiǎn)化的loading資源)打包為主包,然后在 loading.js 中去動(dòng)態(tài)下載子包,并在下載過(guò)程中借助已經(jīng)加載的白鷺引擎為用戶(hù)渲染出 Loading 界面。
之所以將微信分包策略與白鷺引擎采用這種方式結(jié)合,是在效仿頁(yè)游的分包機(jī)制。幾乎所有的 Flash 頁(yè)游都會(huì)至少存在兩個(gè) SWF 文件(可以近似理解為編譯后的代碼包文件),第一個(gè)SWF文件只負(fù)責(zé)加載邏輯并保持其體積盡可能小,而真正的業(yè)務(wù)邏輯由于代碼總編譯體積很大,都會(huì)放在后續(xù)加載。
最后用一張圖概述:
如何在白鷺引擎中使用分包下載
借助于白鷺引擎 5.1 版引入的新的自定義構(gòu)建管線功能,您無(wú)需升級(jí)白鷺引擎至最新版本,而只是在構(gòu)建管線中添加一些插件,并調(diào)整少量邏輯就可以完成此改動(dòng)。
考慮到這項(xiàng)功還沒(méi)有經(jīng)過(guò)長(zhǎng)時(shí)間的測(cè)試,我們暫時(shí)不將該功能集成在引擎里,而是給開(kāi)發(fā)者提供一個(gè)示例項(xiàng)目。開(kāi)發(fā)者應(yīng)首先在引擎提供的示例項(xiàng)目中將該功能跑通,然后再將其應(yīng)用于您的正式項(xiàng)目。
步驟一:下載示例項(xiàng)目
您可以在 https://github.com/himuil/subPackageDemo 處下載示例項(xiàng)目,該項(xiàng)目可以直接運(yùn)行看到效果
該項(xiàng)目使用了 Egret 5.2.3 版本,但是您也可以將 egretProperties.json 中的 engineVersion 和 compilerVersion 調(diào)整為您的引擎版本,我們支持 5.1 以上的版本。
步驟二:將該項(xiàng)目移植進(jìn)您的游戲
將 scripts/wxgame/subpackage.ts 拷貝進(jìn)您的項(xiàng)目
修改 config.wxgame.ts,將 ManifestPlugin 替換為 SubPackagePlugin (注意,您需要修改 build 和 publish)
修改 config.wxgame.ts 中的 CleanPlugin,將 subpackage 對(duì)應(yīng)的目錄清除
將示例項(xiàng)目的 EgretSubpackageLoading.js 拷貝進(jìn)您的微信小游戲項(xiàng)目
修改微信小游戲項(xiàng)目的 game.json,參考示例項(xiàng)目,引入 subpackages 屬性
修改微信小游戲項(xiàng)目的 game.js,參考示例項(xiàng)目,重點(diǎn)是添加調(diào)用 wx.loadSubPackage 的邏輯
步驟三:高級(jí)用法
您可以通過(guò)修改 SubPackagePlugin 的參數(shù)和 game.json 的 subpackage 字段配置多個(gè) subpackage
您可以在游戲過(guò)程運(yùn)行中,而不是游戲初始化時(shí)加載某個(gè) subpackage,比如您可以在游戲啟動(dòng)時(shí)只加載一個(gè)登陸頁(yè)面,在用戶(hù)登陸之后再加載游戲主邏輯。
每個(gè) subpackage 可以包含多個(gè) js 文件
網(wǎng)友評(píng)論