Cocos 3.x 發(fā)布系列一 微信小游戲

參考
快過年了,分享一個平臺判斷的代碼
構(gòu)建時常量

官方文檔 跨平臺發(fā)布游戲
CocosCreator小游戲項目的遠程資源管理總結(jié)
Creator+微信小游戲(2):服務(wù)器遠程加載資源(4M限制、socketio問題)
Cocos Creator踩坑篇:微信小游戲?qū)①Y源放到遠程服務(wù)器并加載的完整流程

一闹瞧、發(fā)布微信小游戲
1.根據(jù)微信官方文檔注冊小游戲賬號

如果只能看到小程序苹支,看不到小游戲寞焙。需要根據(jù)指引填寫信息和提交相應(yīng)的資料锅移,服務(wù)類目應(yīng)選擇“游戲”吕粗,子類目可以先選擇“休閑游戲”纺荧,就可以擁有自己的小游戲帳號。

2.根據(jù)COCOS官方文檔發(fā)布微信小游戲

這里注意發(fā)布面板填上自己的appid

3.使用微信開發(fā)者工具溯泣,選項目->導(dǎo)入虐秋,就能看到自己的小游戲了。
4.真機調(diào)試報錯
image.png

小游戲打包超過4M太正常了垃沦。常規(guī)做法是把res目錄(游戲資源)放到遠程服務(wù)器客给,小游戲啟動的時候自動去服務(wù)器下載資源。
如果要想正常發(fā)布你的小游戲肢簿,你必須把資源必須放在具有https域名的服務(wù)器里靶剑。。
所以你需要:
1池充、買個ECS服務(wù)器桩引,供應(yīng)商沒限制;
2收夸、買個域名坑匠,幾十塊錢一年也還行。
3卧惜、https認證厘灼。這個也有免費的夹纫。
4、域名備案设凹。這個也不要錢舰讹,就是手續(xù)比較麻煩。
當然闪朱,如果你的小游戲只是自己的微信號預(yù)覽調(diào)試月匣,使用http也可以湊合下。

二奋姿、把資源放到遠程服務(wù)器
1.本地測試锄开,使用anywhere弄個http服務(wù)器

npm install anywhere -g
比如在D:\CocosProject\remoteDir中使用anywhere -p 8090 -s啟動服務(wù)器。

2.項目參考官方示例Step By Mind称诗,只使用了cocos包下的模型
image.png
3.將cocos文件夾設(shè)置:目標平臺微信小游戲院刁,勾選配置為遠程包
image.png
4.打包時,填上我們測試用的http服務(wù)器
image.png
5.打包完成后檢查build/wechatgame路徑

和之前相比粪狼,打包多出來一個remote文件夾,將此文件夾剪切到D:\CocosProject\remoteDir即可任岸。
重新運行再榄,發(fā)現(xiàn)可以正常游戲。但是享潜,真機調(diào)試仍然報錯超過4M困鸥。
經(jīng)過檢查,JS包接近4M

image.png

main主包仍然接近4M
image.png

這是因為我們的主場景就加載了cocos模型剑按。
image.png

參考官方文檔 Asset Bundle 介紹

項目中除了自定義的 Asset Bundle 外疾就,Creator 還有內(nèi)置的 3 個 Asset Bundle。與其他自定義 Asset Bundle 一樣艺蝴,內(nèi)置 Asset Bundle 也可以根據(jù)不同平臺進行配置猬腰。

image.png
  • main 存放所有在 構(gòu)建發(fā)布 面板的 參與構(gòu)建場景 中勾選的場景以及其依賴資源 (通過配置 構(gòu)建發(fā)布 面板的 主包壓縮類型 和 配置主包為遠程包 兩項)
  • resources 存放 resources 目錄下的所有資源以及其依賴資源 (通過配置 資源管理器 中的 assets -> resources 文件夾)
  • start-scene 如果在 構(gòu)建發(fā)布 面板中勾選了 初始場景分包,則首場景將會被構(gòu)建到 start-scene 中猜敢。 (無法進行配置)
6.把首場景做成加載scene姑荷,就放個進度條。在首場景中加載cocos模型的prefab缩擂。

