UE4烘焙

2023-11-01

前言

UE4引擎通过editor来创建和管理uasset,但是当游戏发布到不同的平台时需要根据平台转换为不同的格式。而这样的转换过程就叫作烘焙。

分为三个步骤

  1. 加载包至内存;

  2. 为包中的每个对象生成目标平台特定数据 (Derived Data);

  3. 把含有平台特定数据的包另存到cooked目录

Loading Package

类似于DLL中的导入、导出符号表,Unreal的Package也有一个导入(import)、导出(export)表。

Import表示其依赖的在其他包中的对象

Export记录了对其依赖的其他包中的对象。

当Unreal对一个包进行装载的时候,还需要载入依赖树上的所有包。我们也把这种依赖称为强引用(Hard Dependency)。

也有一些依赖的对象不需要提前载入,我们把这种对象称为弱引用(Soft Dependencies)。软依赖的对象可以后期通过在代码中手动载入。

Derived Data Cache

有的对象比如Texture在不同的平台上有不同的压缩格式,因此在烘培的过程中,需要针对特定的平台生成特定的数据,这种数据被称为"Derived Data"。又因为生成"Derived Data"的过程通常需要比较长的时间,Unreal引入了特定数据缓存(Derived Data Cache)。

Derived Data Cache就是一个在工作室中共享的资源仓库,其中保存了各种版本的资源文件在不同平台上对应的Derived Data。这样当工作室有同事进行烘培的时候,Unreal会去设置的Derived Data Cache中去找是否有人已经生成过该文件了,如果没有的话再生成该文件,这样就减少了重复生成的过程,提高了烘培的效率。

Save Package

烘培中保存包的机制其实和在Editor中保存资源的机制相同。唯一的区别就是保存包时的参数设置和要保存的文件路径。也可以通过在代码中修改UPROPERTIES或者重写Serialize函数来为不同的资源类型定制化不同的保存流程。

同时,Unreal中还默认所有定义在#if EDITOR_ONLY_DATA 的属性都不会在烘培的过程中被保存。

从命令行烘焙内容

要为游戏烘焙数据,需要使用Cook commandlet。

基本烘焙通过以下命令执行:

UE4Editor.exe <GameName or uproject> -run=cook -targetplatform=<Plat1>+<Plat2> [-cookonthefly] [-iterate] [-map=<Map1>+<Map2>]

UE4Editor-Cmd.exe <GameName> -run=cook -targetplatform=<Plat1>+<Plat2> [-cookonthefly] [-iterate] [-map=<Map1>+<Map2>] 

该commandlet必须通过`-run=cook`指定,还必须指定要烘焙的平台。该命令会为指定的平台生成数据, 并将数据保存在以下位置:

<Game>/Saved/Sandboxes/Cooked-<Platform>

选项

-targetplatform=<Plat1>+<Plat2>

指定要烘焙的平台。可用平台列表包含WindowsNoEditor、WindowsServer、LinuxServer、PS4, XboxOne、IOS和Android。

-iterate

指定烘焙器仅烘焙过时项目。如果不指定该选项,则沙箱目录将被删除,所有内容将重新烘焙。

-Map=<Map1>+<Map2>+...

指定要构建的贴图。

-cookonthefly

指定以服务器模式启动烘焙器。这样将启动服务器,服务器将等待游戏连接,然后根据需要提供烘焙的数据。使用该选项时,游戏需要在其命令行上指定-filehostip=<Server IP>以便能够连接服务器。

-MapIniSection=<ini file section>

指定ini文件中包含贴图名称的分段。烘焙器将烘焙指定分段中指定的所有贴图。

-UnVersioned

保存所有烘焙的数据包,不含版本。然后这些数据包在加载时会被假定为最新版本。

-CookAll

烘焙所有内容。

-Compressed

告知烘焙器压缩烘焙过的数据包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE4烘焙 的相关文章

