减小游戏包大小

本页面的内容:

  • 创建新的空项目
  • 压缩已烘培的内容
  • 设置项目的关卡
  • 检查将要烘培的内容
  • 开发构建大小与交付构建大小
  • 按设备的纹理 LOD
  • 移除不使用的内容
  • 移除未使用的插件
  • 打包黑名单
  • 最大动态点照明数

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

创建新的空项目

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

压缩已烘培的内容

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

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

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

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

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

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

设置项目的关卡

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

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

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

检查将要烘培的内容

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

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

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

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

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

按设备的纹理 LOD

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

移除不使用的内容

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

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

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

移除未使用的插件

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

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

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

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

打包黑名单

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

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

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

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

最大动态点照明数

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

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

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

状态

游戏包大小

削减量

54.3 MB

0

53.2 MB

1.1 MB

相关页面

  • 控制 APK 包的容量

减少虚幻4游戏打包大小相关推荐

  1. 删除vue打包大小限制_如何优化 Vue 祖传代码

    目录 前言 为什么要优化 从哪里开始下手 现在开始 1.代码压缩 2.删除一些废弃的页面 3.使用 cdn 优化 4.修改路由引入方式 结果 前言 "这页面加载也太慢了!",一个宁 ...

  2. 游戏打包过程枯燥且繁琐,如何提升打包效率?

    简介:为了简化业务流程,实现高性能和成本优化,鲸旗游戏最终选择使用阿里云 Serverless 函数编排与函数计算的方式来执行打包操作,完美解决痛点. 作者:折松,阿里云解决方案架构师 深圳市鲸旗天下 ...

  3. 虚幻4html5游戏,开发者:虚幻5使游戏文件大小飞涨 呈现独特挑战

    媒体wccftech在采访Kitatus and Friends首席执行官兼首席程序员Ryan Shah时,谈到了有关虚幻5引擎画质提升而造成的游戏占用存储空间大小的问题,Shah作为一名虚幻引擎程序 ...

  4. 基于函数计算的游戏打包最佳实践

    简介:本文主要介绍了通过Serverless工作流(FNF)+ 函数计算(FC)+ 对象存储(OSS)+ 日志服务(SLS)的组合方案,实现游戏发行过程中,自动化.并行化的一键式构建游戏渠道包.同时也 ...

  5. 手把手教你将H5游戏打包为手游

    H5游戏可以通过快应用的web组件快速打包成快游戏,打包上架后的快游戏,只要原H5游戏的url不发生变动,快游戏就不需要做更新,维护工作量小. 使用快应用IDE,打包快游戏的操作很简单. 访问官网安装 ...

  6. h5 nan_手把手教你将H5游戏打包成快游戏

    H5游戏可以通过快应用的web组件快速打包成快游戏,打包上架后的快游戏,只要原H5游戏的url不发生变动,快游戏就不需要做更新,维护工作量小. 使用快应用IDE,打包快游戏的操作很简单. 访问官网安装 ...

  7. 虚幻4 游戏引擎 C++编程 官网例程解析

    虚幻4游戏引擎C++编程官网例程解析 官网例程 源代码 FloatingActor.h FloatingActor.cpp 内容说明 pragma once 头文件 UClass宏 AActor类 P ...

  8. 虚幻4游戏引擎的安装

    目录 一.注册Epic games账户 二.安装虚幻4游戏引擎 一.注册Epic games账户 我们的虚幻4引擎是由Epic games这个平台来支持的,所以我们要下载这个平台再里面下载虚幻4游戏引 ...

  9. 解决uniapp静态文件字体包太大打包大小超出限制

    一.解决uniapp静态文件字体包太大打包大小超出限制 1.在app.vue文件下使用本地文件修改为网络路径 文件大小超过20m可以使用cdn加速我使用unicloud(示例): <style ...

最新文章

  1. 项目中用到的三个绿色自动备份方法
  2. string截取某个字符串之前的_python String字符串操作
  3. linux IP 命令使用举例
  4. 【数据库原理及应用】经典题库附答案(14章全)——第十四章:分布式数据库系统
  5. java并行流 阻塞主线程_多线程入门案例与java8的并行流
  6. 【C++ grammar】nullptr and Dynamic Memory Allocation (空指针和动态内存分配)
  7. Flink Kafka Connector 与 Exactly Once 剖析
  8. js基础-13-常见DOM操作
  9. 基于HTML5、JavaScript和CSS3的网页开发应用技术的网页
  10. 静态测试和动态测试相关知识点
  11. 速轩三维 - 手持式激光三维扫描仪
  12. WPF编程,Live Charts使用说明(51)——X轴Y轴同时赋值的一种方法
  13. ms 真空层_Materials Studio学习
  14. 直播课堂系统,打造出超过线下培训场景200%的在线学习课堂
  15. 均方误差——MSE 和标准差 的区别
  16. CS5801|替代LT6711A|HDMI转DP转接线方案|HDMI转DP带供电芯片方案
  17. SpringSecurity - 用户动态授权 及 动态角色权限
  18. solo 电路 耳放_SOLO耳放分析,带PCB布线
  19. Java打板_AI 打板模型原理与实践
  20. 仅仅允许本校报考?多所985/211大学计算机第二学士学位

热门文章

  1. Loadrunner之脚本的思考时间(固定/随机)设置、调试、保存、测试服务器监控等(六)...
  2. 关于示波器测波特率的方法
  3. Word2016自带墨迹公式转换成mathtype公式类型
  4. java科学计数法转换为数字型字符串
  5. 字节跳动面试准备 | 关于字节
  6. Android ScaleAnimation代码调用示例
  7. android标题栏添加按钮_Android和iOS设计差异点有哪些?
  8. 在线PS软件有哪些不错的推荐
  9. 手机游戏市场分析-3G手机开发公开课-东方尚智,3g数字内容学院
  10. 电信物联网卡有哪些类型的套餐