這里打包后鼠冕,仍然發(fā)現(xiàn)main bundle有4M左右,經(jīng)過檢查胯盯,還是有cocos模型文件懈费。看起來和bundle的優(yōu)先級有關(guān)博脑,因為main bundle是參與構(gòu)建場景的資源憎乙,而我們的mainscene使用了cocos模型票罐。所以cocos bundle包的優(yōu)先級就需要比main bundle的優(yōu)先級7更高。cocos bunlde設(shè)置為10之后寨闹,重新打包胶坠,可以發(fā)現(xiàn)main bundle終于變小了。

這個在 oppo小游戲遠程服務(wù)器的回復(fù)中也能看到:

bundle是有優(yōu)先級的繁堡,要想打到bundle里不打主包里沈善,bundle的優(yōu)先級至少設(shè)置成8

7.將remote文件夾剪切到D:\CocosProject\remoteDir,使用微信開發(fā)者工具重新打開

image.png

有類似downloadFile:fail createDownloadTask:fail url not in domain list的報錯椭蹄。
參考微信 官方文檔闻牡,勾上這個即可解決:
image.png

現(xiàn)在終于能看到游戲了,遠程加載資源如下
image.png

不過真機調(diào)試還是超了一點:
image.png

8.分離引擎

游戲引擎插件是微信 7.0.7 版本新增的一項功能绳矩。此插件內(nèi)置了 Cocos Creator 引擎的官方版本罩润,若玩家首次體驗的游戲中啟用了此插件,則所有同樣啟用此插件的游戲翼馆,都無需再次下載 Cocos Creator 引擎割以,只需直接使用公共插件庫中的相同版本引擎,或者增量更新引擎即可应媚。
例如严沥,當一個玩家玩過了由 Cocos Creator v2.2.0 開發(fā)的 A 游戲,里面已啟用了此插件中姜。然后他又玩了同樣是 v2.2.0 開發(fā)的 B 游戲消玄,如果 B 游戲也啟用了此插件,那么就無需重新下載 Cocos Creator 引擎丢胚。即使 B 游戲使用的是 v2.2.1 的 Cocos Creator翩瓜,微信也只需要增量更新引擎兩個版本的差異部分。這樣就可以大幅減少小游戲的下載量携龟,提升小游戲啟動速度 0.5 ~ 2s兔跌,獲得更好的用戶體驗。

參考3.0裁剪模塊后骨宠,導(dǎo)出微信小游戲仍然有所有模塊浮定,是哪里沒操作對?
作者表示在項目中剔除了許多功能层亿,但是打包后桦卒,引擎模塊都在。

image.png

微信引擎分離插件在線上只有一份匿又,只有兩份插件代碼一致才能做到復(fù)用方灾,因而勾選后包內(nèi)會有帶有完整的引擎包。希望減少包體的話不應(yīng)該勾選此選項。

Q:引擎插件功能是否支持自定義引擎裕偿?
A:不支持洞慎,構(gòu)建時如果版本不匹配或者啟用了自定義引擎,雖然編輯器在出現(xiàn)報錯后會繼續(xù)構(gòu)建嘿棘,但是構(gòu)建生成的包實際上無法正常使用引擎插件劲腿。

Q:項目開啟了引擎的模塊裁剪,要使用引擎插件的話需要還原為完整版引擎嗎鸟妙?
A:無需修改焦人,項目可以按原來的方式繼續(xù)裁剪引擎。引擎插件提供的是完整版引擎重父,能兼容所有的裁剪設(shè)置花椭,不會影響原有項目的包體。

Q:啟用引擎插件后房午,是否仍然會把引擎代碼算入首包包體中矿辽?
A:根據(jù)微信的規(guī)則,目前仍然會計算在內(nèi)郭厌。

Q:開啟引擎插件后袋倔,是否可以在編輯器主菜單中的 項目 -> 項目設(shè)置 -> 功能裁剪 中移除所有模塊,減小包體折柠?
A:不可以奕污,因為微信從 7.0.7 開始才支持引擎插件,如隨意裁剪引擎可能導(dǎo)致游戲無法在低版本微信上運行液走。

