今天刷到一条技术圈的消息,挺有意思。那个专门让Windows游戏能在Linux上跑的翻译层VKD3D-Proton,它的核心开发者最近被《极限竞速:地平线6》搞得很头疼。这位老哥在提交代码补丁的时候没忍住,直接来了句:"This game is extremely broken"——这游戏极其破碎。

事情是这样的。我在做PC版性能分析的时候,这游戏在Windows上跑得挺顺,各种配置都能玩,也没遇到什么bug。但Linux玩家那边完全是另一幅景象,问题一堆。好在VKD3D-Proton的开发者Hans-Kristian Arntzen可能找到了根源。

打开网易新闻 查看精彩图片

先给不太懂的朋友解释一下VKD3D-Proton是干嘛的。你可以把它想象成一个翻译官——Windows游戏说的是Direct3D 12,Linux系统听不懂,这个软件就把它翻译成Vulkan,这样游戏就能在Linux上跑了。GamingOnLinux最先发现了Arntzen提交的一批新补丁,都是针对《地平线6》的兼容性修复。

但比代码更有趣的是开发者的吐槽。Arntzen在提交说明里写得很直白,说这游戏"极其破碎"。具体技术细节对普通玩家来说可能像天书,但有一条我看得懂:游戏存在"use-before-alloc"的bug,也就是"先使用后分配"——程序在把资源提交给GPU之后才开始分配,还在GPU运行的时候往描述符堆里写指针。

这啥概念呢?打个比方,Direct3D 12的世界里,你得先把房间收拾好、东西摆好,再告诉GPU"可以进来了"。你要是边收拾边喊人进来,或者东西还没摆好就让人动手,那不乱套才怪。GPU可能会要一个根本不存在的数据,或者直接崩溃。

有意思的是,这些问题很多跟AMD RDNA 2及更新显卡的代码有关,但RTX显卡也没逃掉。Nvidia已经表态了,说会在"即将到来的驱动更新"里修复。所以两边都有锅,不只是翻译层的适配问题。

我去ProtonDB上瞄了一眼,Linux玩家确实怨声载道。但有个现象挺反常:Steam Deck用户的评价大多还不错。这很重要,因为Steam Deck也是靠Proton跑Windows游戏的。如果Xbox Game Studios完全没打算让这游戏在翻译层上运行,那它根本没必要跟Valve合作搞Steam Deck验证。

所以情况有点微妙。官方是认证过Steam Deck的,说明至少在一定程度上支持这种运行方式。但实际体验差距这么大,Deck用户说好、桌面Linux用户叫苦,可能是硬件差异、Proton版本、或者具体配置不同导致的。

Arntzen的补丁还在等待合并到VKD3D-Proton主线。对Linux玩家来说,这至少是个盼头——有人正在从翻译层这边想办法。但核心问题还是游戏本身的代码质量,翻译层开发者再厉害,也只能是打补丁,没法重写游戏。

这件事也让我想到一个老问题:PC游戏的"PC"到底包不包括Linux?严格来说,官方只承诺了Windows版本能玩。但Steam Deck验证的存在,又让人觉得Linux至少是个"半官方"平台。现在这种承诺和体验之间的落差,最难受的还是玩家。

至于Windows玩家,目前看来影响倒不大。我测试的时候没遇到这些底层问题,游戏跑得挺稳。但如果你是在Linux上玩,或者打算用Steam Deck跑,可能得等几轮更新——不管是Nvidia的驱动,还是VKD3D-Proton的新版本。

最后说句实在的:翻译层开发者能这么直白地吐槽一款3A大作"极其破碎",在开源圈子里也不算多见。通常大家都会客气一点,说"存在一些兼容性挑战"之类的。这次直接上强度,说明问题可能确实有点离谱。游戏发售初期的技术债务,最后往往还是玩家和社区开发者来还。