资讯动态

PathOfBuilding 数据导出指南:使用 bun_extract_file.exe 高效提取 GGPK 游戏归档数据

发布时间:2026/9/18 7:48:37 来源:尧图企业网站定制
PathOfBuilding 数据导出指南使用 bun_extract_file.exe 高效提取 GGPK 游戏归档数据【免费下载链接】PathOfBuildingOffline build planner for Path of Exile.项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding本篇技术指南以 src/Export/ggpk/README.md 为骨架系统讲解 PathOfBuilding 仓库中bun_extract_file.exe这一命令行工具的全部用法从《流放之路》(Path of Exile) 的Content.ggpk归档或 Steam 安装目录中列出、提取游戏数据文件。读完本文你将掌握list-files、extract-files、extract-files --regex三条命令的完整语法与实战场景并理解它们在 PathOfBuilding「Dat View」导出管线中如何被调用——这正是仓库从游戏客户端抽取.dat数据、生成 src/Data 下全部 Lua 数据文件的源头。一、背景GGPK 归档与提取工具的作用GGPK 是 Grinding Gear Games 为《流放之路》客户端设计的专有归档格式游戏本体、Data/*.dat数据表、Metadata/资源等数以万计的文件都被打包在一个Content.ggpk中。PathOfBuilding 需要这些数据来生成词缀、技能、基础装备等 Lua 数据文件因此仓库在 src/Export 下维护了一套完整的导出工具链而bun_extract_file.exe就是其中负责「从 GGPK 中取出文件」的低层提取器——它基于 Bun 打包为 Windows 可执行文件直接支持 GGPK 文件路径与 Steam 解包目录两种数据源。从源码结构看该工具的调用被封装在 src/Export/Classes/GGPKData.lua 的ExtractFilesWithBun/ExtractFilesWithBunFromTable方法中后者正是为规避 Windows 命令行长度上限而设计的清单manifest模式详见后文「导出管线」一节。二、数据源参数GGPK_OR_STEAM_DIRbun_extract_file.exe的所有子命令都接受同一个首参GGPK_OR_STEAM_DIR是Content.ggpk所在位置的完整路径。官方示例给出的经典 GGPK 路径为C:\Program Files (x86)\Grinding Gear Games\Path of Exile\Content.ggpk需要特别说明的是该参数名中的OR_STEAM_DIR意味着你既可以直接指向Content.ggpk文件本身也可以指向 Steam 版游戏安装目录。这与 src/Export/Classes/GGPKData.lua 中的注释相互印证Path can be in any format recognized by the extractor at oozPath, ie, a .ggpk file or a Steam Path of Exile directory即提取器对两种数据源一视同仁统一通过该路径参数传入。三、命令一列出归档内全部文件list-filesbun_extract_file list-files GGPK_OR_STEAM_DIR该子命令遍历整个 GGPK/Steam 目录将其中所有文件的相对路径逐行输出到标准输出。官方推荐的做法是重定向保存便于后续检索与批量提取.\bun_extract_file.exe list-files C:\Program Files (x86)\Grinding Gear Games\Path of Exile\Content.ggpk file_list.log典型输出内容形如Data/armours.datc64 Data/weapons.datc64 Metadata/StatDescriptions/stat_descriptions.txt ...file_list.log中的每一行都是一个可在extract-files子命令中直接使用的文件路径两个子命令由此形成「先盘点、后提取」的工作流。四、命令二按路径提取指定文件extract-filesbun_extract_file extract-files GGPK_OR_STEAM_DIR OUTPUT_DIR [FILE_PATHS...]参数含义参数说明GGPK_OR_STEAM_DIRContent.ggpk或 Steam 游戏目录的完整路径OUTPUT_DIR提取文件的输出目录相对或绝对路径不存在时会自动创建FILE_PATHS...一个或多个待提取文件的归档内路径空格分隔该命令将归档内精确匹配FILE_PATHS的文件解压到OUTPUT_DIR并保持归档内的目录层级。例如只提取两张数据表.\bun_extract_file.exe extract-files C:\Program Files (x86)\Grinding Gear Games\Path of Exile\Content.ggpk . Data/armours.datc64 Data/weapons.datc64同时支持从标准输入stdin逐行读取文件路径清单这在文件数量很多时尤为实用。仓库正是利用这一特性设计了清单模式ExtractFilesWithBunFromTable先把全部目标文件路径小写化后逐行写入写入extract_list.txt再执行bun_extract_file.exe extract-files ... extract_list.txt提取完毕后删除临时清单既规避了命令行参数长度限制又减少了 cmd 调用次数。完整实现见 src/Export/Classes/GGPKData.lua。五、命令三按正则批量提取extract-files --regex当需要按模式批量提取而非逐一罗列时使用--regex开关bun_extract_file extract-files [--regex] GGPK_OR_STEAM_DIR OUTPUT_DIR [FILE_PATHS...]如果给定--regex则所有输入行或命令行列表都被视为 Cregex正则表达式其语法大致遵循 ECMAScript 标准。官方给出的正则提取示例.\bun_extract_file.exe extract-files --regex C:\Program Files (x86)\Grinding Gear Games\Path of Exile\Content.ggpk . ^Data/\w\.dat$5.1 正则含义逐段拆解以上例为模板拆解其正则^Data/\w\.dat$片段匹配内容^锚定路径开头保证匹配从Data/起始Data/字面量目录前缀\w一个或多个单词字符字母、数字、下划线匹配表名\.转义后的点号匹配文件扩展名分隔符dat$以.dat结尾$锚定路径末尾该表达式会命中所有Data/目录下以.dat结尾的文件。官方注释指出这一条命令即可导出全部英文.dat文件——因为游戏数据表均位于Data/且以.dat为扩展名。5.2 正则提取在导出管线中的实际形态值得注意的是随着游戏版本演进仓库中的.dat已普遍升级为 DAT64 格式.datc64因此提取时的目标模式也相应变化。在 src/Export/Classes/GGPKData.lua 的ExtractFiles方法中可以看到真实的正则提取用法otListMetadata/下的文本资源走useRegextrue通道目标模式被写入清单后经 stdin 传入--regex模式提取这与上文的命令行用法完全等价只是将文件列表从命令行挪到了清单文件中。六、正则语法约定C 与 ECMAScriptREADME 明确声明--regex模式下所有模式按Cregex库解析语义roughly ECMAScript大致遵循 ECMAScript/JavaScript 正则语义。这意味着支持^、$锚点、\w、\d等字符类、量词*?、字符组[...]模式用于匹配整个文件路径完整相对路径而非仅文件名因此建议显式书写^/$锚点避免意外命中每个输入行或命令行条目独立构成一条正则多条正则之间是「或」的关系命中任一条即提取。实用建议提取.dat用^Data/.*\.dat$这类前缀后缀组合只提取英文默认语言数据可配合路径区分若某语言文件带语言目录或后缀可先执行list-files观察真实路径再书写正则这是最稳妥的排查方式。七、仓库中的应用Dat View 导出管线全貌理解命令行本身后还需明白它嵌入在 PathOfBuilding 的哪一环。bun_extract_file.exe在导出流程中的位置如下入口src/Export/Launch.lua 以 Dat View 标题启动 SimpleGraphic 程序开发者模式加载 src/Export/Main.lua数据源管理Main.lua的InitGGPK根据Settings.xml中配置的ggpkPath或datFilePath创建GGPKData实例见 src/Export/Main.lua提取GGPKData构造时调用ExtractFiles内部即通过bun_extract_file.exe extract-files非正则/正则两种通道把Data/*.datc64、Metadata/**/*.txt等文件抽取到工作目录ggpk\下见 src/Export/Classes/GGPKData.lua解析Main.lua中USE_DAT64 true见 src/Export/Main.lua随后按Dat64File读取.datc64数据表按spec.lua中的列定义解析字段见LoadDat64Files与 src/Export/Classes/Dat64File.lua生成 Lua 数据Scripts/目录下的导出脚本如 mods.lua、bases.lua、statdesc.lua 等读取解析后的数据表经模板处理后输出到 src/Data例如../Data/ModExplicit.lua、../Data/Bases/*.lua这些正是运行时构建器使用的数据来源。简言之bun_extract_file.exe是整条导出链的「取数」环节后续的 DAT64 解析与 Lua 生成都以它提取出的原始文件为输入。若你希望手工驱动该流程完全可以直接使用本文的命令行语法把提取结果指向任意目录后再自行解析。八、最佳实践与注意事项路径带空格必须加引号GGPK_OR_STEAM_DIR含空格如默认安装路径Program Files (x86)命令行中务必用英文双引号包裹输出目录若含空格同理。优先用清单而非超长命令行当需要提取成百上千个文件时使用 stdin 清单方式仓库ExtractFilesWithBunFromTable的做法避免 Windows 命令行长度限制。正则务必锚定--regex匹配的是完整归档路径建议始终书写^与$防止前缀/后缀意外命中非目标文件先用list-files file_list.log核对真实路径结构再写正则。注意 DAT64 扩展名当前仓库以USE_DAT64 true读取.datc64数据见 src/Export/Main.lua手工提取时若找不到.dat文件请检查数据表是否以.datc64命名。数据归属与再生成所有导出的 Lua 数据文件头部均标注This file is automatically generated, do not edit!手工修改会被后续导出覆盖如需改动数据语义应修改导出脚本或spec.lua列定义后重新提取。运行环境前提bun_extract_file.exe为 Windows 可执行文件文档中的命令示例均面向 Windows 命令行cmd/PowerShell在 Linux/macOS 下需借助 Wine 或改用其他 GGPK 解析方案。九、小结bun_extract_file.exe虽是一个面向内部导出工具链的命令行小工具但其三条子命令覆盖了「全量盘点、精确提取、正则批量提取」三种典型取数需求是理解 PathOfBuilding 数据管线「GGPK → 原始文件 → DAT64 解析 → Lua 数据」全流程的钥匙。结合 src/Export/ggpk/README.md、src/Export/Classes/GGPKData.lua 与 src/Export/Main.lua 三处文档与源码你可以完整复现这套从游戏客户端抽取数据的工作流为自定义词缀、技能或装备数据奠定基础。【免费下载链接】PathOfBuildingOffline build planner for Path of Exile.项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价