Proton和Wine有什么区别?
TOPIC SOURCE
如何优雅地在Ubuntu上使用Steam?
在 Linux 桌面上想要运行 Windows 游戏或软件,往往会听到两个名字:Proton 与 Wine。它们都声称能够把 Windows 的二进制文件搬进 Linux 的世界,却各自走着不同的技术路线和生态路径。
基本概念
- Wine(Wine Is Not an Emulator)本质上是一个兼容层,直接把 Windows API 调用映射到 POSIX 系统调用。它不依赖 Windows 本体,也不需要完整的 Windows 镜像。
- Proton 是 Valve 为 Steam 平台专门打造的分支,它在 Wine 的代码基础上加入了 DXVK、vkd3d、FAudio 等图形和音频翻译层,并配合 Steam 的 DRM 与内容分发机制。
实现差异
- 系统调用映射
Wine 通过实现 Win32、Win64 的用户空间 DLL(如 kernel32.dll、user32.dll),在运行时拦截并转化为 Linux 的系统调用。Proton 采用同样的 DLL,但在图形层面强制使用 Vulkan 后端,几乎所有 DirectX 9/10/11 调用都会被 DXVK 或 vkd3d 劫持。
- 文件系统布局
Wine 默认在用户目录下创建 ~/.wine,模拟完整的 C: 盘符结构。Proton 则在每个 Steam 游戏的 “pfx” 目录里生成独立的前置环境,避免不同游戏之间的 DLL 冲突。
- 启动方式
运行 Wine 程序时,常见的指令是 wine program.exe,可以自行指定前置目录。Proton 则通过 Steam 的 “使用特定 Proton 版本” 选项自动注入,玩家几乎不需要手动操作。
性能与社区支持
| 项目 | Proton | Wine |
|---|---|---|
| 图形翻译 | 默认使用 DXVK/vkd3d,Vulkan 性能接近原生 DirectX | 需要自行安装 DXVK,默认基于 OpenGL,性能略低 |
| 音频处理 | 内置 FAudio,实现低延迟 | 依赖 Wine 自带的 ALSA/PulseAudio 转换,效果不一 |
| 更新频率 | Valve 每月同步更新,针对 Steam 游戏做专项修复 | Wine 社区每两周发布一次,覆盖面更广但针对性弱 |
| 官方文档 | 以 Steam 社区为主,教程集中在 Steam Play 页面 | 官方 Wiki 完整,覆盖桌面软件与服务器场景 |
从表格可以看出,Proton 在游戏场景下的图形与音频优化更为激进,而 Wine 则在通用 Windows 软件兼容性上更为全面。
适用场景对比
- 想在 Steam 上畅玩《赛博朋克 2077》或《黑曜石》,直接在游戏属性里切换到最新的 Proton 版本,几乎不需要手动调参。
- 需要运行企业级 Office、AutoCAD 或自制的内部工具,使用 Wine 并自行配置
winetricks、dxvk,可以更细粒度地控制 DLL 覆盖与注册表。 - 多用户共享同一台机器,Proton 的 per‑game 前置环境可以防止用户 A 的自定义 DLL 影响用户 B 的游戏启动;而 Wine 的全局前置目录则需要手动切换
WINEPREFIX。
小结
Proton 与 Wine 并不是竞争对手,而是同一条技术链上的不同节点。Proton 将 Wine 的通用兼容层包装进了 Steam 的交付体系,专注于游戏性能与一键体验;Wine 则保持了更开放的接口,适合需要深度定制的桌面软件。了解它们的实现细节后,选择合适的工具就不再是盲目的“装个兼容层”,而是对症下药的技术决策。或许,等到下次更新时,又会有新的惊喜。
参与讨论
用了好几年Wine,Proton倒是没试过,游戏直接双系统了😂
之前搞过Wine配置,折腾半天,Proton真的一键搞定?
这个per‑game环境设计挺聪明,省得互相污染
那要是想跑个老游戏,Proton支持得咋样?
看下来感觉Proton就是给懒人准备的,Wine适合折腾党
我还在用Wine跑办公软件,Proton只针对游戏吧?
又是技术科普,直接说哪个更省心不就完了🤔