iOS 打包游戏尺寸

影响 iOS 打包游戏尺寸的因素有很多,从游戏引用的内容到所选的内部版本配置,都会影响尺寸。

目标配置

一个最大的变化在于定向了传送配置,而不是开发,从而节省了约 31MB。传送配置使用了更高的优化配置, 并删除了调试符号和许多日志和分析代码,从而减小了可执行文件的尺寸。

示例:TappyChicken

以下是在 4.0.1 branch 中为 iOS 制作和打包游戏数据的尺寸示例。

这里列出的编号删除了符号的可执行文件的大小。

整体传送 IPA 的未压缩大小为 43.8 MB(压缩后为 34.8 MB),其中包括:

  • 3.9 MB - 加载画面和图标(压缩后也差不多大小)

  • 25.5 MB - 可执行文件(从不压缩)

    我们从不压缩可执行文件,因为当将其上传到 App Store 时它是加密的,而且在那里根本不会对其进行压缩。

  • 10.6 MB - 引擎内容(压缩后为 4.8 MB)

  • 3.7 MB - 游戏内容(压缩后为 0.7 MB)

可执行文件从不进行压缩,图标/画面已经过压缩,但是游戏和引擎内容压缩得很不错。

今后,我们将继续努力减小所需引擎内容的数据量和尺寸,以及优化可执行文件的尺寸。

加载画面和图标是您所创建的 “.png” 文件;您可提供更少的变化(Tappy Chicken 就只开发了一种版本,用于所有设备)或使用简单图标来进一步缩小尺寸。

游戏内容引用

游戏内容的尺寸完全由您自己控制; Tappy Chicken 等小游戏的最终尺寸会很合理,但是如果您要加入一堆额外内容的话,它很快就会不够用的。

您要理解,游戏中引用的任何内容都会经过处理;有些经常有人会做的傻事,比如引用庞大但却不使用的纹理作为 材料功能或材料中的默认纹理样本,或者在断开连接的节点中引用不使用的内容,或者在在蓝图中引用不使用的变量。即使所有材料实例都 将上述内容替换为其他内容,这些内容仍然算作已引用。您可在经过处理的资产文件夹中进行查看,如果找到任何意料之外的资产,则使用 Reference Viewer 追踪是谁引用了它。

注意:如果您通过启动 button on the toolbar, only the content referenced by your chosen maps will be cooked, but if you package your project 来进行处理, 则游戏中的所有内容都将被处理,甚至包括未引用的内容。

禁用 Slate

仅包含内容的项目具有较大的可执行文件,因为他们无法猜测您使用的是哪些插件和库。通常,切换到 C++ 以及 在编译时禁用不必要的插件和库,可执行文件的尺寸可以缩小一点(通过 EnabledPluginsProject.Build.csProject.Target.cs 文件)。但是,我们有一种最优化的方式, 就是在仅包含内容的游戏中移除 30 MB 以上的石板资源,因为它们无法使用石板。如果您制作的 C++ 项目不使用石板,则在 Project.Target.csTargetRules 类的构建器中设置 bUsesSlate = false 即可节省这部分空间。