Code Monkey home page Code Monkey logo

unrealpakviewer's Introduction

UnrealPakViewer

Find the english translation of the README here

可视化查看 Pak 文件内容,支持以下特性

  • 支持树形视图和列表视图查看 pak/ucas 中的文件
  • 支持同时打开多个 pak/ucas 文件
  • 列表视图中支持搜索,过滤,排序
  • 支持查看 UAsset 文件的具体内容组成信息
  • 以百分比显示各个文件夹,文件,文件类型的大小占比
  • 支持多线程解压 Pak 文件
  • 支持加载 AssetRegistry.bin 资源注册表

功能

打开 Pak 文件

OpenPak.png

或者直接拖动 Pak 文件到 UnrealPakViewer 窗口中即可打开,如果 Pak 文件是加密的的,则会弹出密码输入框

AESKey.png

输入对应的 AES 密钥的 Base64 格式后即可打开 Pak 文件

查看 Pak 文件摘要信息

PakSummary.png

  • Mount Point: 默认挂载点
  • Pak Version: Pak 文件版本号
  • Pak File Size: Pak 文件大小
  • Pak File Count: Pak 内打包的文件数量
  • Pak Header Size: Pak 文件头大小
  • Pak Index Size: Pak 索引区大小
  • Pak Index Hash: Pak 索引区哈希值
  • Pak Index Is Encrypted: Pak 索引区是否加密
  • Pak File Content Size: Pak 文件内容区大小
  • Pak Compression Methods: Pak 中文件所使用的压缩算法

加载资源注册表

LoadAssetRegistry.png

Cook 完成后都会在 Saved/Cooked/[Platform]/[Project]/Metadata/DevelopmentAssetRegistry.bin 路径生成一份资源注册表信息,里面包含资源类型,引用关系等信息,可以通过 Load Asset Registry 加载进来分析各个资源类型的大小占比信息

文件树视图

TreeView.png

以树形结构列出 Pak 内包含的目录和文件,以及目录大小占总大小的比例信息

选中某个目录后可以在右边查看该目录详情

FolderDetail.png

  • Name: 目录名称
  • Path: 目录路径
  • Size: 目录解压后大小
  • Compressed Size: 目录压缩后大小
  • Compressed Size Of Total: 目录压缩大小占总 Pak 大小的比例
  • Compressed Size Of Parent: 目录压缩大小占上级目录的比例
  • File Count: 目录中文件数量

以及该目录中各个文件类型的占比信息(需要加载 AssetRegistry.bin 注册表)

FolderDetailClass.png

选中文件后可以在右边查看该文件详情

FileDetail.png

相比目录,额外多一些信息

  • Class: 文件类型
  • Offset: 文件在 Pak 中序列化的起始位置
  • Compression Block Count: 压缩分块数量
  • Compression Block Size: 压缩分块大小
  • Compression Method: 文件压缩算法
  • SHA1: 文件哈希值
  • IsEncrypted: 文件是否加密

如果选中的是 .uasset 或者 .umap 文件,还能查看该文件内部的序列化信息

AssetSummary.png

  • Guid: 该资源的 Guid
  • bUnversioned: 序列化时是否带引擎版本信息
  • FileVersionUE4: 文件格式版本号
  • FileVersionLicenseeUE4: 文件格式版本号(授权)
  • TotalHeaderSize: uasset 的文件头大小
  • PackageFlags: uasset 包标志
  • ImportObjects: 导入表信息(引用的外部对象信息) ImportObjects.png
    • Index: 对象在导入表中的索引
    • ObjectName: 对象名称
    • ClassName: 对象类型
    • ClassPackage: 对象类型所在的包
    • FullPath: 对象完整路径
  • ExportObjects: 导出表信息(该资源内部有哪些对象),导出表的序列化大小即是对应的 .uexp 文件大小,可点击 SerialSize 和 SerialOffset 列进行排序 ExportObjects.png
    • Index: 对象在导出表中的索引
    • ObjectName: 对象名称
    • ClassName: 对象类型
    • SerialSize: 对象的序列化大小
    • SerialOffset: 对象的序列化偏移
    • FullPath: 对象在包内的完整路径
    • bIsAsset:
    • bNotForClient: 非客户端资源
    • bNotForServer: 非服务器资源
    • TemplateObject: 该对象的模板对象
    • Super: 父类对象
    • Dependencies: 该对象引用的具体对象信息,冒号前为引用类型,后为引用的具体对象路径 ObjectDependencies.png
      • Serialization Before Serialization: 序列化前要完成序列化的对象
      • Create Before Serialization: 序列化前要完成创建的对象
      • Serialization Before Create: 创建前要完成序列化的对象
      • Create Before Create: 创建前要完成创建的对象
  • Dependency packages: 该资源依赖的资源 DependencyPackages.png
  • Dependent packages: 依赖该资源的资源,这个是在当前 Pak 内搜索,如果分包了则结果可能会缺失 DependentPackages.png
  • Names: 该资源相关联的所有 FName 信息 Names.png

右键菜单

TreeViewContext.png

右键目录或者文件,会弹出右键菜单,功能如下

  • Extract: 解压选中的目录或者文件
  • Export To Json: 将选中的目录或文件信息导出到 Json 文件
  • Export To Json: 将选中的目录或文件信息导出到 Csv 文件
  • Show In File View: 如果选中的是文件,则跳转到该文件在文件列表中的对应位置

