当前位置: 首页 > news >正文

更新UnrealPakViewer工具

更新UnrealPakViewer工具

 

https://wangjie.rocks/2020/07/23/2020-unrealpakviewer/

UnrealPakViewer 是几年前做的一个工具,用来查看打包后的 pak 内的信息,之前的版本比较简陋,功能也很简单。最近抽空将界面,功能又完善了下。

源码地址: UnrealPakViewer

Release 版本下载: v1.0

如果你的项目对 Pak 格式进行了修改,那么需要将代码克隆到 Engine/Source/Programs 目录下,重新生成解决方案进行编译,目前在引擎版本 4.24 及以上可以编译通过,其他版本还没测试

如果没有进行修改,包括文件格式,AES加密方式,还是标准的 UE Pak,那么也可以直接使用编好的 Release 版。这个版本使用最新的 4.26 引擎编译,可以兼容低版本 Pak 文件

unrealpakviewer.png

摘要信息

summary.png

界面的上方是 Pak 文件的摘要信息,主要显示 Pak 文件的路径,挂载点,版本,文件大小,文件数,Pak 文件头大小,Pak 文件索引区大小,Pak 文件内容区大小和是否加密等信息

AssetRegistry 是用来判断 Pak 内文件的类型,默认是读取 Pak 内一起打包进去的 AssetRegistry.bin,如果没有打包,或者想要使用其他的 AssetRegistry,那么可以点击 Load Asset Registry 按钮手动加载。AssetRegistry 文件默认的生成路径是在 Saved/Cooked/[Platform]/[ProjectName] 下面

树视图

第一个标签是树形视图,用来查看 Pak 内文件的组织关系

treeview.png

树形文件组织关系

标签内容左半部分区域使用树形控件展示所有文件,如果是文件夹则会在旁边显示该目录在 Pak 内的大小占比,哪些目录占据空间大就一目了然了

treeview_left.png

文件详情

标签内容右半部分区域是选中树形控件中某项后,显示的具体信息

如果选中的是文件,则显示文件的包内路径,文件类型,原始大小,压缩大小,压缩方式,是否加密等信息

treeview_right_file.png

目录详情

如果选中的是目录,则显示目录的原始大小,压缩大小,压缩大小占比,目录内文件数量,并同时显示目录内的每种类型资源的分布情况,并支持升降排序

treeview_right_folder.png

文件视图

文件视图以列表形式列出 Pak 内的所以文件,包括类型,偏移,原始大小,压缩大小,压缩方式,是否加密等信息,并支持升降排序,按类型过滤文件,按关键字搜索过滤文件功能

fileview.png

按类型过滤文件

单击 Class Filter 下拉框,在框内选择每个类型的显示或者隐藏

fileview_classfilter.png

按关键字过滤文件

在搜索框输入关键字,会实时搜索匹配的文件,并高亮搜索关键字

fileview_search.png

解压

在树视图或者文件视图中,右键选中想要解压的文件或目录,在弹出的菜单中选择 Extract,就可以将 Pak 内的文件解压到磁盘上

extract.png

在菜单栏的 Options 菜单中可以配置解压的线程数量

extract_setting.png

导出信息

在树视图或者文件视图中,右键选中想要导出的文件或目录,在弹出的菜单中选择 Export,就可以将 Pak 内的文件信息导出成 json 或者 csv 格式

export.png

密钥支持

如果 Pak 是使用 AES 加密的,则在打开 Pak 的时候会弹出密钥输入框,需要输入正确的密钥后才能打开文件

encryption.png

后续计划

目前 UnrealPakViewer 已经基本满足各种需求,后续还会有一些开发计划,比如

  • 无 UI 的命令行程序,支持解压和导出
  • 直接识别文件类型,不需要额外的 AssetRegistry 文件
  • 资源预览功能(远期)

堡垒之夜

用 UnrealPakViewer 测试了一下堡垒之夜的 Pak,看看是否能打开,Epic 内部是不是会对 Pak 做一些私有化的修改。结果发现确实没有,堡垒之夜的 Pak 就是原生的格式,完全没有任何改动

还有其他有意思的地方,比如堡垒之夜的移动端版本采用的资源压缩算法是 Oodle ,之前做 TCP/UDP 数据包压缩的时候曾经接触过,没想到他的文件压缩也这么厉害。堡垒之夜的非移动端版本的资源是不压缩的,大概就是为了节省解压时间吧

堡垒之夜的最新版本用的引擎版本已经是 4.26 了,直接将最新的引擎应用到线上的游戏中,看起来很激进但是侧面也能反应出 Epic 对虚幻引擎的自信,佩服

fortnite.png

本文于 2020-07-23 更新

 UE4

返回 | 主页

v2ray 常用设置

 

 

 

 

 

相关文章:

  • UE4中Taglib使用及插件制作
  • UE4编辑器扩展踩坑血泪史
  • require函数
  • UE4 给static mesh 动态添加Socket
  • UE4 角色用Child Actor组建添加装备 这样方便随时添加,更换套装等行为
  • Unity Assets目录下的特殊文件夹名称
  • Unity-ShaderVariantCollection
  • Unity渲染教程(九):复杂材质 https://www.jianshu.com/p/5e3af869870f
  • HttpWebRequest(System.Net)模拟HTTP发送POST
  • C#中用HttpWebRequest中发送GET/HTTP/HTTPS请求 (转载)
  • System.Net.HttpWebRequest.GetRequestStream超时问题
  • System.Net.HttpWebRequest.GetResponse() 远程服务器
  • 【转载】HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
  • UE4 AIController
  • [UE4]创建自定义AIController的方法(C++)
  • angular2开源库收集
  • canvas 高仿 Apple Watch 表盘
  • Date型的使用
  • echarts花样作死的坑
  • java取消线程实例
  • leetcode-27. Remove Element
  • Meteor的表单提交:Form
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • spring + angular 实现导出excel
  • Spring Cloud中负载均衡器概览
  • SpringBoot 实战 (三) | 配置文件详解
  • 基于Android乐音识别(2)
  • 深入浏览器事件循环的本质
  • 学习使用ExpressJS 4.0中的新Router
  • 赢得Docker挑战最佳实践
  • 自定义函数
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Python 之网络式编程
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #Linux(帮助手册)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Python) SOAP Web Service (HTTP POST)
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (三)模仿学习-Action数据的模仿
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)Controller接口控制器详解(三)
  • (转)fock函数详解
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET NPOI导出Excel详解
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 反射 Reflect
  • .NET/C# 使用 SpanT 为字符串处理提升性能