UE4Cook前的资源格式通常为.uasset,.umap,资源打包时,会默认把这些格式的文件打包进资源包,打包后的资源文件后缀为.pak。

一、资源打包设置:

1.设置打包参数:打开ProjectSettings->Project->Packaging来设置打包参数:

这里有很多控制Cook和打包pak的参数,解释几个:
UsePakFile:True表示资源打包为.pak,如果不勾选,表示不打包Pak,资源会被原封不动的Copy到包里;
List of maps to include in a packaged build:这里添加要打入包的Map,如果这里为空,则默认所有Map打包Pak,反之则只打包这里添加的Map;
Additional Non-Asset Directories To Package(Copy):UE打包只会打包那些它自己承认的资源格式,比如上边提到的.uasset,umap,还有Cook后的.uexp,.ubulk,插件的.uplugin等,除此之外,如果我们自己想加一个文件,比如说.json到Pak中,就要在这里配置一下。

二、打包Pak

方法一:设置好参数,直接出包,然后就可以在游戏的Game/Content/Paks目录下看到pak文件。
方法二:打包pak时,其实调用引擎目录下的Engine/Win64/UnrealPak.exe,对应的代码是在UnrealPak.cpp里

代码及其精简,主要逻辑还是在PakFileUtilities.cpp里,我们上边的设置,最终都会在打包流程中处理成参数传入ExecuteUnrealPak,在此函数的最后可以看到可以传入的参数代表的意义:

使用方法:

  • 打包Pak:UnrealPak.exe <.pak生成路径> -Create=<PakList路径>
    其中PakList表示要打包的资源,UE自己生成的PakList在“C:User\AppData\Roaming\Unreal
    Engine\AutomationTool\Logs\x+engine\PakList_<pak名>.txt”,我们也可以写通配符,比如:
  • 解包Pak:UnrealPak.exe <.pak路径> -Extract <解包路径>
  • 其他参数:
UnrealPak <PakFilename> -Test
UnrealPak <PakFilename> -List
UnrealPak <PakFilename> -Dest=<MountPoint>
UnrealPak GenerateKeys=<KeyFilename>
UnrealPak GeneratePrimeTable=<KeyFilename> [-TableMax=<N>]
UnrealPak <PakFilename1> <PakFilename2> -diff
UnrealPak -TestEncryption
Options:
-blocksize=<BlockSize>
-bitwindow=<BitWindow>
-compress
-encrypt
-order=<OrderingFile>
-diff (requires 2 filenames first)
-enginedir (specify engine dir for when using ini encryption configs)
-projectdir (specify project dir for when using ini encryption configs)
-encryptionini (specify ini base name to gather encryption settings from)
-extracttomountpoint (Extract to mount point path of pak file)
-encryptindex (encrypt the pak file index, making it unusable in unrealpak without supplying the key)
-compressionformat[s]=<Format[,format2,...]> (set the format(s) to compress with, falling back on failures)

如果只是为了生成pak,我们可以直接通过这种方式生成Pak,跳过了Build、Cook等待阶段。我们也可以自定义一些参数,做一些自己的逻辑。

三、Patch

UE4的打包原理是:
1.先打包一个release的发布包,这个是玩家第一次拿到游戏时所包含的资源包,我们称它为母包。
2.之后在生成pak的时候,用当前的资源和母包进行对比,得到的差异生成的pak,则为下一次的Patch。

要生成Patch,这里我们就要用到UE4的UAT打包工具,它在UE的Engine\Build\BatchFiles目录下,打开cmd输入出包命令:
"RunUAT.bat -ScriptsForProject= BuildCookRun -nocompile -nocompileeditor -project= -clientconfig=Development -ue4exe=UE4Editor-Cmd.exe -targetplatform=Win64 -utf8output -cook -stage -pak -archive -package"

生成Patch需要增加以下参数:
生成Release的时候: -createreleaseversion=1.0 -createreleaseversionroot=<pak存放路径>
生成Patch的时候:-generatepatch -basedonreleaseversion=1.0 -basedonreleaseversionroot=<release pak的路径>

Pak文件内容:
在整个打包流程中,Pak之前有一步流程是Cook,Cook是把项目资源烘焙为对应平台的资源,然后Pak阶段把Cook后的对应平台的资源打包为.pak,.pak文件中包含了:
工程文件:.uproject
配置文件:.ini
插件配置文件:.uplugin
Engine Content下的文件:.png,.res,.ttf(源文件格式)
游戏项目资源文件:.uasset,.umap,.uexp,.ubulk
以上都是默认添加的,还有其他我们自己设置添加的文件

4.Pak文件结构

