从零到一玩转 RePKG:Wallpaper Engine 资源包解包与 TEX 转图片完整上手教程
【免费下载链接】repkgWallpaper engine PKG extractor/TEX to image converter项目地址: https://gitcode.com/gh_mirrors/re/repkg
如果你曾盯着 Wallpaper Engine 的创意工坊文件目录发呆——那些.pkg包和.tex纹理,明明就在硬盘里,却既不能预览、也不能编辑——那么这篇教程就是为你准备的。RePKG 是一款开源命令行工具,专门用来解包 PKG 资源包、并把 TEX 纹理转换成 PNG 等常见图片格式,它最大的卖点只有一个:一条命令,让只能"看不能用"的素材变得完全可编辑。
那天晚上,我对着一个打不开的文件发了半小时呆
事情是这样的。我在创意工坊里看到一款星空主题的动态壁纸,想把它当背景素材用在自己的视频里。壁纸文件下载到了本地,我满心欢喜地打开安装目录,结果只看到一堆后缀奇怪的家伙:scene.pkg、material.tex、particles.tex……
双击,打不开。右键,没有可用程序。上网搜了一圈,得到的回答基本都是"这是 Wallpaper Engine 的专有格式,普通软件不认识"。
那种感觉,就像收到一个快递,箱子包装精美,但你手边连把剪刀都没有。
后来我找到了 RePKG,事情才彻底变了样。下面我把整个上手过程原原本本讲给你听,保证每一步都亲测可用。
三分钟跑通第一个用例:先看它能给你什么
别急着听原理,我们先动手。拿到工具最快的方式,是克隆仓库然后编译:
git clone https://gitcode.com/gh_mirrors/re/repkg cd repkg dotnet build RePKG.sln -c Release编译成功后,可执行文件位于RePKG/bin/Release/net472/repkg。然后随便找一个 Wallpaper Engine 的 PKG 文件(通常在创意工坊内容的 workshop 目录里),执行:
repkg extract E:\Games\steamapps\workshop\content\123456\scene.pkg注意:不加-o参数时,输出会落在当前目录下的output文件夹。命令跑完,你会看到类似这样的输出:
### Extracting package: ...\scene.pkg * Extracting: particles/star.png * Extracting: textures/star.tex * Reading: textures/star.tex ... Done打开output目录:PKG 里的文件全部按原始路径躺好了,而且——注意这一点——所有 TEX 纹理已经被自动转成了 PNG,旁边还多了一个.tex-json文件,里面记录着这张纹理的格式、尺寸、压缩方式等全部元信息。
就这一条命令,从"打不开"到"全都能看",整个过程不到三分钟。
小结:RePKG 的默认行为是"解包 + 自动转图片",所以你什么都不用配置,第一跑就能拿到成品。
招式一:只想解包、不想转图?用 --no-tex-convert
自动转图很方便,但有些场景你恰恰不需要它。比如你只是想把 PKG 里的原始素材原封不动拷出来,交给其他工具处理;又比如某些 TEX 文件本身就不含图片数据,转换只是浪费时间。
这时候加上--no-tex-convert即可:
repkg extract --no-tex-convert scene.pkg -o ./raw它会跳过所有图片转换步骤,只把包内的文件按原始字节提取出来。它和"默认模式"的区别可以这样记:默认模式帮你把素材"翻译"成人话,--no-tex-convert则是把原文手抄一份给你。
招式二:只要某几类文件?用 -e 和 -i 做筛选
一个 PKG 里往往混着图片、模型、音频、配置文件。多数时候你只关心其中一类,比如只想要贴图素材。这时候-e(onlyexts)就派上用场了,多个扩展名用逗号分隔:
repkg extract -e "png,tex" scene.pkg -o ./textures_only反过来,如果你只是不想要某几类文件,用-i(ignoreexts)把它们排除掉:
repkg extract -i "mp3,ogg" scene.pkg -o ./no_audio这两个参数可以当作一对"筛子"来理解:-e是只留指定类别,-i是只扔指定类别。它们不能同时使用,二选一。
招式三:一整个目录的 PKG 要批量处理?加 -r
如果你收藏了大量壁纸,一个个处理显然不现实。把路径换成文件夹,RePKG 会扫描其中所有 PKG:
repkg extract -r ./workshop_content -o ./all_projects-r(recursive)表示连子目录一起搜。不加-r时,它只会处理指定目录下"每个子文件夹"里的 PKG,而不会深入嵌套层级。批量模式下,每个包默认会输出到以包名为名字的子文件夹里,避免互相覆盖。
这里有个小细节:提取整个目录时,输出结构会比单文件模式更"讲究"——它尽量按原始目录关系摆放,方便你之后对照管理。
招式四:把 PKG 还原成可导入的壁纸工程?用 -c 和 -n
Wallpaper Engine 的每个作品,除了 PKG 本体,旁边通常还躺着project.json(工程配置)和preview.jpg(预览图)。只提取 PKG 会丢掉这两样,导致工程"不完整"。
-c(copyproject)会把它们一起复制到输出目录:
repkg extract -c ./workshop_content -o ./projects配合-n(usename)效果更好:默认情况下输出文件夹以作品的数字 ID 命名,加-n后改用project.json里的标题命名,一眼就能认出是哪个壁纸:
repkg extract -c -n ./workshop_content -o ./projects小结:
-c负责补齐工程文件,-n负责让文件夹名字"说人话"。想要完整还原一个可用的壁纸项目,这两个参数是最佳搭档。
招式五:TEX 文件散落一地?用 -t 直接转换整个文件夹
有些情况下你手里的素材不是 PKG,而是一堆散装的.tex文件(比如从旧项目里翻出来的)。这时用-t(tex)模式,把整个目录的 TEX 一次性转成图片:
repkg extract -t -s ./my_tex_files -o ./png_output-s(singledir)表示"把所有结果平铺进同一个目录",不打散成多级子文件夹,适合后续统一处理。如果你想保留子目录结构,去掉-s即可。
顺带一提:-s在提取 PKG 时同样适用——把包内文件的目录层级抹平,全部堆到输出根目录,适合只想快速捞出一批素材的场景。
招式六:想摸清资源包的家底?用 info 命令
extract负责动手,info负责摸底。想知道一个 PKG 里到底装了什么、每个文件多大,执行:
repkg info scene.pkg -e-e(printentries)会列出包内每一个文件的路径和字节大小。文件多了以后,用排序让它们变得井井有条:
repkg info scene.pkg -e -s -b size-s开启排序,-b指定排序依据,可选name、extension、size三种。
更妙的是,info还能直接读取 PKG 旁边的project.json元数据。比如你有一堆壁纸,想筛选出标题含"星空"的作品:
repkg info ./workshop_content -p "title,preview" --title-filter 星空-p指定要打印的字段(*表示全部),--title-filter按标题关键词过滤。这招在整理壁纸收藏时特别好用,相当于给你的素材库加了一个命令行搜索。
小结:
info是"只读不写"的侦察兵,extract是"动手干活"的施工队,两者配合,先看清再动手。
避坑指南:四个新手必踩的坑,我替你踩过了
坑一:输出目录没变,文件去哪了?忘了加-o时,结果默认写到当前目录下的output。如果你在别的目录执行命令,翻半天找不到文件,先检查一下命令行所在位置。
坑二:重复提取时提示 "Skipping, already exists"RePKG 默认不覆盖已有文件。想强制重来,加--overwrite:
repkg extract scene.pkg -o ./output --overwrite坑三:报 "Input file not found"路径写错是最大嫌疑。Windows 下路径里的反斜杠最好用引号包起来,避免被命令行误解析:
repkg extract "E:\Games\steamapps\workshop\content\123\scene.pkg"坑四:报 "Unknown magic" 或读取失败PKG 文件的文件头有一段标识字符串(魔数),TEX 文件也要求以TEXV0005、TEXI0001开头。如果文件损坏、被截断,或者根本不是 Wallpaper Engine 的资源文件,就会在这里报错。解决办法是确认文件来源,重新下载完整文件。另外,工具对损坏文件的容错是"跳过并继续",不会因为一个坏文件中断整批任务,这一点在批量处理时很贴心。
一个完整实战:从素材到成品,走通整条流水线
把前面的招式串起来,我们用一条完整流水线,把手上一堆壁纸变成"能直接用的素材库"。
第一步:建好工作区
input/ ← 放原始 PKG extracted/ ← 解包后的文件 converted/ ← 转换后的图片 reports/ ← 信息报告第二步:批量解包 + 补全工程文件
repkg extract -c -r ./input -o ./extracted这一步把每个 PKG 解成独立文件夹,并把project.json、preview.jpg一起带出来,得到一个结构完整的壁纸工程集合。
第三步:只挑图片素材,平铺到一处
repkg extract -e "tex,png" -r ./extracted -o ./converted把纹理和图片从各个工程里抽出来,平铺到converted,得到一个统一素材池。因为 extract 默认会自动把 TEX 转成 PNG,这里得到的图片全部可以直接预览、拖进 PS 或剪辑软件。
第四步:生成资源清单
repkg info -r ./input -e -s -b size > ./reports/inventory.txt把所有包的内容、大小按从大到小排好,输出成清单文件,方便日后检索和清理。
走完这四步,你手里就从"一堆打不开的二进制文件"变成了一套"结构清晰、图片可编辑、清单可检索"的本地素材库。整个过程只需要四条命令,这也是 RePKG 最打动我的地方——它把一件听起来很复杂的事,压缩成了几个可以组合的积木。
它背后到底做了什么?用生活化的方式理解
你不需要懂二进制也能理解 RePKG 的原理,我打个比方。
PKG 就像一件压缩行李。壁纸工程里的所有文件——图片、模型、音频、配置——被打包塞进一个箱子(PKG),箱子前面贴了一张清单,写着一共有几件行李、每件叫什么、在箱子里的什么位置。RePKG 做的第一件事,就是读这张清单,然后按图索骥把每件行李完好无损地取出来。
TEX 就像一本加密画册。游戏纹理为了省空间,通常用 DXT1、DXT3、DXT5 这类压缩算法存储,像素不是一个个"画"上去的,而是经过特殊编码的。RePKG 内置了对应的"解码器",能把这些压缩数据还原成 RGB 像素,再输出成 PNG。它支持的格式包括 RGBA8888、DXT1/3/5、RG88、R8 等——DXT 系列是游戏贴图的常客,这也是它处理游戏素材特别顺手的原因。
魔数就像行李上的标签。每个 PKG 文件头都有一段标识字符串,TEX 文件也有(TEXV0005/TEXI0001)。RePKG 靠这些"标签"确认文件身份,标签对不上就报错——这就是前面坑四里 "Unknown magic" 错误的由来。顺便说一句,文件在读取时还有一道安全护栏:超过 100 个图像容器、超过 32 层 mipmap 或超过 250MB 的单层数据都会被拒收,防止恶意文件搞垮你的电脑。
理解了这三件事,RePKG 在你眼里就不再是黑盒,而是一个"读清单取行李 + 解画册编码"的小能手。
想继续深入?这几个方向值得一看
到这里,你已经能应付绝大多数日常场景了。如果还想更进一步,可以从源码入手——这个项目本身就是一份很好的 C# 学习材料,模块划分非常清晰:
- RePKG.Core:数据模型与接口定义,包括 PKG 包结构、TEX 纹理模型、各类压缩格式的枚举定义,是理解格式的起点
- RePKG.Application:具体实现,包括包读取器、TEX 读取器、DXT 压缩/解压逻辑、图片转换器,逆向工程的精华都在这里
- RePKG:命令行入口,
extract与info两个命令的参数定义与处理逻辑 - RePKG.Tests:测试项目,覆盖了 TEX 解压、写入等核心环节,读测试代码是快速理解行为的好办法
想了解每个命令的全部参数,运行repkg help extract或repkg help info;程序还支持repkg interactive进入交互模式,在控制台里逐条敲命令。
最后说句掏心窝的话:RePKG 是社区对 Wallpaper Engine 文件格式逆向工程的成果,作者在 README 里明说"PKG 和 TEX 格式是我自己逆向出来的",也欢迎大家反馈问题。开源工具的生命力在于使用者——如果你在用的过程中发现了 bug、想到了新功能,或者单纯想给作者点个赞,都可以参与到项目中来。不过切记:解包提取的素材请只用于合法用途,尊重原创作者的版权,好生态需要大家一起维护。
现在,轮到你了。找个你心仪的壁纸,跑起第一条命令吧。
【免费下载链接】repkgWallpaper engine PKG extractor/TEX to image converter项目地址: https://gitcode.com/gh_mirrors/re/repkg
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考