CocosCreator以Asset Bundle實現(xiàn)大廳+子游戲

前言

在寫這篇文章前峡碉,之前有寫過一篇以CocosCreator以subpackages分包實現(xiàn)大廳+子游戲,但以這種方式存在一個問題壹蔓,就是沒有做到實際意義上的大廳+子游戲,官方的說明如下:

配置為子包后咖楣,只有原生資源破讨,例如圖片和音頻會被最終放到子包中喳整。Prefab蜀漆、AnimationClip 等 JSON 類型的資源仍然會放在主包里

這就意味著子包如果在只改變了Prefab慎皱、AnimationClip等JSON類型資源時老虫,按我們的理解是改變了子游戲,更新子游戲子包茫多,但其實這個時候祈匙,是更新大廳,這類生成的資源都包含在主包內(nèi)天揖,而并沒有包含在子包里夺欲。

從v2.4,Creator 正式支持 Asset Bundle 功能宝剖。Asset Bundle 作為資源模塊化工具洁闰,允許開發(fā)者按照項目需求將貼圖、腳本万细、場景等資源劃分在多個 Asset Bundle 中扑眉,然后在游戲運行過程中,按照需求去加載不同的 Asset Bundle赖钞,以減少啟動時需要加載的資源數(shù)量腰素,從而減少首次下載和加載游戲時所需的時間。
Asset Bundle 可以按需求隨意放置雪营,比如可以放在遠程服務(wù)器弓千、本地、或者小游戲平臺的分包中献起。也可以跨項目復(fù)用洋访,用于加載子項目中的 Asset Bundle镣陕。

這個方式,徹底的解決了之前版本的短板姻政,真正意義上的實現(xiàn)了資源及代碼的分包呆抑。

項目環(huán)境