.Pak文件(FPakFile):
{序列化文件(FPakEntry):[文件偏移文件大小解压后大小压缩方式时间戳(可选)Hash(验证文件是否被修改)压缩块(可选:记录如何解压这个文件)标记(可选:标记是否加密,是否删除)压缩块大小(可选)文件内容]挂载点文件数量[文件名序列化文件(同上)]秘钥加密标记魔数版本号Pak索引偏移Pak索引大小Hash
}

未完待续……

UE4资源————Pak相关推荐

  1. UE4资源热更打包工具HotPatcher

    UE4资源热更打包工具HotPatcher https://imzlp.me/posts/17590/ Z's Blog 首页 归档 分类 标签 笔记 微言 资源 简历 关于 待办事项 站点日志 搜索 ...

  2. UE4 资源加载与资源缓存

    前一段时间其实就做完了这个资源预加载的功能,仅仅是根据以往的经验完成的这项功能.最近稍微有一点时间,就把UE4资源加载和缓存的整体流程进行了分析,这样可以对整个UE4资源管理流程有更深入的了解,同时也 ...

  3. ue4中Pak文件中挂载的资源名称获取

    在pak文件中,会挂接很多资源.api也在变化, 废话不多说,上代码 FPakPlatformFile* GetPakPlatformFile() { FPakPlatformFile* pakPla ...

  4. UE4中Pak文件的读取规则

    本文链接 https://blog.csdn.net/BDalasja/article/details/95618330 最近项目转战UE4了,需要研究UE4的热更,就此研究了一下PAK文件的相关内容 ...

  5. 【虚幻引擎】UE4/UE5 pak挂载

    一.首先设置UE4引擎的系统环境变量 找到:D:\UE\UE_4.27\Engine\Binaries\Win64, WindowS+R打开CMD命令 运行UnrealPak,运行结果如下  二.打开 ...

  6. UE4的.pak文件的加密和签名

    UE4源码支持.pak文件的数据加密和文件签名,并已集成在打包流程中,只需设置密钥后打包便会根据密钥配置自动进行.pak的加密和签名.加密和签名是相互独立的,可以只加密不签名也可以反之.注意:签名后会 ...

  7. UE4打pak包步骤

    1.打开你的UE4文件路径 E:\UE4.2\UE_4.24\Engine\Binaries\Win64 2.选中,输入cmd,点回车 3.打开了如下页面 4.输入     UnrealPak.exe ...

  8. UE4 版本迭代、资源热更、pak更新方案

    本文链接:https://blog.csdn.net/BDalasja/article/details/95622429 UE4 版本迭代.资源热更.pak更新方案 注意:以下讨论的内容是客户端热更, ...

  9. UE4大场景解决方案 ——Pak的打包与加载

    一.实现步骤 1.cook Content烘焙uasset文件 2.UnrealPak打包Pak文件 3.FPakFile.FPakPlatformFile从Pak文件中遍历文件StaticLoadO ...

最新文章

  1. 烂泥:net use与shutdown配合使用,本机重启远程服务器
  2. WeihanLi.Npoi 1.20.0 Released
  3. 体验paddle2.0rc版本API-Model--实现Mnist数据集模型训练
  4. SSO (单点登录)实现方式
  5. JAVA视频系列,学习JAVA常遇到的问题,连载【方法篇】。
  6. 补码加减法判断进位判断是否溢出的总结
  7. 在线开关MySQL5.7 GTID_MySQL 5.7 在线启用和关闭GTID
  8. fastjson对Date的处理
  9. SECS/GEM开发指导
  10. PHP微信h5棋牌搭建sprintf()函数的使用
  11. 小程序实时货币汇率计算
  12. 魔兽世界用宏显示服务器时间,魔兽世界宏命令全表
  13. MuMu模拟器的安装
  14. [转]file_get_contents(php://input)
  15. SpringMVC学习,总结
  16. 从txt中读取float数据C++
  17. [Setting]win7下运行exe失败:应用程序无法启动,因为应用程序的并行配置不正确
  18. 上海大学计算机跨考限制,注意:跨考专业有限制!这些你必须要了解!
  19. 共享 满城尽带黄金甲 在线免费观看网址
  20. 阿里云服务器ECS如何进行远程连接?

热门文章

  1. linux复制后权限变化,学霸Linux基础命令吐血总结,给你当新华字典用
  2. 关于宽带拨号上网的笑话,我自己闹的笑话。
  3. 7种常用函数图象及4种函数图象变换规则
  4. 9343拆机 xps13_《拆机Pa》十二期 第二代XPS 13是进步还是退步
  5. ♥ 七夕七夕 ♥ - 怎么给女朋友送礼物攻略
  6. python读取千万级数据库数据类型_Python 基于Python从mysql表读取千万数据实践
  7. 2018入门微单相机推荐
  8. BUUCTF 每日打卡 2021-8-18
  9. 漂亮的非主流图片(38p)
  10. 这是我家养的睡莲 开花了