随机推荐

  • 基于机器学习的心脏成像诊断

    心脏成像在心血管疾病 CVD 的诊断中起着重要作用 但到目前为止 它的作用仅限于对心脏结构和功能的观察和定量评估 然而 随着大数据和机器学习的出现 人工智能方法的出现将直接帮助临床医生诊断CVD 本文全面回顾了这一领域的最新研究成果 并为读
  • js数组去重常用方法

    js数组去重是面试中经常会碰到的问题 无论是前端还是node js数组常见的有两种形式 一种是数组各元素均为基本数据类型 常见的为数组字符串格式 形如 a b c 一种是数组各元素不定 元素中既有基本数据类型 也有引用数据类型 形式如 na
  • 某书最新版X-s(2023/5/23更新)

    前不久刚写过xhs的x s 前几天听一些小伙伴说又更新了 我二话不说还按原先的逆向思路 直接搜function sign 开始施展补环境大法 一顿无用的折腾 补完后 测试发现死活不成功 这真是离了大谱了 对比了一下 通过补环境 sign生成
  • 【linux】【tar】tar命令详解之czvf,xzvf

    Linux tar 英文全拼 tape archive 命令主要用于文件的打包压缩及解压 命令最初的设计目的是为了将文件备份到磁带上 tapearchive 因而得名tar 1 常用tar命令实例 打包命令 tar czvf xxx 说明
  • 代码布局优化

    代码布局优化是编译技术中的一种策略 其目的是调整程序中函数和数据的物理布局 以提高程序的执行速度 更好的代码布局能够有效利用现代处理器的特性 例如指令缓存和分支预测 从而提高性能 以下是代码布局优化的几个关键方面 指令缓存效率 当处理器执行
  • linux系统支持ntfs吗,Linux支持NTFS格式文件的方法

    一般情况下Linux系统是不支持NTFS文件系统的 所以我们不能在Linux系统中挂载NTFS文件系统类型的硬盘或移动硬盘 那么我们如何才能让Linux系统支持NTFS文件系统呢 现在我们去看看Linux支持NTFS格式文件的方法介绍 Li
  • VS 2022(Visual Studio 2022)菜单栏中增加文件-高级保存选项

    背景 最近想使用VS工具来开发Qt项目 但运行后发现程序运行中文会显示乱码 在网上找了相关资料后需要使用高级保存选项来更改文件编码为UTF 8类型 但VS2022貌似没有高级保存选项 摸索一番后发现添加该选项的方法 故而分享一下 参考连接
  • iwebsec靶场 文件包含漏洞通关笔记8-php://input伪协议利用

    目录 前言 1 php input伪协议原理 2 php input伪协议使用条件 第08关 php input伪协议利用 1 打开靶场 2 源码分析 3 伪协议渗透获取php信息 1 构造post信息 2 渗透 4 伪协议获取目录信息 1
  • 基础指针【指针的基本使用方法和注意事项】

    基础指针目录 前言 指针 指针是什么 指针的大小 指针的定义和赋值 指针的使用 传值调用和传址调用 传值调用 传址调用 指针的弊端 野指针 使用指针的注意事项 前言 指针 是我们在学习C语言中的一个重难点 关乎到我们学习C语言的深度和理解
  • module.exports、exports、export default、export、require、import

    在es5中 用 module exports 和 exports 导出模块 用 require 导入模块 在es6中 新增 export default 和 export 导出模块 用 import 导入模块 一般的 module expo
  • java 设置不缓存,java – 禁用通过外部属性的spring方法缓存

    我使用ehcache和注释驱动配置配置了 spring方法缓存 但是 我希望能够从我们在应用程序中使用的配置文件中禁用它 我的第一个想法是如果禁用方法缓存 则调用net sf ehcache CacheManager CacheManage
  • Vue3中的hook

    一 hook的基本使用 Vue3中的hook通常被称为Composition API 是Vue js框架中的一个重要特性 它们的本质是一些可以在组件内部使用的函数 这些函数能够让你在不影响组件逻辑的情况下 增强和扩展组件的功能 Hook的主
  • VS2015:当前不会命中断点,显示当前不会命中断点 没有与此行关联的可执行代码

    使用VS在Release模式下打断点进行调试 有时候不会命中断点 显示信息如下 当前不会命中断点 显示当前不会命中断点 没有与此行关联的可执行代码 这是因为Release模式下 编译器进行编译优化时 忽略掉了这个断点 为此需要 releas
  • ERROR: You must give at least one requirement to install (see "pip help install")

    使用pip install 命令时遇到You must give at least one requirement to install see pip help install 原因是install 后面没有参数 也就是说没有给想要安装的
  • 蓝牙AOA高精度定位

    01 蓝牙AOA定位技术原理 2019 年初 蓝牙技大联盟宣布蓝牙 5 1 引入了新的 寻向 功能 这个功能可检测蓝牙信号的方向 将大幅提高蓝牙定位的精确度 提供更好的位置服务 结束了以往通过 RSSI 信号强度的方式做低精度指纹定位的历史
  • qt程序设置同时只能运行一个,避免重复打开

    qt程序设置同时只能运行一个 避免重复打开 1 qt程序设置同时只能运行一个 避免重复打开 2 Qt 桌面软件防止重新启动 一 创建互斥量 二 使用QLockFile 创建锁定文件 通过能否锁定来判断是否已经有程序启动 三 使用 系统信号量
  • too few arguments

    改为 解决
  • C#,《小白学程序》第二十七课:大数四则运算之“运算符重载”的算法及源程序

    1 文本格式 using System using System Text using System Collections using System Collections Generic
  • python 默认参数问题

    一个函数参数的默认值 仅仅在该函数定义的时候 被赋值一次 首先来看问题 gt gt gt def add end L L append END return L gt gt gt gt gt gt t add end gt gt gt gt
  • UE4烘焙

    前言 UE4引擎通过editor来创建和管理uasset 但是当游戏发布到不同的平台时需要根据平台转换为不同的格式 而这样的转换过程就叫作烘焙 分为三个步骤 加载包至内存 为包中的每个对象生成目标平台特定数据 Derived Data 把含