减小游戏包大小

无论您的 UE4 项目面向什么平台,减小游戏包大小都富有挑战性。 在以下指南中,我们将阐述您可以完成的步骤,通过这些步骤您可以在只需使用 UE4 编辑器中提供的工具的情况下,尽可能减小项目的最终包大小。

创建新的空项目

当您开始处理基于 Android 的移动项目时,您可能会尝试使用现有项目作为工作基础,或创建启用了“起步内容”的新项目。 请不要 这么做,而应改为创建基于 C++ 或蓝图的全新空项目,然后使用 迁移工具 来引入您想要使用的内容。 这样,您就可以确保项目仅包含所需的内容。

压缩已烘培的内容

减小 APK 包大小的最简单快捷的方法就是指示 UE4 在打包过程中压缩 APK 包。 要开启包压缩,您需要在 UE4 编辑器中完成下列操作。

  1. 首先,通过转到主工具栏并选择 编辑(Edit)选项,然后选择 项目设置(Project Settings),打开项目设置。

    T_Project_Settings_Menu.png

  2. 在“项目”(Project)部分下面,单击 打包(Packaging)部分,以显示项目打包方式选项。

    T_Project_Packaging.png

  3. 单击位于打包设置底部的白色小三角形,以显示 高级项目设置(Advanced Project settings)

    T_Expose_Advanced_Props.png

  4. 查找标签为 创建压缩的已烘培包(Create compressed cooked packages)的选项,并将其启用(如果尚未启用)。

    T_Enable_Comp_Packages.png

如果您未曾在启用“创建压缩的已烘培包”(Create compressed cooked packages)复选框的情况下打包游戏,那么在启用此选项的情况下重新打包项目后,您应该会看到显著的大小差异。 实际上,启用“创建压缩的已烘培包”(Create compressed cooked packages)后,项目 APK 包大小下降 50% 并不罕见。

设置项目的关卡

其中一个被忽视可能会导致 APK 包大小膨胀的事项是没有适当设置项目选项,例如默认情况下应该载入哪些关卡,或者关卡过渡期间应该使用哪些关卡。 要设置应该用于此类交互的关卡,请完成下列步骤。

  1. 首先,在 主工具栏 上,转到 编辑(Edit) > 项目设置(Project Settings)

    T_Project_Settings.png

  2. 然后,在 贴图与模式(Maps & Modes)部分中的 项目(Project)下,将 默认贴图(Default Maps) 中的贴图设置为特定于项目的贴图。

    T_Set_Maps.png

检查将要烘培的内容

为了确保仅将项目的相关内容添加到 APK 文件中,您可通过查看项目中的 Cooked 文件夹,检查哪些内容将添加到项目 APK 中。 您可通过转到 (ProjectName)\Saved\Cooked,然后选择您烘培项目所针对格式的文件夹,找到 Cooked 文件夹。

请注意,只有在完成第一次烘培之后,您才能查看 Cooked 文件夹中的内容。

T_Cooked_Content_Folder.png

下图显示 Match 3 样本游戏中的 Texture 文件夹。 此文件夹中的内容已按大小排序,因此您很容易了解哪些资产最大。 确定最大资产之后,您可在 UE4 中检查资产,以确定它们的大小实际上是否可减小而不会牺牲资产的完整性。

T_Cooked_Content.png

开发构建大小与交付构建大小

在尝试确定项目的最终大小时,请记住,项目的开发版本会略大于交付构建大小。 在 Medieval Match 示例游戏中,开发构建与交付构建之间的大小差异约为 14%。 但是,因为各个项目的需求有所相同,对于您的项目,两种不同构建类型之间的大小差异可能会超过 14%,也可能低于 14%。

按设备的纹理 LOD

在虚幻引擎 4.8 发行版中,您现在可以指定要在哪些设备上使用何种大小的纹理。 您可在 移动平台纹理指南 部分中找到更多相关资料。

移除不使用的内容

当项目最终准备好进行打包以便在商店中发布时,请确保先移除所有不使用的内容或测试内容,方法是在内容浏览器中将其选中,然后删除。 要删除内容,请先选中所要删除的内容,然后按键盘上的 Delete 键,或使用右键单击菜单中的“删除”(Delete)选项。 当您尝试从项目中删除内容时,系统会显示 删除资产(Delete Assets)菜单,如下图所示。