CocosCreator 2.4.0
Microsoft Visual Studio Enterprise 2015(SDK安裝 : Windows Phone SDK 8.0)
Microsoft Visual Code
Android Studio 3.6.3(API Level : android-28 NDK : https://dl.google.com/android/repository/android-ndk-r18b-windows-x86_64.zip

項目示例

示例Git地址https://github.com/TopDiscover/QuickFramework/tree/2.4.0

項目關(guān)鍵點

1、該方案基于Asset Bundle
2汁展、大廳與子游戲代碼作為同一項目開發(fā)鹊碍,方便對資源及代碼的管理,可有效的解決多項目開發(fā)可能產(chǎn)生uuid重復(fù)問題
3食绿、子游戲之間代碼及資源不能相互引用
4侈咕、大廳與子游戲之間的通信全部以事件方式進行交互

項目結(jié)構(gòu)

大廳與子游戲分別單獨的作為一個整體,結(jié)構(gòu)如下:


image.png

紅色區(qū)域
resources目錄為大廳的資源(大廳+公共)
script目錄為大廳的代碼(大廳+公共+框架)

黃色區(qū)域的子游戲器紧,分別配置Bundle,如下:


image.png

image.png

項目擴展插件使用

image.png

1耀销、引擎修正

為了后面使用方便,安裝好你的Creator2.4.0品洛,直接使用引擎修正后树姨,再構(gòu)建項目,對引擎修改的部分會自動生成到你的構(gòu)造項目中桥状,如果你的項目目前已經(jīng)構(gòu)建,對引擎改動的代碼放置在package/engine目錄
下,到該目錄下用對比工具同步到你的項目中硝清,目前還未支持對已經(jīng)生成構(gòu)建的項目進行引擎代碼的修正

2辅斟、資源引用檢測

在游戲開發(fā)過程中,由于某些子游戲相當類似芦拿,所有直接復(fù)制進行修改士飒,此時復(fù)制得到的子游戲的資源引用仍然指向以前的地方,并未指向復(fù)制后得到的資源蔗崎,又或者不小心在A游戲使用了B游戲的資源酵幕,此時在打包完成后,且子游戲都不放置到包內(nèi)缓苛,當通過熱更新子游戲進入時芳撒,由于只下載了B游戲的資源,但B游戲的資源大多都還指向A游戲未桥,此時會造成找不到資源可能產(chǎn)生崩潰的現(xiàn)象笔刹。但當我們游戲的預(yù)置體在足夠多的情況,如果手動的排查冬耿,是一個非常大的工程舌菜,所以這邊提供了一個檢測工具,去檢測你的子游戲預(yù)置體是否使用到了其它子游戲的資源亦镶,如下圖

image

當你的子游戲做完后日月,可使用插件來檢測完成的子游戲是否引用了其它子游戲的資源袱瓮,控制臺的警告就是你引用了不屬于自己子游戲的資源,需要自己手動去處理掉這些問題

3爱咬、熱更新工具

image.png

工具說明

大廳生成Manifest配置
版本號:當前大廳的版本號
資源服務(wù)器地址:cdn資源服務(wù)器地址

build項目資源文件目錄:指定你的build目錄尺借,如

image

點擊生成會生成版本控制文件如下圖


image.png

image.png

子游戲生成Manifest配置
目錄只能配置子游戲的游戲版本號
測試環(huán)境一欄
主要關(guān)注本地server物理路徑,可以指定你的服務(wù)器路徑台颠,熱更新相關(guān)文件直接部署到你的服務(wù)器
如我本地服務(wù)器:


image.png

點擊部署褐望,最終服務(wù)器部署的資源如下:


image.png

執(zhí)行子游戲包剔除:
當你部署完成后,如果不希望把某個子游戲放入到原始包內(nèi)串前,可執(zhí)行這個命令剔除不包含在包內(nèi)的子游戲

4瘫里、擴展插件配置說明

熱更新子游戲及大廳版本的配置及資源檢測插件中顯示的游戲在packages/config/games.json配置,當開發(fā)完成子游戲時荡碾,如果需要對其實資源引用合法性檢測及版本做更新時谨读,直接對games.json進行修改

示例測試

1、構(gòu)建版本

image.png

2坛吁、生成熱更新版本控制文件

使用熱更新插件生成熱更新版本控制文件劳殖,并部署到自己的測試服務(wù)器,如下


image.png

3拨脉,剔除子游戲

如果希望子游戲在包內(nèi)哆姻,可在【是否包含在原始包內(nèi)】打勾,否則相反
這里測試一個在包內(nèi)一個不再包內(nèi)的情況玫膀,配置如下

image

4矛缨、win32平臺編譯運行

打開build\jsb-default\frameworks\runtime-src\proj.win32的工程編譯打開游戲如下


image.png

左邊為該游戲的工作目錄,目前主包并沒有包含有子游戲的代碼及資源
分別進入兩個子游戲之后帖旨,本地緩存如下箕昭,gameTwo不在包含,下載子游戲 后運行解阅,gameOne在包內(nèi)落竹,由于跟服務(wù)器版本一致,不會下載货抄,直接使用本地資源及代碼
運行游戲1述召,未產(chǎn)生資源代碼的下載,直接使用本地資源代碼


image.png

運行游戲2碉熄,下載了服務(wù)器最新資源及代碼如下
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桨武,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子锈津,更是在濱河造成了極大的恐慌呀酸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琼梆,死亡現(xiàn)場離奇詭異性誉,居然都是意外死亡窿吩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門错览,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纫雁,“玉大人,你說我怎么就攤上這事倾哺≡埃” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵羞海,是天一觀的道長忌愚。 經(jīng)常有香客問我,道長却邓,這世上最難降的妖魔是什么硕糊? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮腊徙,結(jié)果婚禮上简十,老公的妹妹穿的比我還像新娘。我一直安慰自己撬腾,他們只是感情好螟蝙,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著民傻,像睡著了一般胶逢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饰潜,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音和簸,去河邊找鬼彭雾。 笑死,一個胖子當著我的面吹牛锁保,可吹牛的內(nèi)容都是我干的薯酝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爽柒,長吁一口氣:“原來是場噩夢啊……” “哼吴菠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浩村,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤做葵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后心墅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酿矢,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡榨乎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘫筐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜜暑。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖策肝,靈堂內(nèi)的尸體忽然破棺而出肛捍,到底是詐尸還是另有隱情,我是刑警寧澤之众,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布拙毫,位于F島的核電站,受9級特大地震影響酝枢,放射性物質(zhì)發(fā)生泄漏恬偷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一帘睦、第九天 我趴在偏房一處隱蔽的房頂上張望袍患。 院中可真熱鬧,春花似錦竣付、人聲如沸诡延。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肆良。三九已至,卻和暖如春逸绎,著一層夾襖步出監(jiān)牢的瞬間惹恃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工棺牧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留巫糙,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓颊乘,卻偏偏與公主長得像参淹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子乏悄,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354