y5s1_opsunlock_bundle_dynamic

包本身和部分解包后的文件已上传至我的下载站, 持续更新

infiDownloadSite/R6SFiles

本教程需要您有一定计算机基础

下载站也会对一些赛季限定内容进行归档, 让Siege的历史变得Unbreakable^1!

注意, 为了规避版权风险并减少无谓的破解,我永远不会归档二进制文件.

Operation Breach Out

缘起

*Rainbow Six Siege Operation Shifting Tides

*正在连接到服务器

R2SI2020 Main Menu

*通行证加载

"Welcome to the program. "

*通行证购买, 通行证关闭

通往国际邀请赛之路 58:32

对战已开始

Stadium Match Start

当时听到这段BGM的时候差点没Ban对干员, 实在太ao听了

活动开始几天后发生了什么大家都知道, 后来电脑显卡爆炸没有BGM听我要死了

所以我就开始研究怎么解包力

分析及解包

R6S的exe(PE)也许会有部分逻辑, 但太大了没必要. 而且通过观察黑盒判断黑盒内部逻辑不挺好玩的吗

R6S使用了Ubi内部的AnvilNext2.0引擎, forge文件还和其它Anvil游戏不太一样(好像FH也这个德性?) 所以材质、模型之类的东西我现在就不尝试了. (也许高考完会试试)

那剩下的只有CGI和声音了.

CGI

Ubi没有把声音打在bik里, 要么准备解pck声音包要么就享受无声世界罢.

文件信息

Situation m21 Intro

R2SI2020 CGI

Bik Info

只要你曾经看过拆迁的文件就会发现所有CGI其实都装在RAD Video Tools打包的.bik视频文件里, 文件在拆迁目录里的videos文件夹里. 文件没有加密, 具体编码封装工具据RAD报告称是Bink 2. 这样的bik文件去RAD官网下一套工具就能打开. Outbreak TTS时我就是靠这个工具提前12小时看到了不同任务的CG.

RAD Main Menu

工具

  • RAD Video Tools 由RAD Game Tools开发的专有视频处理工具, 可处理Bink及Smack格式视频 下载地址: Bink Downloads

使用RAD Video Tools解包

RAD Video Tools用来解包其实相当简单, 一般来说打开Tools后选中想解的CG点”Convert to……”按钮, 选择输出格式就好了. 视频只能输出avi, 编码选未压缩. 不过未压缩会相当大, 如果要分享最好输出exe, 选项在大小和源文件几乎一致. (我猜是把一个player和bik打一起了)

RAD Convert Menu

RAD Convert Select Codec

RAD Converting

RAD Converted

RAD Advanced Play Menu

什么, 你问其它avi编码器? 醒醒, Modern的Bink 2 SDK是商业用而且要钱的……

“那其它编码器不能用🐎?”

在, 看看关于? 上世纪的编码器您敢用? 即便用了输出也会有一堆问题, 是FFmpeg重新编码不香吗? 但是这个我就不赘述了.

RAD Grandpa Codec

不过R2SI 2020的Intro CGI是个例外, 即便输出raw avi也会出现诡异的时间轴和采样问题. 但输出图片没有问题……

Weird Ouput

鬼知道未来还会不会出现这种问题, 而且方便传播的视频数据谁不爱呢? 因此我认为需要一个备用方案, 所以又该FFmpeg出场了.

让RAD VT输出图片并使用FFmpeg将图片打包为视频

