所有 Unreal Editor Fortnite特别版(UEFN) 的岛屿都支持从高端PC到移动设备的一系列硬件,但要为移动端创建成功的岛屿,必须从一开始就考虑到优化和内存效率。
本页面介绍了在为移动端设计时需要考虑的关键因素。
移动端设计最佳实践摘要
从玩家角度进行设计:
了解你的受众以及他们对移动端游戏体验的需求。
创建一个简单、清晰且在移动屏幕上易于导航的自定义UI。
针对不同尺寸的屏幕进行设计,并针对各种屏幕和分辨率进行频繁的游戏测试。
利用《Fortnite》现有的移动端控制并据此设计你的游戏。
通过游戏玩法创造参与感:
优化项目:
可延展性设置
UEFN的设计旨在实现平台可延展性。 由于硬件限制,部分功能在较低质量级别时会被禁用或缩减。 使用编辑器内的可视化可延展性工具,预览岛屿在不同可延展性等级下的效果。 强烈建议进行分级测试。
下表显示了在不同质量级别下会缩放或禁用的重要功能:
基于可延展性来构建你的岛屿和资产,可确保在不同设备上获得最佳性能和视觉效果。 需要考虑的关键领域:
网格体LOD:对自定义静态或骨骼网格体使用网格体LOD,以减少多边形数量并增加每秒帧数(FPS)。
世界与HLOD:使用HLOD和世界分区来流送地图,以减少渲染内容,从而减轻GPU压力并提高FPS。
纹理组和MIP映射:通过MIP映射启用运行时材质缩放。 确保纹理位于正确的组中,并且创建为二次幂,以实现平滑缩放和视觉质量。 不符合二次幂规则的纹理将无法流送。
材质质量:复杂的材质在低端平台上可能开销过高。 我们创建了材质函数包装,以帮助你进一步为不同平台层级自定义材质的不同方面。
导航到Fortnite > 材质(Materials) > 函数(Functions),你将在其中找到
MF_QualitySwitch_MaterialAttributes、MF_QualitySwitch_Scalar和MF_QualitySwitch_Vector。 使用这些质量切换包装在低质量设置下简化材质函数,可以提升性能。 如需更多信息,请参阅材质函数页面。
为移动端设备优化美术和资产的技巧
从一开始就要意识到移动端平台的局限性。
避免过度绘制。 扁平化图层,限制透明度,并修剪重叠的杂乱内容。
简化纹理。 使用最小化工具。
务必在移动设备上充分测试岛屿。 检查UI冲突以及与游戏功能按钮重叠的元素。 可以使用Amazon Luna或Xbox Cloud Gaming来进行移动端的游戏测试。
运行内存计算工具,获取关卡中最耗费资源的资产详细列表。
更多优化技巧
尽管UEFN提供了出色的引擎可延展性,你仍然需要精简和优化内容。 硬件过载会导致帧率过低、加载时间过长以及整体体验不佳。 使用以下指南来提升性能:
优化网格体:尽可能减少多边形数量。 关于多边形数量预算,请参阅创建《Fortnite》的适用资产。
材质数量:使用尽可能少的材质。 理想情况下,每个网格体仅使用一个材质部分。
纹理分辨率:移动设备的纹理内存有限。 使用512x512像素纹理,并尽可能避免使用更大的尺寸。
减少绘制调用:避免同时渲染过多的独特对象和纹理。 使用实例和分层实例化静态网格体(HISM),并在可行的情况下将较小的对象组合到较大的道具中。
世界分区与数据层:减少屏幕上加载的资产和加载时间。 在内存管理文档页面上了解世界分区。
优化光照:使用尽可能小的光照半径,避免灯光重叠,将灯光的移动性(Mobility)设置为固定(Stationary)。
对于不需要清晰阴影的光照(尤其是在天光提供足够环境光照的室外区域),关闭投射阴影。
使用光照可延展性管理器:为每个ESS关卡创建不同的光照场景。 你可以针对中低级别(移动端和旧版主机)设置简化且性能更高的光照方案。
Mipmap及其必要性
可以将Mipmap理解为纹理的LOD。 纹理分辨率可根据摄像头的距离和方向进行切换。
虽然无Mipmap的纹理会带来更清晰的渲染效果,但这些纹理会一直留在设备内存中,并绕过UEFN的流送流程。
下图按大小显示了纹理内存使用情况。 例如,应考虑到1024x512纹理使用的内存是1024x1024纹理的一半。
虽然单个纹理看起来占用不大,但出现大量纹理时,它们会同时加载到屏幕上,并且当摄像机移开时,它们并不会立即从内存中清除。 这种累积可能因超出内存限制而导致设备崩溃。
移动端故障排查
以下是一些在移动设备上优化岛屿时的常见问题与解决方案。
移动端上的低帧率(FPS)
问题:过多的 绘制调用和显卡过载。
解决方案:减少单次可见的内容量。 使用世界分区来划分关卡并减少渲染内容。
解决方案:使用HLOD和网格体LOD来降低资产复杂度和多边形数量,使GPU能够更快地渲染对象。
解决方案:在低质量设置下简化复杂材质,或减少独特材质数量,因为它们会增加GPU的每帧计算量。 尽可能重复使用材质。
解决方案:尽可能将较小的对象组合成一个较大的资产。 这样可以让显卡将它们作为单个项目或绘制调用来渲染。
问题:一次加载过多资产。
解决方案:使用世界分区来划分关卡,减少加载的内容量。
解决方案:使用HISM和实例来减少独特资产的数量。
解决方案:尽可能重复使用材质,以减少每帧的GPU计算量。
岛屿内存使用量过高
问题:未优化的内容。
解决方案:尽可能使用512x512纹理,分配正确的纹理组,并确保流送已启用。
解决方案:对于自定义网格体,使用最少的多边形数量以实现有效的LOD并减小烘焙体积。
问题:独特网格体过多。
解决方案:尽可能使用HISM和实例。 以不同方式重复使用同一资产,可减少内存中存储的唯一资产数量。
解决方案:尽可能将较小的对象组合成一个较大的资产。
支持的移动设备
下表列出了在测试移动游戏体验时应考虑的设备和规格。
Android
| 类别 | 最低要求 |
|---|---|
操作系统 | Android OS 10.0或更高版本 |
架构 | 基于ARM64处理器的64位Android操作系统 |
内存 | 4GB内存 |
GPU | Adreno 530或更高,Mali-G71 MP20、Mali-G72 MP12或更高 |
Apple
| 设备 | 模型 |
|---|---|
iPhone | iPhone 11、iPhone 11 Pro、iPhone 11 Pro Max、iPhone 12、iPhone 12 mini、iPhone 12 Pro、iPhone 12 Pro Max、iPhone 13、iPhone 13 mini、iPhone 13 Pro、iPhone 13 Pro Max、iPhone 14、iPhone 14 Plus、iPhone 14 Pro、iPhone 14 Pro Max、iPhone 15、iPhone 15 Plus、iPhone 15 Pro、iPhone 15 Pro Max、iPhone 16、iPhone 16 Plus、iPhone 16 Pro、iPhone 16 Pro Max |
iPhone SE | 第3代(2022年) |
iPad Pro | 12.9英寸第二代或更高版本、11英寸第一代或更高版本、10.5英寸 |
iPad Air | 第4代(2020年)、第5代(2022年) |
iPad | 第10代(2022年) |
iPad mini | 第6代(2021年) |
其他资源
查看以下资源,加深你的理解:
《Fortnite》文档中的内存和优化部分
UEFN中的项目优化YouTube视频
UEFN中的内存管理 YouTube视频