RePKG 实战指南:如何解包 Wallpaper Engine PKG 包并转换 TEX 纹理为图片
【免费下载链接】repkgWallpaper engine PKG extractor/TEX to image converter项目地址: https://gitcode.com/gh_mirrors/re/repkg
RePKG 是一个命令行工具,专门做两件事:解包 Wallpaper Engine 的 .pkg 包,以及把 TEX 纹理转成可看的图片。如果你手上有工坊下载的 .pkg 想拆出内容、想提取纹理做二次创作、或者要批量处理一整个目录的壁纸,看这篇就够了;如果你只是想在游戏里直接播放壁纸,可以跳过。
📦 能力速览
- 解包 .pkg 文件 → 还原包内全部文件(纹理、音频、着色器、配置),保留包内目录结构
- 解码未压缩 TEX 纹理 → PNG 图片,并同步生成 Wallpaper Engine 可直接使用的 .tex-json 元数据
- 解码动态 TEX(sprite sheet 序列)→ 带旋转、裁剪、帧延迟的动图 GIF
- 用 info 命令列出包内条目的路径与大小 → 不写任何文件,纯查看
- 接受目录作为输入 → 批量处理目录下的 .pkg / .tex
🚀 三步跑通第一条命令
RePKG 编译目标是 .NET Framework 4.7.2,Windows 10 自带该运行时可以直接跑;Linux/macOS 需要用 Mono。从源码编译:
git clone https://gitcode.com/gh_mirrors/re/repkg cd repkg dotnet build RePKG.sln -c Release # 产物在 bin/Release/net472/确认程序能正常响应,这条命令会列出全部选项,等于读了一遍手册:
RePKG.exe --help输出里能看到extract和info两个子命令,说明跑对了。
Linux 用户把后面所有示例里的
RePKG.exe换成mono RePKG.exe即可。
现在解一个包。TEX 条目在解包时会自动转成图片:
RePKG.exe extract 路径\to\scene.pkg -o ./out # -o 指定输出目录预期输出以Done结尾,out目录下能看到解出来的文件,就通了。
🛠️ 场景实战
快速查看包内有什么
拿到一个 .pkg 还没把握内容时,先用 info 摸底,不产生任何输出文件。
这条命令列出包内所有条目,按大小排序:
RePKG.exe info scene.pkg -e -s -b size # -e 打印包内条目列表 # -s 排序 # -b size 排序依据:name / extension / size预期结果:
### Package info: scene.pkg Package entries: * 000/bg.tex - 9216000 bytes * 000/scene.png - 183421 bytes进阶:如果 .pkg 旁边有 project.json(工坊目录里通常都有),可以顺带把壁纸的标题、预览等元数据打出来:
RePKG.exe info scene.pkg -p * --title-filter sunset # -p * 打印 project.json 全部字段;--title-filter 只处理标题含 sunset 的包完整解包并自动转换 TEX
最常用的路径:把包内所有文件拿出来,TEX 纹理顺带转成能直接看的图片。
这条命令不加任何过滤,全量解包:
RePKG.exe extract scene.pkg -o ./out输出结构保持包内路径,每个 TEX 条目会同时得到原始文件、转换图片、元数据三份:
out/ └── 000/ ├── bg.tex ├── bg.png └── bg.tex-json注意.tex-json这个文件:它记录了 format、nomip、nonpoweroftwo、clampuvs 等字段,和 Wallpaper Engine 项目里 tex.json 的要求一致。以后要把纹理重新装回项目,缺它不行。
进阶:只想要原始文件、不做转换(比如做格式分析),加一个参数:
RePKG.exe extract scene.pkg -o ./out --no-tex-convert转换的具体逻辑(包括动态纹理逐帧旋转、裁剪的计算)可以看 TEX 转换实现。
按扩展名筛选提取
包里两三百个文件,但你只关心纹理;或者想甩掉音频和着色器这些不需要的部分。
只提取 .tex 和 .png,并拍平到一个目录:
RePKG.exe extract scene.pkg -e tex,png -s -o ./out # -e 白名单:只提取指定扩展名的条目(逗号分隔) # -s 拍平到单一目录,不保留包内路径预期结果:out里直接躺着一堆 .tex/.png 和转换出的图片,没有嵌套子目录。
反过来用黑名单更省事:-i --ignoreexts指定要跳过的扩展名,比如-i shd,txt跳过着色器和文本配置。
批量解包整个工坊目录
Steam 的 workshop content 目录里,每个壁纸一个文件夹,里面有 .pkg 和 project.json。想一次性把每个壁纸都建成完整项目。
递归扫描目录并逐个建项目:
RePKG.exe extract -r -c -n -o ./projects E:\Games\steamapps\workshop\content\123 # -r 递归扫描所有子目录里的 .pkg # -c 把 pkg 同目录下的 project.json 和预览图一并拷进输出 # -n 用 project.json 里的标题命名项目文件夹,而不是数字 ID预期结果:./projects下每个壁纸一个以标题命名的文件夹,内含 project.json、预览图和全部解包资源,可以直接丢进 Wallpaper Editor 打开修改。
进阶:如果批量只想要纹理、全堆一个目录(比如做素材库):
RePKG.exe extract -r -e tex -s -o ./textures E:\Games\steamapps\workshop\content\123PKG 文件的头、条目表、数据块是怎么解析的,见 PKG 解析实现。
单独 TEX 与 TEX 目录转换
手上已经有不在包里的 .tex 文件,要批量变成可看的图。
单个 .tex 可以直接当输入传给 extract:
RePKG.exe extract logo.tex -o ./out这条命令会同时产出logo.png和logo.tex-json。一整个目录用-t模式:
RePKG.exe extract -t -r 某tex目录 -s -o ./out # -t 目录模式:把目录下所有 .tex 转成图片 # -r 递归子目录预期结果:每个 .tex 变成一张图和一份 .tex-json;动态纹理(sprite sheet 序列)会被解码成 GIF,逐帧的旋转角度、裁剪区域和帧延迟都按帧信息还原。
有一个坑要知道:当前版本只解码 RGBA8888、R8、RG88 这类未压缩像素格式以及内嵌的图片。如果纹理是 DXT1/3/5 压缩的,转换会抛Raw mipmap format must be uncompressed。这种文件不用硬转,用--no-tex-convert保留 .tex 原样塞进 Wallpaper Engine 项目即可,无损失。
⚙️ 参数速查
以下参数覆盖了 90% 的使用场景,其余保持默认即可。
| 参数 | 作用 | 何时需要调整 |
|---|---|---|
-o, --output | 输出目录(默认./output) | 每次指定放哪 |
-e, --onlyexts | 白名单,只提取指定扩展名 | 只要纹理/图片时 |
-i, --ignoreexts | 黑名单,跳过指定扩展名 | 要排除音频/着色器/配置时 |
-s, --singledir | 全部文件拍平到单一目录 | 不需要包内目录结构时 |
-r, --recursive | 递归扫描子目录 | 输入是嵌套目录时 |
-c, --copyproject | 拷贝 project.json 与预览图 | 要构建可再编辑的项目时 |
-n, --usename | 用 project.json 标题命名文件夹 | 配合-c,让目录名可读 |
--overwrite | 覆盖已存在的文件 | 重复提取被跳过机制挡住时 |
info命令的参数少一些:-e/--printentries、-s/--sort、-b/--sortby、-p/--projectinfo、--title-filter,用法见上面的场景。
🩺 排错
转换时报 "Raw mipmap format must be uncompressed"原因:纹理使用 DXT1/3/5 压缩,当前版本不解码压缩 mipmap。 解法:用--no-tex-convert保留 .tex 原样,直接放进 Wallpaper Engine 项目使用,无损。
转换时报 "Failed to read texture" / "Failed to write texture"原因:该 TEX 的结构不在已知格式范围内(较新版本或非标文件)。 解法:先用info 包.pkg -e确认包内容,然后把出问题的 TEX 提交给项目维护者。
重复执行 extract,输出目录没变化原因:默认行为是跳过已存在的文件。 解法:加--overwrite。
提示 "Input file not found"原因:路径含空格没加引号,或路径本身写错。 解法:路径用双引号包起来再执行。
Linux 下 RePKG.exe 无法启动原因:可执行文件目标是 .NET Framework 4.7.2,只有 Windows 能直接运行。 解法:安装 Mono 后用mono RePKG.exe ...执行,或者在 Windows 上构建。
RePKG 就是干三件事的工具:PKG 解包、TEX 转换、重建可编辑的 Wallpaper Engine 项目结构,全部一条命令完成。完整参数列表和更多示例见 README.md,想动手改解析逻辑的话,入口在 RePKG.Application/。
【免费下载链接】repkgWallpaper engine PKG extractor/TEX to image converter项目地址: https://gitcode.com/gh_mirrors/re/repkg
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考