这是在 UE4 中删除对象的首选方法,您应采用这种方法,而不是直接从内容文件夹中的资产位置删除/移除资产。

T_Delete_Menu.png

“删除资产”(Delete Assets)菜单将指出您尝试删除的资产是否由另一资产引用。 如果该资产未被引用,那么您可直接将其删除;但是,如果该资产由其他资产引用,那么您可使用 替换引用(Replace References)选项将针对该资产的引用替换为另一个应该打包在项目中的资产。

移除未使用的插件

UE4 编辑器中禁用任何未使用的插件是另一种确保不将非必要内容及代码纳入项目最终 APK 包文件的方法。 这是因为,部分插件需要特定的一组基本资产和代码才能正常工作。 如果不禁用该插件,就不会从项目中移除使该插件正常工作所需的资产和代码。 虽然禁用插件所能够削减的项目大小不如减小或移除较大的纹理,但在尝试使项目大小不超过 50MB 时,每一分的努力都会有所回馈。 要在 UE4 中禁用插件,您需要完成下列步骤。

请务必全面测试项目,以确保您所禁用的插件不会干扰项目的功能。

  1. 首先,转到 主工具栏 并单击 窗口(Window)选项,然后选择 插件(Plug-in)选项,以打开插件管理器。

    T_Open_Plugins_Browser.png

  2. 在插件浏览器中,选择不同的部分,并通过取消选中 已启用(Enabled)旁边的复选框将您未使用的任何插件禁用。 禁用所有插件之后,您需要重新启动 UE4 编辑器,然后确保重新打包项目。

打包黑名单

在虚幻引擎 4.9 及更高发行版中,您现在可以将一个文本文件放在项目的 Build/Platform/(目标平台文件夹) 目录中,以指示烘培程序排除部分或完整文件路径,而不要将它们打包到项目中。 一个项目可以有多个分别用于调试、开发、测试和交付构建的黑名单文件,这些文件可设置为包括或排除任意项目数据。 您甚至可以针对项目所支持的各个平台使用不同的黑名单文件,例如针对 Android 使用一个黑名单文件,针对 iOS 使用另一个黑名单文件,等等。 以下示例是 Android 上的 Tappy Chicken 的黑名单文件。

T_Blacklist_Packages.png

以下是 Tappy Chicken 的示例文件,在此文件中,指示烘培程序在烘培及打包游戏时不要包括下列文件。

  • 黑名单文本文件的位置与名称:TappyChicken/Build/Android/PakBlacklist-Shipping.txt:

    T_Black_List.png

前三个条目应该适用于任何项目,但根据项目不同,某些情况下,在运行时可能需要 AssetRegistry.bin。 强烈建议您执行全面测试,以确保移除的内容不会对项目产生负面影响。 完成此任务的一种简单方便的方法是,打开所有项目关卡,以确保它们正确载入且没有出现错误或警告。 如果您遇到问题并且不确定它们的起因,请检查 Logcat 以确定错误。

最大动态点照明数

在 UE 4.9 发行版中,已引入一个新选项,该选项可帮助减少针对动态照明生成的着色器数目, 此功能特别适合于不需要动态照明的移动游戏。 您可在 项目设置(Project Settings)移动(Mobile)部分下找到 最大动态点照明数(Max Dynamic Point Lights)属性。

Max_Dyn_Point_Lights.png

要完全禁用此功能,请将 最大动态点照明数(Max Dynamic Point Lights)4 更改为 0,然后在收到提示时重新启动 UE4 编辑器。

Max_Dyn_Point_Lights_To_0.png

根据项目大小以及使用的材质量不同,可以实现的大小削减可能仅仅是几个 MB,也可能是多个 MB。 以使用缺省的 Third Person 模板为例,我们可以看到启用“最大动态点照明数”(Max Dynamic Point Lights)与完全禁用“最大动态点照明数”(Max Dynamic Point Lights)时的大小削减量。

状态

游戏包大小

削减量

54.3 MB

0

53.2 MB

1.1 MB