Q:啟用引擎插件后,在微信開發(fā)工具中提示 “代碼包解包失敗” 或者 “..., 登錄用戶不是該小程序的開發(fā)者”贾陷,但真機預(yù)覽正常缘眶?
A:構(gòu)建面板中默認的 appid 為通用測試 id。根據(jù)微信的規(guī)則髓废,如需測試引擎分離功能巷懈,需要開發(fā)者在構(gòu)建面板中填入自己開通的 appid。

Q:啟用引擎插件后慌洪,在微信開發(fā)工具中提示 “插件未授權(quán)使用 添加插件”顶燕?
A:點擊提示中的 添加插件,選擇添加 CocosCreator 插件后重新編譯即可冈爹。若添加插件時出現(xiàn)“可添加的插件信息為空”的提示涌攻,可嘗試在微信開發(fā)者工具中選擇 清緩存 -> 全部清除 后重試。

9.ammo.js的fallback 模式

使用 fallback 模式時频伤,編輯器會打包 wasm 和 js 模式的代碼恳谎,兩個模式對應(yīng)的代碼包體分別為 1.2MB 和 0.7MB,總共接近 2MB,這對主包 4MB 的限制影響很大因痛。解決辦法是通過配置子包來減輕主包的壓力婚苹,這里以 ammo-82499473.js 文件為例,操作步驟參考官方文檔鸵膏。

本案例使用了物理效果膊升,暫時使用js模式。最終打出的主包是3.5M左右谭企。

10.安卓手機兼容性

我的榮耀手機真機調(diào)試提示:該頁面不存在 你可以進入null首頁獲取更多服務(wù)
別的安卓手機可以

三廓译、其他打包選項
image.png
1.MD5緩存

MD5 cache。點上這個以后赞咙,每次發(fā)布生成的資源名都會加上md5碼责循,你可以理解為每次發(fā)布后文件名都變了,這是為了避開瀏覽器緩存資源攀操。當然砸出的坑就是每次發(fā)布后你都要同步更新服務(wù)器資源院仿。

2.主包壓縮類型

https://forum.cocos.org/t/topic/114798/17

經(jīng)過反復(fù)試驗,發(fā)現(xiàn) 分包這部分的文檔 沒有說明要在構(gòu)建項目的時候選擇 主包壓縮類型為小游戲分包


image.png
3.配置主包為遠程包

該項為可選項速和,需要與 資源服務(wù)器地址 選項配合使用歹垫。 勾選后,主包會配置為遠程包颠放,并且與其相關(guān)依賴資源一起被構(gòu)建到發(fā)布包目錄 remote 下的 內(nèi)置 Asset Bundle — main 中排惨。開發(fā)者需要將整個 remote 文件夾上傳到遠程服務(wù)器。

這里我的main主包只有幾張加載頁面碰凶,大小只有幾十K暮芭。當然放遠程包,也能節(jié)省出來一點點空間欲低,沒太大必要辕宏。

4.自動圖集

自動圖集資源 (Auto Atlas)
自動圖集資源 目前是以當前文件夾下的所有 SpriteFrame 作為碎圖資源,然后在構(gòu)建過程中將其打包成一個大的 Sprite Atlas砾莱。

image.png

在游戲中使用多張圖片合成的圖集作為美術(shù)資源瑞筐,有以下優(yōu)勢:

  • 合成圖集時會去除每張圖片周圍的空白區(qū)域,加上可以在整體上實施各種優(yōu)化算法腊瑟,合成圖集后可以大大減少游戲包體和內(nèi)存占用
  • 多個 Sprite 如果渲染的是來自同一張圖集的圖片時聚假,這些 Sprite 可以使用同一個渲染批次來處理,大大減少 CPU 的運算時間闰非,提高運行效率膘格。

參考這種情況下,自動圖集是否形同虛設(shè)财松?

image.png

這里經(jīng)過測試闯袒,如果一個bundle文件夾出現(xiàn)了自動圖集,則打包出來的資源會有合圖和碎圖兩份資源,相當于包體變大了政敢。官方給出的解釋是:

放在bundle文件夾下其徙,默認每個資源都可能被動態(tài)加載,都會打包喷户。放在普通文件夾內(nèi)的資源都是只有被使用才會被打包唾那。 官方會在3.1.0版本中對此進行優(yōu)化。

