有了 Steam Machine,Steam Phone 还会远吗?|硬哲学
![]()
爱范儿关注「明日产品」,硬哲学栏目试图剥离技术和参数的外衣,探求产品设计中人性的本源。
对于硬核 PC 游戏玩家,最大的冒犯不一定是对局结束后的「EZ」,而是在讨论游戏时被提问:
手机能玩吗?
这种深深阻隔在 PC 与手机间的沟壑已经存在了十多年。在欧美国家,游戏市场好歹还有主机的参与,但在主机不怎么流行的国内市场,这种隔阂形成了一条简单的鄙视链:电脑游戏就是比手机游戏强。
但隔阂并不是永固的。
无论是为了逐利的游戏开发商,还是为了让更多人玩到自己作品的独立开发者,其实都期望让游戏拓展到更多的平台,以接触到更多的玩家。
![]()
▲《动物井》(Animal Well)
这其中也包括目前 PC 上最大的游戏销售平台 Steam,以及它背后的 Valve。
实际上,Valve 的野心远不止于此。上个月刚刚发布的 Steam Machine 三件套虽然仍然以我们熟悉的「主机」形态呈现,但在它的背后,Valve 真正希望的,是让你的手机也能玩上 PC 3A。
![]()
解放 Windows 的牢笼
和 Steam Deck 一样,Steam Machine 的产品形态虽然是主机,但内部运行的其实是正儿八经的 PC 硬件,与一台 Windows 电脑最主要的区别就是它的系统——基于 Arch Linux 的 SteamOS。
![]()
▲ SteamOS 3 on Arch Linux
然而 Windows 几十年积攒下来的地位也不是轻易能够动摇的,用 Linux 玩游戏的最大挑战就是游戏本身不适配。
为了解决这个问题,Valve 很早就做过努力——鼓励开发商在为 Windows 平台开发之余,再单独开发 Linux 版本。然而事实证明,期待游戏开发商为少数用户平台主动做适配,无异于期待广州下雪。
![]()
▲ 图|How-to Geek
为此,Valve 在给 Steam Deck 开发 Steam OS 时,虽然依旧坚持 Linux 道路,但采取了一种截然不同的思路:
既然开发商不主动适配,那我就开发一套足够好的兼容层,只要游戏体验不打折扣,玩家才不会在乎游戏是在 Windows 还是 Linux 上运行的。
这个「能够让 Linux 玩游戏体验看齐 Windows」的兼容层,就是 Valve 自家开发的 Proton:通过以几乎无损的方式将 Windows 游戏需要的 API「翻译」成 Linux 语言,从而让 Steam 上面已有的游戏可以在 Steam Deck 上运行。
![]()
▲ 图|Reddit
但 Valve 的计划并不止步于 Steam Deck 和 Linux。本次跟随 Steam Machine 一同发布的 Steam Frame 头显,就是另一次变革的伏笔。
虽然 Steam Frame 的主要功能是作为一个串流式的 VR 头显,但 Valve 真正在测试的,其实是它本地运行游戏的能力。
![]()
▲ 图|CNET
和上个月我们看到的 Galaxy VR 头显不同,Valve 没有选择头显常用的骁龙 AR 处理器,而是直接上了一块骁龙 8 Gen 3 ——也就是小米 14 那年使用的处理器——让 Steam Frame 不仅能串流,也能独立用 SteamOS 运行 Windows 游戏。
换句话说:从 Steam Frame 开始,Valve 不仅打通了游戏资源在 Windows 和 Linux 之间的隔阂,更是打通了 x86 平台与 ARM 之间的道路,让 ARM 设备基于 Linux 无缝跑 PC 游戏真正成为了可能。
从 x86 原生到 ARM 原生
能够让 Steam Frame 依靠骁龙 8 Gen 3 跑动 PC 游戏的,自然也是一套兼容层技术,只不过没有 Proton 那么出名,它的名字叫做 FEX。
![]()
▲ 图|GitHub
为了让 Steam 资源库中那些原本为 x86 平台 Windows 编写的游戏本地运行在 ARM 平台的 SteamOS(Linux)上,需要 Proton 和 FEX 一起发力——这也正是 Steam Frame 在做的。
![]()
这个过程可以简化理解为:
- FEX 首先工作,在 ARM 处理器上搭建一个 x86 的指令环境,从而让 SteamOS 正常启动
- 进入 SteamOS 之后,再用 Proton 将 Windows 游戏翻译成 Linux 游戏,最终打开游戏并正常游玩
由于 Linux 主要使用的图形 API 是 OpenGL 和 Vulkan,而几乎所有为 Windows 开发的游戏都在使用微软的 DirectX 图形 API,因此 Proton 的主要工作就是把游戏中基于 DirectX 的绘制申请翻译成 Vulkan,再传输给 CPU 和 GPU 以生成画面。
![]()
▲《巫师 3》(Witcher 3)
其实类似的「翻译工具」有很多,比如 Proton 所基于的 Wine 也可以做到。但真正让 SteamDeck 作为一款低功耗掌机能够运行原生 Windows 游戏,依靠的不仅是翻译,更是高效的翻译。
而 Proton 能够做到高效翻译 DirectX 和 Vulkan,除了依靠原本 Wine 中既有的 DXVK 之外,还离不开两个由 Valve 主导开发的新标准:VKD3D-Proton,以及 Ntsync。
其中,VKD3D-Proton 的主要作用是将最新的 Direct3D 12 图形 API 翻译成 Vulkan,相当于让 SteamOS 能够运行最近几年新开发的大作,同时还能在 Linux 环境下实现光追、Reflex 和 FSR4 之类的支持,一举多得。
![]()
▲ 比如依靠 DX12,Steam Deck 现在支持 Nvidia Reflex 低延迟技术了
而 Ntsync 则堪称是 Linux 玩游戏的杀手锏级别技术,这是一个 Linux 的底层内核驱动,可以以近乎无损的方式实现 Windows NT 同步语义的原生理解——
简单来说,Ntsync 让 Linux 模拟 Windows 环境时候的 CPU 损耗降到了最低,对于那些吃 CPU 的游戏场景(比如密集的人群和植被)提升巨大。
![]()
▲《赛博朋克 2077》(Cyberpunk 2077)V 公寓楼下就非常吃 CPU
这样一来,SteamOS 借助 DXVK 翻译旧 API、借助 VKD3D-Proton 高效翻译新 API、借助 Ntsync 将 CPU 损耗降至最低,最终实现了游戏开发者无需主动适配,也能让 SteamDeck 原生跑动 Windows 游戏。
但 SteamDeck 使用的仍然是个桌面级 x86 处理器,但 Steam Frame 使用的却是 ARM 架构的移动端处理器,如何让 Windows 游戏原生在 ARM 环境下运行呢?
![]()
▲ Valve 展示的透明版 Steam Frame 原型机|PC Gamer
答案依然是模拟。但仅仅在 Proton 中将 Windows 语言翻译成 Linux 还不够,还需要借助另一个工具将 x86 指令翻译成 ARM 指令,而这个工具就是最近崭露头角的 FEX。
由于 FEX-Emu 翻译的过程更为复杂,其中还涉及到针对 CISC 和 RSIC 指令集的转换、内存顺序优化和库转译等等,因此可以简单理解为 FEX 通过即时编译(JIT)将 x86 指令转换为 ARM 指令,并且转译过程自动化程度更高,适配性和速度相比其他翻译方案都要高效许多。
![]()
▲ 借助 FEX 在瑞莎星睿 O6(ARM 平台)上运行的《战神 4》|Interfacing Linux
此外,在 FEX 与 Proton 联手运行的时候,FEX 仅仅翻译游戏本身的代码,一旦游戏调用图形 API(如 Vulkan 或 DX12),执行就会跳转到原生的 ARM 代码中。
这就意味着 FEX 模拟 x86 带来的性能损耗仅限于 CPU 部分游戏逻辑,GPU 图形渲染部分几乎是全速运行的,最终让 Steam Frame 仅靠一颗骁龙 8 Gen 3 带动 Windows 游戏成为了可能。
![]()
▲ 图|Roads to VR
有趣的是,Steam Frame 不仅能兼容 Steam 上的 Windows 游戏,同时还兼容一些 Android app——都是在基于 Arch Linux 的 SteamOS 里面实现的。用来运行 Android 软件的,实际上也是个类似的兼容层。
这背后的精妙之处在于,尽管 FEX 是一个开源项目,但 Valve 实际上从 2018 年就在默默地为这个项目提供资金和技术支持了。
![]()
▲ 图|FOSS
在 TheVerge 对于 SteamOS 架构师 Pierre-Loup Griffais 的一次专访中,他表示:
Valve 从 2016 年开始就在招募和资助开源开发者,以解决 Windows 游戏在 ARM 上运行的问题。Valve 不希望游戏开发者浪费时间去移植游戏,而是希望通过技术手段,让现有的 PC 游戏库直接兼容未来的硬件架构。
而 FEX 就是 Valve 选中的那个「技术手段」:与其让开发者费尽心思地针对不同平台开发,不如使用一套通用工具,让不同平台都能高效理解 Windows 游戏的代码。某种程度上也可以算作是一种「人因工程」了。
Steam Phone 还会远吗?
同样是在 TheVerge 对 Pierre-Loup Griffais 的专访中,在采访的结尾,编辑 Sean Hollister 对 Pierre-Loup Griffais 提出了一个有趣的问题:
未来会有运行 SteamOS 的手机吗?
![]()
Pierre-Loup Griffais 的回答则有些模棱两可:
我们确实通过 Steam Link 应用在手机领域做过一些尝试,但我不知道「开发本地内容」或者「为这类设备(手机)开发 SteamOS」是否会成为我们接下来的主要重心。
如果仅从回答来看,Valve 目前对于手机的定位仍然是以串流设备为主,对于开发手机端 SteamOS 甚至原生 Android 内容的兴趣不大。
但正如前面所说:在 Proton 和 FEX-Emu 的加持下,SteamOS 在事实上已经完整具备了在手机硬件上运行并承载 Windows 游戏的一切准备。
实际上,现在也已经出现了一些爱好者折腾出来的给手机刷 SteamOS 的案例,只不过由于缺乏底层支持,往往损耗巨大,用来做演示还行,要是真想跑个游戏看看,就等着带上痛苦面具吧。
![]()
▲ 图|DualShockers
实际上,作为一家成熟的商业公司,Valve 在面对全球超过 5000 亿美元的智能手机市场时,它们内部一定考虑过将 SteamOS 带到手机载体上的事情。只不过这其中的阻力大概率不是成本,也不是技术,而是一个 PC 玩家非常熟悉的家伙——
反作弊(Anti-cheat)。
事实上,不用说尚不存在的 Steam Phone,就拿 SteamDeck 来说,相当一部分不能正常运行的游戏,本质都是因为内嵌反作弊不能在 SteamOS 的 Linux 环境中运行,而非游戏代码无法翻译。
究其原因,目前的主流反作弊工具比如 BattleEye、EAC、Vanguard 等等都需要在 Windows 的核心层(Ring 0)中加载,而 Proton 作为一个「翻译工具」并不负责模拟内核,导致这些反作弊软件判定环境不安全并拒绝启动游戏。
![]()
▲ BattleEye(左)和 EAC(右)|PCGamesN
此外,负责转译 x86 与 ARM 指令的 FEX 工作原理是内存实时编译,这种动态翻译机制在反作弊软件眼里和外挂的逻辑(注入、勾挂、改指令)几乎一模一样,这种影响代码完整性的方式同样会直接触发反作弊软件的报警。
这种同时存在于权限层级不对等(Ring 0 和 Ring 3)、内核环境不受信任、检测机制与转译逻辑的矛盾,除非反作弊厂商主动退让,提供不依赖内核驱动的 Linux/ARM 版本反作弊软件,否则如果仅以目前 Valve 的模拟方案来说,将会是一个无法调和的问题。
![]()
▲ 图|Dexerto
面对这种问题,唯一的解法可能就是 Valve 利用其市场地位,推动反作弊厂商针对 Proton + FEX 环境进行特殊的白名单认证,为 Steam Machine、Steam Frame 以及 Steam Phone 做区别对待。
只不过这种方案仅限于那些愿意配合的厂商,对于坚持强内核保护的游戏(如 Riot 旗下的一大堆作品),这条路依然是走不通的。
但「有困难」并不意味着「不可能」,毕竟 Steam Phone 现在面临的问题,和曾经 SteamDeck 面临的挑战是一模一样的,既然 Valve 能够推动一部分内嵌反作弊的游戏为 SteamDeck 做出优化,那么推动为 Steam Phone 设计新的反作弊也并非不可能。
![]()
▲ 图|CNET
更何况,哪怕 Steam Phone 真的因为无法加载反作弊而错失 99% 的多人在线游戏,Steam 麾下巨大的 Windows 游戏池中依然有无数不依赖网络、不需要反作弊的佳作在等着我们。
而在这个内存越来越贵、硬盘越来越贵、显卡越来越贵,甚至 Windows 本身都越来越贵的时候,Valve 一定会尝试考虑探索 PC 之外的市场。Steam Frame 只是第一步,Steam Phone 本身一定不会很远了。
别的不说,想想未来什么时候能在我的 Steam Phone 上随时随地来一盘《边缘世界》、《VA-11 Hall-A》、《林中之夜》甚至《极乐迪斯科》,那也是很不错的体验了。
![]()
▲ 图|Steam Community
#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。












