兼容层 Proton GE 11-1 发布:游戏视频播放问题重大改进和修复
第三方兼容层:Proton GE 最新版本跨入11系列,Proton GE 11-1 现已推出,本次更新内容非常丰富,包含多项重大修复和改进。其中包含了诸多游戏的视频播放问题,新增了对 DirectX 7 游戏的 D7VK 支持,还修复了《刺客信条 1》《荣誉勋章:联合袭击·战争宝箱》《女神异闻录 5:幻影X》《极品飞车:地下狂飙 2》等游戏问题…

Proton GE 11-1 更新内容(点这里查看原文内容):
Proton 更新:
- 已添加 d7vk(默认未启用)。使用 PROTON_USE_D7VK=1 启用。已通过 Tex Murphy: Overseer 上的 protonfix 启用。
- 已添加 Discord 桥接功能(默认未启用)。使用 PROTON_DISCORD_BRIDGE=1 启用。(proton-cachyos)
- 已添加优化器支持。(默认未启用)。使用 PROTON_USE_OPTISCALER=1 启用。(proton-cachyos)
- 新增了 WineALSA 声道数覆盖选项(默认未启用)。使用 WINEALSA_CHANNELS 进行调整。可选值为扬声器数量,例如
2(禁用空间音频)、4(2 个前置扬声器,2 个后置扬声器)、6(5.1)或8(7.1)。(Vyrolian) - 新增 winealsa 空间混音覆盖选项(默认未启用)。使用 WINEALSA_SPACIAL=1 启用。(Vyrolian)
- 构建过程中新增了 xrandr,以便在 wine-wayland 未设置默认显示器时,无需依赖主机上的 xrandr 即可自动检测默认显示器。这意味着,如果您不小心忘记为 wine-wayland 设置显示器,现在它会显示在 xrandr 找到的默认显示器上,而不是默认显示在最左侧的显示器上。
- 更新《星际公民》补丁
- 为 Task Bar Hero (thaylorz) 添加了补丁
- 添加了用于 VRChat 网络摄像头面部追踪的补丁(LilFishyChan)
- 整个构建基于最新的 Proton 11 前沿版本。
- 基于 Proton 11 的独立 VR 补丁(因此您可以在 Steam 之外,在非 Steam VR 游戏中使用 UMU)
- wine-native rsx3d 库是为老游戏创建的(像 Tex Murphy 这样的游戏不再需要第三方 rsx3d winetricks)。
- 启用 .exe 动态重定位,并且仅重定位已重定位的文件。对于《最终幻想14》,这可以修复地址空间不足的问题,避免某些插件无法应用其钩子,从而导致游戏不稳定。(0x0ade)
视频播放功能重构
问:出了什么问题?
A. 最初,Proton 使用两种不同的后端进行视频播放。第一种通常是 winedmo 转 ffmpeg,第二种通常是 quartz 转 gstreamer。对于大多数游戏,尤其是老游戏,quartz 转 gstreamer 是默认方案。winedmo 是最近才引入的(大概是 Proton 9 或 10,记不清了),作为一种现代化的视频播放解决方案。问题在于 quartz 转 gstreamer 的内部机制比较复杂,转换起来比较麻烦,所以才使用了两种方案。
鉴于 ffmpeg 和 gstreamer 实际上执行相同的操作,并且可以处理相同的编解码器,因此同时使用两者是没有意义的,尤其是在 gstreamer 被拆分成几个不同的库,需要独立构建的情况下(gst-base、gst-good、gst-bad、gst-ugly、gst-orc、gst-libav 等),而且 gstreamer 还存在表面显示问题,例如 X11、Wayland 和 Surfaceless。
问:我是如何“修复”它的?
A. 正如大家所知,GE-Proton 的上一次发布是在三月份。现在已经是六月份了。这中间间隔了四个月,这对于 GE 的发布来说绝对不正常。为什么会这样呢?因为我花了四个月的时间将 Quartz->GStreamer 的路径改为 Quartz->WinedMo->FFmpeg,并且彻底从 Proton 构建中移除了所有 GStreamer 库。
是的,我在这项工作中使用了人工智能。不,很遗憾,它可能无法被提交到上游,因为 CodeWeavers 的政策不接受人工智能生成的代码。你可能会问“你到底是怎么用人工智能的?”——其实和不用人工智能的方式一样,唯一的区别在于,我用人工智能来比较代码逻辑,看看哪些地方出了问题或逻辑错误。那么,它是如何工作的呢?
首先,我进行了基础重构。我彻底从 Wine 中移除了 winegstreamer,并让 AI 代理检查现有代码,尽可能地进行转换,使 quartz 能够使用 winedmo。
接下来,视频重构列表中大约 80% 的游戏都使用了 quartz 路径,并依赖于 protonfix,通过 winedll 覆盖 quartz、lavfilters、amstream、dshow、wmp9、wmp11 等库。这非常棒,因为这意味着我可以获取有效且运行正常的实例的 winedebug 日志。收集到每个游戏的日志后,我移除了 protonfix,创建了一个干净的前缀,然后运行并记录了出错的实例。之后,我将一个正常运行的日志和一个出错的日志输入到 AI 代理中进行对比,以了解在覆盖生效且运行正常的情况下,WINE 的行为与原生出现故障时的行为有何不同。我发现,几乎在所有情况下,经过少量试错后,代理都能迅速识别差异,并修正或实现缺失的本地代码,使视频播放效果如同覆盖设置已生效一样。此外,如果游戏提供了视频文件,我会引导AI代理访问这些文件,以便它能够正确分析文件类型,从而在Wine中实现播放功能。极少数游戏需要“从头开始”修复,需要经过更多次的尝试和失败才能成功修复——例如《暗黑血统:战神版》和《Nukitashi 2》。在此过程中,我还设法移除了一些游戏特有的 hack,并实现了不会破坏其他游戏的解决方案——例如之前为《灵媒》和《合金装备5》修复的音频问题。您还会看到许多视觉小说(VN)游戏也得到了修复,因为许多这类游戏使用相同的引擎,修复其中一两个游戏就能解决其他使用相同引擎的游戏的问题。事实上,我们甚至发现 Steam 运行时 4 缺少 32 位视频播放所需的一些库,我们已向上游报告并修复了该错误(因此,您会看到 liblzma 和 xz 已添加到构建中)。
以下是新旧 Quartz 性能的详细对比:
- 当前使用 Quartz/DirectShow 的游戏的Quartz 流程:
- 游戏调用 IGraphBuilder::RenderFile() 或手动构建图形。
- quartz/filesource.c 文件中定义了存储介质:
- 如有扩展/注册表项,请提供。
- 对无扩展名的 ASF 文件进行 ASF 标头嗅探,例如 Persona 4 Arena Ultimax。
- 对于 ASF 文件,RenderFile() 现在会尝试:
- 首先是 AsyncReader。
- 如果异步渲染失败,则回退到 WMAsfReader。
- FilterGraph2_Render() 会自动渲染图形。
- 在进行通用过滤器映射器枚举之前,Quartz 现在会显式地尝试已知有效的路径:
- MPEG 流 -> MPEG-I 流分离器
- MPEG 视频 -> Wine MPEG 视频解码器
- AC3 音频 -> winedmo AC3 解码器
- WMA 音频 -> 围绕 winedmo WMA 解码器的 DMOWrapperFilter
- 如果以上方法都不适用,则回退到普通的 IFilterMapper2_EnumMatchingFilters()。
- 现在解码主要通过 winedmo(由 FFmpeg 提供支持)进行路由,而不是通过 winegstreamer。
- 音频渲染器现在拒绝压缩音频,只接受 PCM / 浮点 PCM,强制图形先插入解码器。
- DirectSound 缓冲区创建会延迟到流开始时,而不是在连接/滤波器创建时进行。
- 视频输出仍然会进入正常的 Quartz 视频渲染器路径:根据图表构建的内容,输出为 DDraw / VMR 风格的表面。
改版之前,Quartz 更多地依赖于 Wine DirectShow 的默认路径:
- 源过滤器选择主要由扩展/注册表驱动。
- ASF 文件通常直接发送到 WMAsfReader。
- 过滤器插入更多地依赖于通用过滤器映射器枚举。
- 某些压缩音频可能会错误地到达 DSoundRender,导致缓冲区创建失败或部分渲染失败。
- 很多媒体处理仍然依赖于 winegstreamer / GStreamer 的行为。
- 游戏特定变通方法和外部覆盖程序的使用频率更高:lavfilters、quartz、wmp11、dgvoodoo2 等。
实际差异:
新的流程更具确定性:
游戏 -> Quartz 渲染文件
-> 源检测/ASF 嗅探
-> AsyncReader 或 WMAsfReader
-> 明确选择已知的解码器/分离器
-> winedmo/FFmpeg 解码
-> PCM 音频到 DSoundRender
-> 解码后的视频到 Quartz 视频渲染器
此前它更接近于:
游戏 -> Quartz 渲染文件
-> 注册表选定源
-> 通用过滤器映射器搜索
-> Wine/GStreamer/原生覆盖行为
-> 渲染器
因此,当前的设计试图将传统的 DirectShow 游戏保留在 Wine 自己的 Quartz 图形中,同时使用 winedmo/FFmpeg 来处理 Wine 的旧 Quartz 路径处理不佳的媒体格式。
问:目前是否存在已知问题?
A. 部分较老的 WMV 视频偶尔会在播放时出现画面扭曲/像素化,但几秒钟后会自动恢复正常。这种情况在《魔界村:复活》的技能演示视频中最为明显。《WRC 4》的部分开场动画也存在奇怪的画面分割问题。除此之外,大多数游戏应该都能正常运行。
特别是那些在下方“已验证可运行”测试列表中的游戏:
Godfall(神陨)
Akiba’s Trip: Undead & Undressed(秋叶原之旅:初次记忆)
Nukitashi
Nukitashi 2
Ys Origin(伊苏起源)
Darksiders Warmastered Edition
Breath of Fire IV(龙战士4)
Watch Dogs(看门狗)
Dark Souls: Prepare to Die Edition(黑暗之魂:受死版)
Silent Hill 3
Full Metal Daemon Muramasa(装甲恶鬼村正)
Bloodstained: Ritual of the Night
Blops 3
Final Fantasy XIV(最终幻想 XIV)
RE 0(生化危机0)
RE1 Remaster(生化危机1重制版)
RE2 Remake(生化危机2重制版)
RE3 Remake(生化危机3重制版)
RE4 Remake(生化危机4重制版)
RE4(生化危机4)
RE7(生化危机7)
RE8(生化危机8)
Nioh 2(仁王2)
Nioh 3(仁王3)
Ninja Gaiden Sigma
Ultimate Marvel Vs.卡普空 3
魔界村 复活
光环:无限
灵魂能力 VI
帝国时代 II:终极版
帝国时代 III
帝国时代 IV:周年纪念版
大逆转裁判
死亡纪念
鬼泣高清重制版 真人
快打 11
不义联盟 不义
联盟 2
无尽空间 2
奇异世界:蒙奇的奥德赛
奇异世界:阿比逃亡记
神鬼寓言:失落的篇章
东京迷城 EX+
幽灵线:
东京 东京死灵
战争秩序:二战
非公开播出
蓝色协议:星之共鸣
Ryse:罗马之子
人生改造
街头赛车辛迪加
狂野西部:枪手
苍翼默示录:中央
幻象苍翼默示录:刻之幻影 扩展版 救世之树 阿加雷斯特战记 婚姻 阿加雷斯特战记:世代战争 2 阿加雷斯特战记:世代战争 阿加雷斯特战记 Zero莱莎的炼金 工房 3:炼金术士的炼金术士终结与秘密钥匙 DX 莱莎的炼金工房2:失落的传说与秘密妖精 莱莎的炼金工房:常暗女王与秘密藏身处 罗罗娜的炼金工房:亚兰德的炼金术士 DX 玛丽的炼金工房 重制版:萨尔堡的炼金术士 谜题小丑(也应该修复其他 NekoNyan 的视觉小说:千连*班卡、萨诺巴魔女 FHD 版、魔女安息日、星之咖啡馆、德拉库暴动、帕奎特、天使混沌:重启!) Seven:增强版 凯瑟琳经典版 小龙 斯派罗:重燃三部曲 无主之 地3 塞维尔 格兰蒂亚高清版 格兰蒂亚2高清版 天空之剑:光之子圣剑传说3 圣剑传说:圣剑传说: 玛娜 的秘密 圣剑传说:玛娜 的传说 方舟:生存进化 强力战队:格斗之战 女神异闻录3 重装上阵 女神异闻录4 黄金版 女神异闻录4 终极竞技场 女神异闻录5 皇家版 女神异闻录5 强袭者 WRC 4
Nekopara Vol.1(KiriKiri引擎游戏)
Guilty Gear Accent Core Plus R
I Can’t Win Against Those Pretty Girls
Underdog Detective
UberSoldier
The Medium
Liminal Border Part III
YOU and ME and HER: A Love Story
Mojika – Truth Rears Its Ugly Head
Moero Chronicle
Megadimension Neptunia VII
BLUE REFLECTION
Hell Yeah!
Bully: Scholarship Edition
Nine Witches: Family Disruption
Gabriel Knight 3: Blood of the Sacred, Blood of the Damned
ONE PIECE: PIRATE WARRIORS 4
Alternativa
Arcania (Gothic 4)
Arcania: Fall of Setarrif
Legend of Heroes: Trails in the Sky
Legend of Heroes: Trails in the Sky SC
Legend of Heroes: Trails in the Sky the 3rd
Umineko: Golden Fantasia
Tex Murphy: Overseer
经过所有这些工作,我很高兴地宣布,上面列出的所有游戏现在都已具备完整的视频播放功能,无需任何 Wine 插件或 DLL 覆盖。无需 Quartz、DShow、AmStream、LavFilters、Klite、RSX3D、WMP9、WMP11 等插件。之前需要通过这些覆盖文件来实现的所有功能,现在都已直接集成到 Wine 中,供上述游戏使用。之前添加的 ProtonFix 也已移除,因为它们不再需要了。
这些游戏很多都是我原本没有的,为了让它们正常运行,我不得不额外购买——所以我要衷心感谢我的 Patreon/Ko-fi 支持者们,感谢他们每个月都帮助我完成这些事情。当然,Patreon/Ko-fi 的资金用途并不局限于游戏,很多时候也会用于购买 Nobara 的硬件,但这次为了让游戏正常运行,我购买了很多游戏。
如果您玩的游戏出现视频无法播放的情况,请提交 GE-Proton 问题报告。
Protonfixes 更新:
- d7vk protonfix 已添加,供 tex murphy 监督者使用
- d7vk protonfix 已添加,但暂时禁用,不适用于 Gabriel Knight 3(d7vk 在此游戏中存在闪烁问题)
- 修复了 Ground Control 2 (CommandMC) 的字体问题
- 为 Senren * Banka (R1kaB3rn) 添加 protonfix
- 为几款较早的 ID Tech 游戏添加了 protonfixes:荣誉勋章:联合突袭战争宝箱、佣兵:白金版、雷神之锤、巫师2、星球大战绝地武士/绝地武士2、重返德军总部(神奥地区已确认)
- 为《灰色果实》(R1kaB3rn)添加了 protonfix
- 为《极品飞车:地下狂飙2》添加了protonfix(MatthiasDillen)
为《极品飞车:地下狂飙 2》添加了 protonfix(MatthiasDillen) - GOG版Quake II的protonfix已添加(SinnohConfirmed)
- Zero Zone (XargonWan) 添加了 protonfix
- 为 Gray Zone Warfare (ProjectSynchro) 添加了 protonfix
- 为 Persona 5: The Phantom X 添加了 protonfix(NelloKudo)
- MONGI: Star Drive (NelloKudo) 添加了 protonfix
- 为 cxbx-reloaded (BlueInterlude) 添加了 protonfix
- 为《刺客信条1》(CommandMC)添加了质子修复补丁
如果你喜欢这篇文章,请关注并收藏本站 deck.mhhf.com
站长:灵翼MAGICWING - 80后骨灰级玩家兼游戏开发者。抖音 / B站 同名账号,欢迎关注。