(我实在没有空间和时间再搞一次R2SI 2020的CGI了, 找了个Y5干员bundle解锁CGI权当示例. 反正操作过程一样的

首先通过RAD VT查看视频源帧率(File Info), 要是和整数很接近的小数的话四舍五入到整数. 设置RAD VT的输出为png, 选好输出目录与输出名字. 文件将自动按帧输出, 并在文件名最后自动加上帧数号, 帧数号含前缀0.

RAD Pic Output List

假定你已经配置好了FFmpeg, 可以使用终端/命令行调用. Win下推荐使用静态链接版. 我们只需要ffmpeg/ffmpeg.exe

打开终端/命令行, 执行以下命令:

1
2

(ffmpeg程序路径) -framerate (源文件帧率) -i (图片位置)/(输出文件名)%(最大帧数位数)d.png -c:v libx264 -preset veryslow -crf 17 -tune film -r (源文件帧率) (输出路径)/(输出文件名, 含扩展名)

-framerate指定了输入文件被看待的帧率, -i指定了输入文件, -c:v指定了输出视频的编码器, -crf指定了输出质量, -r指定了输出文件的帧率.

文件名中的通配符与C/C++中scanf函数的参数一致.

如有Intel/Nvidia/AMD的可编码视频的GPU, 可将编码器换为h264_qsv/h264_nvenc/h264_amf, 相应地输出文件质量会有所下降.

-preset 为预设, 赶时间用veryfast/fast, 要质量slower/veryslow. 越快输出文件大小越大质量越差, 反之亦然. 需要其它预设自行查阅FFmpeg手册.

-crf 取值0-51, 17/18为视觉无损压缩. 如果希望降低输出大小可适当增加, 当然质量会下降.

-tune 可针对场景调节编码, 优化图像质量. 由于拆迁所有CGI全为写实渲染, 建议选择film.

默认使用目前最流行的H.264编码, 需要H.265将上述编码器名内264换为265即可. 其它编码如VP9, AV1请自行摸索. 不是所有编码器都支持以上微调!

建议输出mp4/flv/mkv, 方便后期添加声音.

根据实际情况替换括号(包括括号本身)的内容.

以我举的样例为例, 命令为:

1
2

./ffmpeg.exe -framerate 30 -i ./tutor/y5s1_opsunlock_bundle_dynamic%3d.png -c:v libx264 -crf 17 -r 30 ./y5s1_opsunlock_bundle_dynamic.mp4

这里是运行结果:

FFmpeg Encoding

FFmpeg Done

只要不出错不关闭, 成品就会出现在你指定的位置.

下面便是是成品. 注意, 为了能塞进CDN, 我把成品转成gif并降了分辨率和帧率.

y5s1_opsunlock_bundle_dynamic

如要添加音轨, 再在第一个-i后添加-i并输入音频, 对音频使用copy编码就行了. 其它高级玩法自行查阅FFmpeg手册.

声音

拆迁的声音使用了Audiokinect Wwise套件, 并被打包在根目录下的sounddata目录的子目录中(PC上子目录名为pc), 扩展名为.pck

文件信息

.pck文件有多种命名方式:

  • sound_sfx 存储各种音效, 大多枪声/物件声.
  • sound_sfx_bootstrap 存储赛季/活动音乐(主题曲)、地图音乐与部分UI/氛围音效.
  • sound_sfx_playgo 存储情境、情境/干员CGI音乐与部分UI/氛围音效
  • sound_sfx_maps 存储地图环境音与地图内物件声音.
  • sound_sfx_events 存储活动所使用的特殊音效.
  • sound_sfx_cgi 存储CGI使用的音乐.
  • sound_(语言缩写) 存储对应语言的语音.
  • 及以上格式的组合, 等.

这里是Y5S1.0文件列表示例:

Y5S1.0 Sounddata

将.pck拆开后会发现子文件有四种扩展名. 这里给出对应编码和主要存储内容:

  • .wwise 为Wwise Vorbis RIFF编码的有损声音文件, 几乎什么都存储(例如赛季主题曲, 地图主题音乐, 菜单BGM、按钮音效)
  • .lwav 为Wwise IMA ADPCM编码的无损声音文件, 存储部分地图/物件音效
  • .at3 为Wwise PCM编码的无损声音文件, 寥寥无几
  • .pnk 为包含文件内部名称及部分声音子文件的包 禁止套娃

在Y4的某次更新中.pnk文件存储声音内部名称的方式有所改变, 使用现有工具/脚本解当前版本游戏的包对应声音文件名称将会变为相应文件在原包中的16位offset地址!

工具

以下内容较为硬盒, 不建议普通玩家轻易尝试. 而且由于我时间不足, 以下教程仅为大略, 若有无法复现的请认真阅读相应工具的帮助文档, 进行Debug, 并前往相应原来源论坛求助. 如果未来有时间, 我也会对下述内容进行更友好的完善.

Wwise在游戏工业界已经使用多年, 即便官方从未支持解包, 民间工具也已相当完善. 这里列举我所使用的工具.

下述工具均已上传至我的下载站. infiDownloadSite/R6SFiles/Tools

手动工具
  • QuickBMS 通用文件处理引擎, 使用特定脚本执行动作. 由Luigi Auriemma开发, 开源, 协议未知. 主页: Luigi Auriemma QuickBMS
  • ww2ogg Wwise Vorbis RIFF/RIFX编码声音文件转ogg Vorbis声音文件工具, 用于转换.wwise文件. 由hcs(Adam Gashlin)开发, 开源, 使用BSD Clause-3协议. GitHub仓库: hcs64/ww2ogg
  • wwise_ima_adpcm Wwise IMA ADPCM编码声音文件与PCM声音文件互转工具, 用于转换.lwav文件. 由Zwagoth开发, 未找到原始下载源.
  • revorb ogg Vorbis音频granule_position修复工具, 用于修复ww2ogg输出. 由Yirkha(Jiri Hruska)开发, 开源, 使用MIT协议. 原发布贴: Can’t play vorbis 源代码: revorb.cpp
  • func_getTYPE.bms 使用启发式算法确定文件类型的QBMS脚本, 是多个QBMS脚本的依赖, 作者为XeNTaX论坛的AlphaTwentyThree.
  • pck_AKPK_extractor.bms 用于解包.pck文件的QBMS脚本, 作者同为XeNTaX论坛的AlphaTwentyThree.
  • bnk_extractor.bms 用于解包.bnk文件的QBMS脚本, 作者依然是XeNTaX论坛的AlphaTwentyThree.
  • wwise_pcm_decoder.bms Wwise PCM编码声音文件转PCM声音文件QBMS脚本, 用于转换.at3文件. 作者未知.
自动工具

One tool to Rule’em all

  • Tom Clancy’s Rainbow Six Siege Sound Extractor R6S声音文件解包工具, 作者为XeNTaX论坛的FatalBulletHit. 开源, 协议未知. 本质为Windows CMD脚本与Powershell脚本, 将上述手动工具解包过程自动化. 原发布贴: Tom Clancy’s Rainbow Six Siege Sound Extractor
使用手动工具解包

大多数工具按照相应–help和document进行操作即可.

使用自动工具解包

从源站下载bat执行就完了(

有以下几个坑:

  • Powershell版本不应低于Powershell 4
  • bat脚本其实只是核心Powershell脚本的Bootstrapper, 建议实际使用时直接从Powershell启动ps1脚本, 否则容易出现像是解不出来、解出AudioKinect文件不转换甚至都解好转换完毕了还能删歪来的迷惑行为.
  • 工具默认从注册表读取Uplay版本的安装地址. 如果你用的是Steam / Origin / 其它平台(包括破解版 / 备份), 记得修改脚本中的变量. 注意符号转义行为!
  • 脚本默认使用Powershell的Test-Connection函数对www.google.com测试网络连通性, 不通还会罢工, 而且在国内即便开了小飞机也有可能出现奇妙的问题. 建议全文搜索, 将 www.google.com 替换成国内可ping地址. 我个人用的 www.miui.com , 挺稳. 当然要是网络没法下载相应手动工具那当然也跑不了.
  • 建议开-Debug开关, 时刻准备好debug.
  • 只要你在工具内选择解相应格式的包, 所有对应格式的包都会被解包转换. 对于pck原包来说, 其实工具只是识别并解”游戏文件夹/sounddata/pc”内的所有pck包文件. 如果您只想解某一特定包, 可以将不想要的文件剪切走; 或者干脆新建个文件结构一致的”假”文件夹, 把想解的包贴进去, 再把假游戏文件夹喂给脚本就行了.
  • 原文件内小文件众多, IOPS压力会很大, 输出也大的离谱. 建议准备好声音文件大小两倍左右的空间, 放在SSD上跑. 个人在eMMC USB盘上解了15个小时, 人都等傻了.

Happy Hacking!


评论