UE4 縮小安卓打包體積(翻譯自官方文件)
減少APK包大小
無論您的UE4專案針對哪種型別的Android裝置,將Android應用程式包(APK)的大小減小到Google Play商店的50MB限制都可能具有挑戰性。在以下指南中,我們將介紹您可以採取的步驟,以幫助儘可能減少專案的最終APK包大小,只使用UE4編輯器中提供給您的工具。
ETC1紋理考慮因素
在使用ETC1 Texture格式打包Android專案時,您需要注意ETC1不會壓縮其中嵌入了Alpha資訊的紋理,而是將它們視為完全未壓縮的紋理。雖然這不會對專案的執行時效能產生太大影響,但它會增加專案APK的大小。如果您的專案確實需要使用Alpha的紋理,最好使用兩個單獨的紋理; 一個用於漫反射,一個用於Alpha,而不是單個紋理,其中嵌入了Alpha。這將確保在專案烘焙和打包時壓縮您的紋理。
平臺不可知技術
除了上面列出的Android特定方法之外,還有很多方法可以減少任何打包遊戲的大小(無論目標平臺如何)。
建立一個新的空專案
當您第一次開始使用基於Android的移動專案時,您可能會想要使用現有專案作為基礎來工作或建立啟用了Starter Content的新專案。不要這樣做,而是建立一個全新的,空的 基於C ++或藍圖的專案,然後使用遷移工具來引入您想要使用的內容。這樣,您可以確保專案中的唯一內容是需要的內容。
壓縮cooked內容
減少APK包大小的最簡單,最快捷的方法是告訴UE4在打包過程中壓縮APK包。要開啟包壓縮,您需要在UE4編輯器中執行以下操作。
-
首先,轉到主工具欄並選擇編輯選項,然後選擇專案設定,開啟專案的設定。
-
在“專案”部分下,單擊“ Packaging ”部分以顯示專案打包方式。
-
單擊“打包”設定底部的“ Advanced Project ”以顯示“ Advanced Project Settings”。
-
查詢標記為Create compressed cooked packages的選項並啟用它(如果尚未啟用)。
如果您未使用“建立壓縮cooked包”複選標記框打包遊戲,則在專案重新打包並啟用時,應該會看到大小差異。實際上,當啟用Create compressed cooked packages
共享材質著色器和庫
啟用共享材質著色器程式碼和共享材質本機庫將有助於減少專案的整體包大小,但這是以增加載入時間為代價的。要在UE4專案中啟用此選項,您需要執行以下操作:
- 首先,在主工具欄上轉到 編輯 > 專案設定。
- 在包裝部分的底部,您應該啟用以下兩個複選框。
- 共享材質著色器程式碼 (Share Material Shader Code)
- 共享材料本機庫(Share Material Native Libraries)
點選檢視完整圖片。
排除編輯內容
啟用此選項將確保UE4編輯器使用的所有內容都不會打包到您的專案中。請注意,啟用此功能可能會導致可能使用編輯器內容的專案中缺少內容的問題。要在UE4專案中啟用這兩個選項,您需要執行以下操作:
-
首先,在主工具欄上轉到 編輯 > 專案設定。
-
在“專案”部分下,單擊“ 打包”部分以顯示專案打包方式。
點選檢視完整圖片。
-
單擊“打包”設定底部的“ 高階屬性”以顯示“ 高階專案設定”。
點選檢視完整圖片。
-
向下滾動,直到看到“ 烘焙時排除編輯器內容(Exclude editor content when cooking)”選項,然後單擊旁邊的複選標記框啟用它。
請注意,啟用此功能可能會導致可能使用編輯器內容的專案中缺少內容的問題。
設定專案的級別
一個經常被忽視的區域可能會導致您的專案膨脹APK包大小無法正確設定專案的選項,例如預設情況下應該使用哪個級別,或者哪個級別用於級別轉換。要設定應該用於此類互動的級別(或級別),您可以執行以下操作。
- 首先,在主工具欄上轉到 編輯 > 專案設定。
- 然後,在“ 地圖和模式”部分的“ 專案”下,查詢“ 預設地圖”部分。
- 單擊遊戲預設地圖 旁邊的箭頭,然後從資產列表中選擇應該用於遊戲預設起始級別的地圖。
- 重複此過程,直到您為每個所需的地圖型別輸入了級別。
選擇要打包或不打包的內容
在專案設定的“打包”部分中,您可以指定應該或不應該將哪些地圖和內容與遊戲打包在一起。要指定專案中應包含哪些地圖,您需要執行以下操作:
如果您沒有指定應該烘焙哪些地圖,那麼將烘焙所有地圖,包括您可能擁有的任何測試地圖。如果不指定應該烘焙哪些地圖,將導致您的最終打包遊戲比需要的更大。
- 首先,轉到主工具欄並選擇編輯 > 專案設定,開啟專案的設定。
- 然後,在“ 打包”部分的“ 專案”下,查詢“ 打包”選項。
- 單擊“包裝”部分底部的小白色三角形以顯示高階包裝選項。
- 滾動到Advanced Packaging選項的下半部分,直到您看到專案內容目錄中的Cook所有內容的複選框(忽略下面的地圖列表)Cook everything in the project content directory(ignores list of maps below)選項。您在此處看到的選項將允許您指定應打包或不應與專案打包的內容和地圖。
- 按下 要用於包括或排除資產的選項旁邊的白色加號。
- 單擊新增的新條目旁邊的三個小白點將顯示一個視窗,允許您選擇要包含或排除的資產。
- 選擇資產後,輸入框現在將包含指向該資產在專案資料夾中的位置的連結。
物業名稱 |
描述 |
烘焙專案內容目錄中的所有內容(忽略下面的地圖列表 |
烘焙專案內容目錄中的所有內容。 |
只烘焙地圖(這隻影響廚師所有) |
僅烘焙地圖(這僅影響cook所有標誌)。 |
建立壓縮cooked包 |
建立壓縮cooked包(減少部署大小)。 |
如果您正在使用此內容,則此包中不包含編輯器內容可能會導致遊戲崩潰/錯誤 |
跳過烘焙編輯內容。 |
要包含在打包構建中的對映列表 |
在命令列中未指定其他對映列表時要包括的對映列表。 |
Cook的其他資產目錄 |
這列出了包含.uasset檔案的其他目錄,無論它們是否被專案中的任何內容引用,都應始終進行烘焙。請務必注意,這些路徑與專案內容目錄相關。 |
目錄永遠不會做飯 |
這列出了永遠不應該煮cooked的目錄。 |
要打包的其他非資產目錄。 |
此列表目錄包含應始終新增到.PAK檔案的檔案(如果使用.pak檔案;否則將它們複製為單個檔案)。這用於暫存您通過UFS(虛幻檔案系統)檔案IO API 手動載入的其他檔案。請務必注意,這些路徑與專案內容目錄相關。 |
要複製的其他非資產目錄。 |
這將列出包含在打包專案時應始終複製的檔案的目錄,但不應該是.pak檔案的一部分。這用於暫存您使用USF (虛幻檔案系統)檔案IO API(例如,執行其自己的內部檔案IO的第三方庫)手動載入的其他檔案。注意: 請務必注意,這些路徑是相對於專案內容目錄的。 |
檢查將要烘焙的內容
要確保只將與專案相關的內容新增到APK檔案中,您可以通過檢視專案中的Cooked資料夾來檢查要將哪些內容新增到專案的APK 中。您可以通過轉到(ProjectName)\ Saved \ Cooked找到Cooked資料夾,然後選擇具有您為專案製作的格式的資料夾。
請注意,在完成第一次烘焙後,您將只能看到Cooked資料夾中的內容。
下圖顯示了Match 3示例遊戲中的Texture資料夾。資料夾中的內容已按大小排序,因此更容易檢視哪些資產最大。確定最重要的資產後,您可以檢查UE4內部的資產,看看實際上是否可以縮小它們的大小而不會犧牲資產的完整性。
開發與運輸建造規模
在嘗試確定專案的最終大小時,請記住專案的開發版本將略大於您的裝運構建大小。在Medieval Match示例遊戲中,開發和運輸構建之間的大小差異約為14%。但是,由於每個專案都有不同的要求,因此專案的兩種不同構建型別之間的節省可能比或節省14%。
每裝置紋理LOD
隨著虛幻引擎4.8的釋出,您現在可以指定在哪些裝置上使用哪種尺寸的紋理。您可以在移動平臺紋理指南部分中閱讀更多相關資訊。
刪除未使用的內容
當您的專案最終準備好為商店打包時,請確保首先刪除任何未使用或測試的內容,方法是在內容瀏覽器中選擇它並刪除它。您可以先選擇要刪除的內容刪除內容,然後按 鍵盤上的Delete鍵或使用右鍵單擊選單中的刪除選項。當您嘗試從專案中刪除某些內容時,將顯示“刪除資源”選單,如下圖所示。
這是在UE4中刪除物件的首選方法,應僅用於刪除/刪除內容資料夾中其位置的資產。
“刪除資產”選單將通知您嘗試刪除的資產是否被其他資產引用。如果未引用它,則可以簡單地將其刪除,但是,如果它被其他資產引用,則可以使用“ 替換引用”選項將對該資產的引用替換為應該打包在專案中的另一個資產。
刪除未使用的外掛
禁用 UE4編輯器內部任何未使用的 外掛是確保不必要的內容和程式碼不會進入專案的最終APK包檔案的另一種方法。這是因為某些 外掛 需要一組特定的基本資產和程式碼才能正常工作。如果是 外掛 未禁用,不會從專案中刪除使外掛 工作所需的資產和程式碼。雖然這可能不會像減少或刪除大紋理那樣減少專案的大小,但是當嘗試將專案縮小到100 MB大小時,每一點都可以提供幫助。要禁用UE4內部的外掛,您需要執行以下操作:
確保徹底測試專案,以確保您禁用的外掛 不會干擾專案的功能。
- 首先,通過轉到主工具欄並單擊“ 視窗”選項然後選擇“ 外掛”選項來開啟 外掛 管理器。
- 從“ 外掛 瀏覽器”中,選中不同的部分,並通過取消選中“已啟用 ”旁邊的複選框,禁用所有未使用的外掛 。禁用所有 外掛後,您需要重新啟動UE4編輯器,然後確保重新打包專案。
包黑名單
您現在可以在專案的Build / Platform /(目標平臺資料夾)目錄中放置一個文字檔案,該檔案將告訴cooker將部分或完整的檔案路徑排除在打包到專案中。專案可以有多個用於除錯,開發,測試和運輸構建的黑名單檔案,可以將其設定為包含或排除所需的任何專案資料。您甚至可以為專案支援的每個平臺使用不同的黑名單檔案,例如Android版本,iOS版本等等。以下是Android列表中黑名單檔案的示例。
以下是比賽3中的示例,其中當烘焙和包裝遊戲時,炊具被告知不包括以下檔案。
- 黑名單文字檔案位置和名稱: Match3 / Build / Android / PakBlacklist-Shipping.txt:
對於任何專案,前三個條目應該是安全的,但可能存在執行時需要AssetRegistry.bin的情況(取決於您的專案)。強烈建議您進行全面測試,以確保您要刪除的內容不會對您的專案產生負面影響。一個簡單直接的方法是開啟所有專案的級別,以確保它們正確載入並且沒有錯誤或警告。如果您遇到其他問題並且不確定它們來自何處,請檢查 Logcat是否存在錯誤。
最大動態點光源
Max Dynamic Point Lights屬性 可以幫助減少為動態光源生成的著色器數量。此功能對於不需要動態照明的移動遊戲特別有用,可以在“ 專案設定”的“ 移動” 部分下找到 。
點選檢視完整圖片。
要完全禁用此功能,請將Max Dynamic Point Lights從4設定為0,然後在出現提示時重新啟動UE4 Editor。
根據專案的大小和使用的材料數量,您可以實現的尺寸節省範圍從幾MB到多MB範圍。