文件列表视图

ListView.png

文件列表视图以表格形式显示 Pak 中的文件信息,支持点击列标题进行排序

类型过滤

ClassFilter.png

按类型过滤列表中的文件

文件名过滤

NameFilter.png

按文件名过滤列表中的文件

右键菜单

ListViewContext.png

选中文件后右键弹出右键菜单,功能如下

  • Extract: 解压选中文件
  • Export To Json: 将选中的文件信息导出到 Json 文件
  • Export To Json: 将选中的文件信息导出到 Csv 文件
  • Show In Tree View: 如果选中单文件,则跳转到树形视图中
  • Copy Columns: 复制对应的列信息到剪贴板中
  • View Column: 隐藏/显示列
  • Show All Columns: 显示所有列

编译

将代码克隆到 Engine\Source\Programs 目录下,重新生成解决方案编译即可

  • 已编译通过的引擎版本
    • 4.24
    • 4.25
    • 4.26
    • 4.27
    • 4.28

TODO

  • commandline application
  • Pak compare visiualize
  • resource preview
  • resource load heat map

unrealpakviewer's People

Contributors

bananaturtlesandwich avatar imgbotapp avatar jashking avatar pavelhoral avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unrealpakviewer's Issues

.uexp资源如何重新导入UE

请问导出来的.uexp,怎么用UE4打开呢,umodel.exe也是这个问题,导出来的资源也是uexp格式,有重新导入的解决办法吗?

如何查看Texture2D的资产的详细信息

请问下, 我想扩展下PakViewer, 如果这个资产是Texture的话, 想查看他的Size, LodBias等信息.

对于如何获取Texture的信息有什么方法吗?

我目前遇到的问题是, UTexture2D需要引入Engine模块, 从而依赖到了EditorStyle模块, 而EditorStyle只允许TargetType=Editor.

Can't install program

Can somebody, please, explain me how to build the solution for this program step by step? I don't get it.

5.1支持

你好,目前5.1版本的pak内的content很多目录无法识别~

Randomly running out of memory?

Not entirely sure what's going on here; likely just an application error as my system is pretty beefy with 64GB of DDR4 RAM alone. This is also running on an MDOT4 SSD, so I'm really uncertain of why this issue is presenting itself. Game this is from is Aliens Fireteam Elite, files larger than 20MB seem to just crash it outright which has been pretty nerve racking to say the least.

Fatal error: [File:Unknown] [Line: 241]
Ran out of memory allocating 1623124170 bytes with alignment 2. Last error msg: The paging file is too small for this operation to complete..
0x00007ff709ebdb34 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709ec2215 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709ecbbb3 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709ef486f UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709ef50cf UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709e89448 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709eb3ec0 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709fd0742 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709f85d57 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff70a1afc1f UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff70a1aec04 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff70a5dce60 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709fbbd1f UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709fbeb84 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709e9fce5 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709e95d61 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709eb11f3 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709e9adc0 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709ef8ca4 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709fed0e7 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff709fe8d31 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff8cebe7614 KERNEL32.DLL!UnknownFunction []
0x00007ff8cee026a1 ntdll.dll!UnknownFunction []

Crash in runnable thread Background Worker #3

可否一次性打开多个*.pak文件

可否一次性打开多个*.pak文件?
历史记录里面存储上一次填写的Base64密钥 避免每次加载都需要输入一次密钥

辛苦大佬更新分享 爱你么么哒~

1.4版本内存溢出

Pak内文件越多,内存占用越大,回退至1.3版本内存使用正常。

License?

Hi, would you be able to add license requirements to this plugin? MIT, etc? Thanks!

无法打开加密的pak

image

加密压缩方式:

./UnrealPak G:\test.pak -create=G:\NA-415 -compress -encrypt -encryptindex -aes=99999999999999999999999999999999

1.4版提取星耀季节闪退,退回1.3版可正常使用

Fatal error: [File:Unknown] [Line: 241]
Ran out of memory allocating 1590352578 bytes with alignment 2. Last error msg: 页面文件太小,无法完成操作。.
0x00007ff6ff18db34 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff192215 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff19bbb3 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff1c486f UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff1c50cf UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff159448 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff183ec0 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff2a0742 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff255d57 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff47fc1f UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff47ec04 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff8ace60 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff28bd1f UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff28eb84 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff16fce5 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff165d61 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff1811f3 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff16adc0 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff1c8ca4 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff2bd0e7 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff6ff2b8d31 UnrealPakViewer-Win64-Shipping.exe!UnknownFunction []
0x00007ff8b45c7604 KERNEL32.DLL!UnknownFunction []
0x00007ff8b50626a1 ntdll.dll!UnknownFunction []
Crash in runnable thread Background Worker #3

24g的可用内存直接吃满,不到一分钟就闪退,1.3版正常不闪退

Some Ideas

would be great to see the blueprint code and the map you think you can add this thing?

aes key problem

hey guys i read a few post here and i see peoples have the same error
but i dont know how to get that fix yet i try to do decode of it but not work the same error appeard
said

("AES encryption key
base64 h67GrjX2aGMgrAQeNwf9VmCYbt50ylJFeP3rIhbxh4e9bZXnqm8sbvEjWGOi6rgs cannot decode to 32 byte long")

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.