How To Solved Package Size Problem
April 27, 2025About 3 min
How To Solved Package Size Problem
进行以下操作可以减少包体:

Prerequistes
关闭预先要求的软件:

Disable Default Plugins
- OpenImageDenoise:用于视频生产的光线追踪
在Uproject文件中可以直接全部关闭引擎的插件,然后手动管理你所需要的插件:

Project Setting Packaging
开启以下选项可以降低包体大小:
- Use Pak File:,使所有的资源打到一个包里
- 保证Shader不被多次复制
- Share Material Shader Code
- Shared Material Native Librarie
- Create compressed cooked packeges
- Exclude editor content when cooking:去除编辑器下的文件内容
- Full Rebuild:只需要在发布版本的时候开启,平时可以关闭,这样可以快速迭代。
设置只需要打包的地图:

Forward Render
在2D、VR、手机项目中可以开启该选项。既减少包体大小也可以提高性能,这会关闭一些功能:Nanite、Lumen等。

Default Pakistan File Rules
创建DefaultPakFileRules.ini
文件在Config目录下,控制打包规则,决定那些文件需要被打包、压缩或排除。核心配置规则:
包含/排除规则
[PakFileRules]
; 包含指定路径的文件
+IncludePath="Content/Characters/**"
+IncludePath="Content/Levels/*.umap"
; 排除特定文件或通配符
-ExcludePath="Content/DevAssets/**"
-ExcludePath="*.tmp"
- +IncludePath:强制包含匹配路径的文件。
- -ExcludePath:排除匹配路径的文件(优先级高于包含规则)。
压缩规则
[Compression]
; 对特定文件启用压缩
+CompressExt=.png
+CompressExt=.uasset
; 禁用压缩的文件类型
-CompressExt=.wav
- 可针对文件扩展名设置是否压缩(如已压缩的音频通常无需再压缩)。
加密规则
[Encryption]
; 加密特定文件
+EncryptFile="Content/Blueprints/SecretBP.uasset"
+EncryptWildcard="Content/Cinematics/*.mp4"
- 保护敏感资源,防止玩家直接解包PAK文件获取内容。
其他规则
[Options]
; 是否将PAK文件拆分为多个小块(用于流式加载)
bSplitPakFiles=true
MaxChunkSize=2GB
以下是一个简单的例子,来源:
[ExcludeDefault]
Targets="Shipping,Development,Debug"
bExcludeFromPaks=true
bOverrideChunkManifest=true
+Files=".../Engine/Content/ArtTools/"
+Files=".../Engine/Content/EditorLandscapeResources/"
+Files=".../Engine/Content/EditorMeshes/ColorCalibrator/"
+Files=".../Engine/Content/EngineSounds/"
+Files=".../Engine/Content/Maps/"
+Files=".../Engine/Content/MobileResources/"
+Files=".../Engine/Content/Slate/Automation/"
+Files=".../Engine/Content/Slate/Common/"
+Files=".../Engine/Content/Slate/CrashTracker/"
+Files=".../Engine/Content/Slate/Docking/"
+Files=".../Engine/Content/Slate/Fonts/DroidSansFallback.ttf"
+Files=".../Engine/Content/Slate/Icons/"
+Files=".../Engine/Content/Slate/MessageLog/"
+Files=".../Engine/Content/Slate/Old/"
+Files=".../Engine/Content/Slate/Testing/"
+Files=".../Engine/Content/Slate/Tutorials/"
+Files=".../Engine/Content/Tutorial/"
+Files=".../Engine/Content/VREditor/"
+Files=".../Engine/Content/EditorMeshes/Camera/SM_CraneRig_Arm.*"
+Files=".../Engine/Content/EditorMeshes/Camera/SM_CraneRig_Base.*"
+Files=".../Engine/Content/EditorMeshes/Camera/SM_CraneRig_Body.*"
+Files=".../Engine/Content/EditorMeshes/Camera/SM_CraneRig_Mount.*"
+Files=".../Engine/Content/EditorMeshes/Camera/SM_RailRig_Mount.*"
+Files=".../Engine/Content/EditorMeshes/Camera/SM_RailRig_Track.*"
+Files=".../Engine/Content/EditorMaterials/MAT_Groups_Toggle.*"
+Files=".../Engine/Content/EditorMaterials/MAT_Groups_Visibility.*"
+Files=".../Engine/Content/EditorMaterials/PreviewShadowIndicator.*"
+Files=".../Engine/Content/EditorMaterials/PreviewShadowIndicatorMaterial.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_ColorTrack.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Anim.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_AudioMaster.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Director.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Event.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Fade.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Float.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Move.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Slomo.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Sound.*"
+Files=".../Engine/Content/EditorMaterials/MatineeGroups/MAT_Groups_Vector.*"
+Files=".../Engine/Content/EditorMaterials/ParticleSystems/PSysThumbnail_NoImage.*"
+Files=".../Engine/Content/EditorMaterials/ParticleSystems/PSysThumbnail_OOD.*"
+Files=".../Engine/Content/EditorMaterials/Camera/CineMat.*"
+Files=".../Engine/Content/EditorMaterials/Camera/MI_CineMat_Rig.*"
; Frees up 3 MB but can't use bloom and might have other risks
+Files=".../Engine/Content/EngineMaterials/DefaultBloomKernel.*"
; Frees up 1 MB and seems to work
+Files=".../Engine/Content/EngineMaterials/DefaultCalibrationGrayscale.*"
; Frees up 6 MB abut can't use substrate
+Files=".../Engine/Content/EngineMaterials/Substrate/"
; Frees up 1 MB and seems to work
+Files=".../Engine/Content/Localization/"
; Frees up 2 MB and seems to work if you don't have text
+Files=".../Engine/Content/EngineFonts/"