<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          微信小游戲超4M怎么辦?小游戲包體優(yōu)化方案(建議收藏)

          共 1926字,需瀏覽 4分鐘

           ·

          2022-11-03 18:41

          對于小游戲而言,包體的大小牽動著許多方面,如下:

          加載速度

          資源的大小,影響首屏加載的速度,優(yōu)化包體的同時也是在對首屏加載做優(yōu)化,但并不是包體優(yōu)化就一定能夠優(yōu)化首屏加載速度,需要針對性的對首屏資源進行處理。

          其次也影響游戲過程中資源加載的速度,如果采用游戲開始統(tǒng)一加載的方式,也會影響進度條的等待時間。

          費用與維護成本

          目前小游戲分包大小有以下限制:

          • 整個小游戲的所有分包大小不超過 16 M
          • 單個分包/主包的大小不能超過 4 M

          因此

          • 對于簡單的小游戲,首先影響首包的大小限制 當包體超過4M時,小游戲無法上傳(必須依賴 CDN 進行資源包遠程加載才可以完成上傳,但該方式產(chǎn)生了本可以避免的額外資源流量費用,當用戶群體龐大時,是一筆不小的費用)

          • 對于復(fù)雜的游戲,無法避免使用CDN,包體的大小依然影響著費用,(修正,本句無效)微信會在小游戲退出之后自動清理所有臨時文件,所以下次再次運行小游戲時,這些資源又會再度下載,反復(fù)地進行流量費用的消耗。

          • 其次,通過上傳 CDN 的方式,則存在版本管理的流程,每次發(fā)包都更加繁瑣。小程序端還需要自己對緩存資源進行管理。

          文中將會提供相關(guān)工具包下載方式,解放你的雙手。

          優(yōu)化方向

          資源優(yōu)化

          以下方案 2D/3D 通用:
          1. 紋理壓縮:使用pngquant、pngyu、tinypng等工具完成。Cocos Store 插件商店有現(xiàn)成的工具直接使用。

          2. 音頻資源壓縮:可使用 ffmpeg 等第三方工具進行優(yōu)化。

          3. 字體:字體文件一般都比較大,幾M到幾十M都有。字體文件包含的字符幾千上萬個,但往往我只用到其中很小的一部分,這時候就可以使用字體提取工具進行提取,獲得只包含用到的字的字體文件。這個優(yōu)化也是比較明顯的。這里推薦使用 fontmin_tool 工具。

          4. 拆分prefab:提高 prefab 復(fù)用率,對于有大量信息的 prefab,可以編寫解析器,運行時簡化結(jié)構(gòu)保存為j結(jié)構(gòu)更簡單的 json 文件,等待玩家用戶運行時解析 json 生成預(yù)制體的方式完成。這是采取時間換空間的方式進行優(yōu)化。

          5. 檢查 resource 中資源,動態(tài)加載過程中不需要加載的資源需要移出來,否則無用資源也會被打進包體,導(dǎo)致包體變大。

          3D 優(yōu)化方案:
          1. 3D 模型面數(shù)減少。專業(yè)的同學(xué)可以選擇3d max進行操作,也可選擇簡易的 Skinny3D 減面工具(操作相當簡單,論壇提供了下載鏈接),進行快速的減面操作,Cocos Creator 3.0 提供了直接的模型壓縮功能。

          2. 減少重復(fù)貼圖及重復(fù)材質(zhì)。對于使用重復(fù)貼圖的模型,可以創(chuàng)建共享材質(zhì),賦予共享的材質(zhì)貼圖,大量減少重復(fù)資源。

          3. 減少重復(fù)動作信息。對于相同的骨骼結(jié)構(gòu)且使用相同動畫的模型,可將動畫文件作為獨立文件導(dǎo)出,在Creator編輯器中為模型添加動畫,減少動畫信息的重復(fù)。對于過于復(fù)雜的動畫(K幀過多導(dǎo)致模型大小過大),酌情簡化動畫。

          裁剪引擎

          去除未使用的引擎模塊,直接在編輯器界面即可設(shè)置。其中 Cocos Creator 2.x 打開路徑為:主菜單->設(shè)置->項目設(shè)置

          分離引擎

          在微信小游戲平臺,發(fā)布平臺支持分離引擎,在發(fā)布界面勾選允許分離引擎后,如果用戶已經(jīng)運行過同版本 Cocos 引擎發(fā)布的小游戲而產(chǎn)生了緩存,則自動剔除首包大小。

          代碼壓縮

          論壇上 yans 已分享工具,已放文末工具包:代碼壓縮工具
          https://forum.cocos.org/t/topic/90046

          ZIP包處理

          可將遠程資源打成一個 zip 包,加載資源時下載 zip,然后解壓到本地,再直接讀取本地的資源,這個壓縮率也是比較可觀的。

          該實現(xiàn)方案我還未進行實操,后續(xù)將出具體文章詳細介紹這塊的實踐結(jié)果。如果有大佬實踐過,非常期待分享。鏈接分享:

          • https://blog.csdn.net/erweimac/article/details/83008267
          • https://forum.cocos.org/t/zip/77500

          用 jszip 解壓 zip 文件

          • https://forum.cocos.org/t/jszip-zip/92462

          小結(jié)

          進行包體優(yōu)化時,可遵循以下的優(yōu)先級:

          • 盡量通過資源優(yōu)化、裁剪引擎、代碼壓縮、分離引擎等方式將包體壓縮在 4M 之內(nèi);
          • 如果無法壓縮在 4M 之內(nèi),則使用分包;
          • 分包總和還是超過 16M(微信平臺,其他平臺數(shù)值還需查詢),還無法解決,則使用遠程資源加載,可考慮使用zip方式在游戲啟動時進行統(tǒng)一加載。

          對于首屏資源,不與其他資源進行合圖等操作,避免下載首屏資源需要下載大圖。其次首屏資源盡量簡單,在首屏中進行進度條加載遠程資源或者子包的方式優(yōu)化用戶體驗。

          若文中有紕漏,歡迎大家進行糾正以及補充。


          瀏覽 479
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线观看国产黄色 | 婷婷综合av| 精品一区二区三区东京热 | 久久久一区二区三区 | 天天肏 |