參考Cocos Creator 3.1 攜多線程渲染架構(gòu)和 PhysX 物理支持強勢登場

自動圖集面板新增針對 Bundle 內(nèi)使用自動圖集的優(yōu)化選項褪尝,共增加三個選項闹获,用于自動圖集在 Bundle 內(nèi)時的一些不必須信息剔除,優(yōu)化包體
優(yōu)化自動圖集被多個 Bundle 引用導(dǎo)致圖片被復(fù)制的問題河哑,減少包體

image.png

但是我在3.1版本中經(jīng)過測試避诽,把這幾個選項勾上,仍然會把合圖和碎圖都打包出來璃谨。
當我把Bundle優(yōu)先級設(shè)置為1時沙庐,合圖會出現(xiàn)在main包里。當優(yōu)先級設(shè)置為10時佳吞,合圖和碎圖都會出現(xiàn)在bundle中拱雏。

四、微信小游戲要求圖片尺寸在2048以下

參考
小游戲中圖片對尺寸限制在2048像素底扳,長寬要小于等于2048像素
能不能有種像Unity那樣指定圖片最大尺寸的功能铸抑?
微信小游戲創(chuàng)建image對象,大小不能超過2048像素

參考
Creator 2.4.5 構(gòu)建微信分包衷模,微信開發(fā)工具真機調(diào)試報錯:not node js file
loadBundle 就會報錯鹊汛,但不影響游戲運行

cc.assetManager.loadBundle(‘bundle-name’, (err, bundle) => {
if (err) {
return console.error(err)
}
cc.log([Bundle 加載])
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市阱冶,隨后出現(xiàn)的幾起案子柒昏,更是在濱河造成了極大的恐慌,老刑警劉巖熙揍,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異氏涩,居然都是意外死亡届囚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門是尖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來意系,“玉大人,你說我怎么就攤上這事饺汹』滋恚” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長迎瞧。 經(jīng)常有香客問我夸溶,道長,這世上最難降的妖魔是什么凶硅? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任缝裁,我火速辦了婚禮,結(jié)果婚禮上足绅,老公的妹妹穿的比我還像新娘捷绑。我一直安慰自己,他們只是感情好氢妈,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布粹污。 她就那樣靜靜地躺著,像睡著了一般首量。 火紅的嫁衣襯著肌膚如雪壮吩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天蕾总,我揣著相機與錄音粥航,去河邊找鬼。 笑死生百,一個胖子當著我的面吹牛递雀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蚀浆,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼缀程,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了市俊?” 一聲冷哼從身側(cè)響起涵叮,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎厘贼,沒想到半個月后峭咒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡绅你,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年伺帘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忌锯。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡伪嫁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出偶垮,到底是詐尸還是另有隱情张咳,我是刑警寧澤帝洪,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站脚猾,受9級特大地震影響葱峡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜婚陪,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一族沃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧泌参,春花似錦脆淹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至铣缠,卻和暖如春烘嘱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝗蛙。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工蝇庭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捡硅。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓哮内,卻偏偏與公主長得像,于是被迫代替她去往敵國和親壮韭。 傳聞我的和親對象是個殘疾皇子北发,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 一、問題 在OPPO平臺喷屋,要接入一個打點SDK琳拨,渠道只提供了JS版本,需要將部分JS代碼添加到main.js中屯曹。 ...
    合肥黑閱讀 2,622評論 0 0
  • 前言 在寫這篇文章前狱庇,之前有寫過一篇以CocosCreator以subpackages分包實現(xiàn)大廳+子游戲,但以這...
    丨山水依舊丨閱讀 10,594評論 10 3
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭恶耽,有人歡樂有人憂愁密任,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,535評論 28 53
  • 信任包括信任自己和信任他人 很多時候驳棱,很多事情,失敗农曲、遺憾社搅、錯過驻债,源于不自信,不信任他人 覺得自己做不成形葬,別人做不...
    吳氵晃閱讀 6,187評論 4 8
  • 怎么對待生活笙以,它也會怎么對你 人都是哭著來到這個美麗的人間淌实。每個人從來到塵寰到升入天堂,整個生命的歷程都是一本書猖腕,...
    靜靜在等你閱讀 4,974評論 1 6