Steam (简体中文)
Steam 是维尔福公司推出的著名游戏分发平台。
Contents
安装
你需要满足下列要求从而在 Arch Linux 上运行 Steam:
- 安装 32 位版本的 OpenGL 图形驱动。
- 生成 en_US.UTF-8 语言环境,以避免非法指针错误。
- 其图形界面大量使用 Arial 字体。详见 Microsoft fonts 。你可以通过安装 ttf-liberation 或使用 Steam 支持的字体问题 中的方法来解决。
- 安装 wqy-zenhei 以支持亚洲地区语言。
SteamCMD
安装 steamcmdAUR 以使用命令行版本的 Steam。
可选 Flatpak 安装
Steam 也可以作为 com.valvesoftware.Steam
使用 Flatpak 从 Flathub 中安装。使用 Flathub 仓库和 flatpak 命令行安装是目前最简单的安装方式:
flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo flatpak --user install flathub com.valvesoftware.Steam flatpak run com.valvesoftware.Steam
目前 Flatpak 应用还不支持主题。并且你不能通过 optirun
/primusrun
来运行游戏,更多细节详见 Issue#869。
默认情况下 Steam 不会有访问你的家目录的权限,你可以运行下列命令来授予权限,以获得更类似于在 Ubuntu 或 SteamOS 下的运行效果:
flatpak override com.valvesoftware.Steam --filesystem=$HOME
Flatpak 的亚洲字体问题
如果你遇到了游戏中无法显示亚洲字体的问题,这是因为 org.freedesktop.Platform 并没有包含合适的字体文件进去。首先尝试挂载你的本地字体:
flatpak run --filesystems=~/.local/share/fonts --filesystem=~/.config/fontconfig com.valvesoftware.Steam
如果上述命令不起作用,考虑动手 hack 一下:直接将字体文件复制进 org.freedesktop.Platform 的目录下以启用字体,例如
# replace ? with your version and hash /var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/?/?/files/etc/fonts/conf.avail /var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/?/?/files/etc/fonts/conf.d /var/lib/flatpak/runtime/org.freedesktop.Platform/x86_64/?/?/files/share/fonts
目录结构
Steam 的默认安装位置是 ~/.local/share/Steam
。如果 Steam 无法找到该目录,它会引导你重新安装或选择一个新的安装位置。这篇文章使用 ~/.steam/root
符号链接来表示 Steam 的安装位置。
库文件夹
每一个 Steam 应用都有一个独一无二的应用 ID,你可以通过 Steam Store 页面路径来找到它。
Steam 将游戏安装到 LIBRARY/steamapps/common/
目录下。库文件夹 LIBRARY
一般会是
~/.steam/root
,但是你依然可以选择拥有多个库文件夹如 (Steam > Settings > Downloads > Steam Library Folders)。
为了 Steam 能够正确识别游戏,它需要在 LIBRARY/steamapps/
目录下找到 appmanifest_AppId.acf
文件。此文件使用了
KeyValues 格式,并且它的 installdir
的内容决定了游戏的目录名称。
用法
steam [ -options ] [ steam:// URL ]
对于可用的命令行选择,详见 Command Line Options article on the Valve Developer Wiki。
Steam 也可以接受可选的 Steam URL,详见 Steam browser procotol。
启动选项
当你运行一个 Steam 游戏时,Steam 会使用 Bash shell 执行它的 启动命令。 为了让你随意修改启动命令,Steam 提供了 启动选项。 启动选项可以通过右键点击你的游戏库中的游戏,选择属性后点击设置启动选项进行修改。
默认情况下 Steam 只是简单的把你设置的参数字符串添加到游戏的启动命令后。想要设置环境变量或者将一个启动命令作为参数传递给另一个命令,你可以使用 %command%
以表示原启动命令。
实例
- 仅设置参数:
-foo
- 设置环境变量:
FOO=bar BAZ=bar %command% -baz
- 设置与默认完全不同的命令:
othercommand # %command%
提示与技巧
Fsync 补丁
维尔福公司 发布 了一个可以帮助提升大量多线程应用运行帧率的特殊内核补丁。这里有一些使用这个补丁的方法:
- 直接使用维尔福公司提供的二进制内核。详见 Unofficial user repositories#valveaur 并且一旦你添加了这个仓库,内核软件 linux-fsyncAUR 和 linux-fsync-headersAUR 便可使用。你将可能需要替换某些常用软件包 (例如 nvidia) 和 DKMS 软件包 (例如 nvidia-dkms)。
- 安装 linux-fsyncAUR 内核。
- 安装 linux-zen 内核,其从 5.2 版本开始已包括 fsync 补丁。[2]
Proton Steam-Play
维尔福公司开发了一个兼容性工具,用来使 Steam 可以在 Wine 和其他额外组件上运行。这使得你可以运行很多只能在 Windows 平台上运行的游戏 (详见 compatibility list)。
此工具开源并且可以从 Github 获得。Steam 将在 Steam Play 启用后安装它相适应的 Proton 版本。
Proton 需要在 Steam 客户端启用: Steam > 设置 > Steam Play
。你可以为了上述那些没有被维尔福公司列入白名单的游戏启用 Steam Play。
如果需要的话,为了在启动游戏时强制启用 Proton 或者指定一个确定的 Proton 版本,在游戏处右击,点击 属性 > 常规 > 强制使用特定 Steam Play 兼容性工具
,然后选择所需版本。这样做同样可以用来强制游戏生成一个 Linux 入口用以运行 Windows 版本的游戏。
你同样可以从 AUR 通过安装 protonAUR 或 proton-gitAUR 来安装 Proton,但是需要一些额外的配置才能使 Steam 良好运行。想要了解 Steam 如何识别已安装的 Proton 的更多细节,可以前往 Proton 的 Github 页面。
无需窗口管理器的大屏幕模式
想要从 Display manager (简体中文) 运行 Steam 的大屏幕模式,你可以选择以下任意一个方案:
- 安装 steamos-compositorAUR
- 或者,安装 steamos-compositor-plusAUR,这可以隐藏 Proton 游戏启动时恼人的颜色闪烁,并修复游戏在后台运行的问题。
- 手动添加一个 Steam 入口 (但是你会失去 Steam 的混合平台优势:主要体现在你不能使用键盘或手柄控制大屏幕模式):
创建一个 /usr/share/xsessions/steam-big-picture.desktop
文件,其中包含:
/usr/share/xsessions/steam-big-picture.desktop
[Desktop Entry] Name=Steam Big Picture Mode Comment=Start Steam in Big Picture Mode Exec=/usr/bin/steam -bigpicture TryExec=/usr/bin/steam Icon= Type=Application
Steam 皮肤
使用皮肤可以自定义 Steam 界面。皮肤可以被位于 ~/.steam/root
的界面定义文件所覆盖。
想要安装一个皮肤:
- 将皮肤的目录放于
~/.steam/root/skins
。 - 按照 Steam > 设置 > 界面 依次点击并选择该皮肤。
- 重启 Steam。
你可以在 Steam 论坛 获得比较完备的皮肤列表。
自创皮肤
几乎所有的 Steam 风格会定义在 ~/.steam/root/resource/styles/steam.styles
(此文件超过 3,500 行)。对于一个可以被 Steam 识别的皮肤,它需要自己的 resource/styles/steam.styles
文件。
当一个 Steam 的更新改变了官方的 steam.styles
文件,你的皮肤可能会过期,会有造成可视化错误的潜在风险。
详见 ~/.steam/root/skins/skins_readme.txt
以获得如何创建皮肤的初步指引。
改变 Steam 的通知位置
默认情况下 Steam 的通知会在屏幕底端右侧出现。
你可以改变 Steam 通知出现的位置,通过更改 Notifications.PanelPosition
文件,具体位于
-
resource/styles/steam.styles
以调整桌面通知 -
resource/styles/gameoverlay.styles
以调整游戏中通知
以上两个文件都将在 Steam 启动时被覆写,且 steam.styles
只会在启动时被读取。
使用一个皮肤
你可以创建一个皮肤去将通知位置改变成你想要的那样。比如你想要将位置设置成顶部右侧:
$ cd ~/.steam/root/skins $ mkdir -p Top-Right/resource $ cp -r ~/.steam/root/resource/styles Top-Right/resource $ sed -i '/Notifications.PanelPosition/ s/"[A-Za-z]*"/"TopRight"/' Top-Right/resource/styles/*
实时更新
gameoverlay.styles
文件可以在 Steam 运行时更改,这允许你对不同游戏设置不同的通知位置。
~/.steam/notifpos.sh
sed -i "/Notifications.PanelPosition/ s/\"[A-Za-z]*\"/\"$1\"/" ~/.steam/root/resource/styles/gameoverlay.styles
由此 #启动选项 应该像下面这样:
~/.steam/notifpos.sh TopLeft && %command%
Steam 远程同乐
Steam 内置对于 远程同乐 的支持。
前往 Steam 社区指南 以了解如何在 Linux 上设置 headless 模式的流式服务器。
不同子网
Steam 客户端如果处在不同的子网中,那么将不能检测到主机,这种情况常见于当你使用 VPN 去连接你的家庭网络时。就算服务端与服务器都可以互相 ping 通 —— Steam 客户端将仍然不会检测主机,因此你需要去强制检测。想要达到目标,你需要使用下面的命令启动 Steam:
$ steam -console
请耐心等待,直到 Steam 已经启动。一旦它加载完成,你会发现一个名为“控制台”的额外标签。打开它并将已替换为正确主机 IP 的下列命令粘贴上去:
connect_remote <host_ip>:27036
你将会看到通知说:你可以从主机来流式运行游戏了。
Steam 控制器
通常一个 Steam 控制器需要使用 Steam 界面。不过在非 Steam 的原生 Linux 游戏中这种界面并不很实用。对此,当 Steam 客户端运行时,其会保持一个“桌面配置”。如果你有 Steam 控制器,请在桌面配置中将其设置为通用 XBOX 控制器。只要 Steam 客户端在运行,你可以在其他游戏中使用 Steam 控制器,例如 GOG 的游戏, 就像一个 XBOX 控制器。确保已经选择了你的控制器类型以实现“常规控制器设置”的映射。
故障排除
另见
- Gentoo Wiki article
- The Big List of DRM-Free Games on Steam 位于 PCGamingWiki
- List of DRM-free games 位于 Wikia
- Steam Linux store
- Proton 支持 Steam Play 运行的基于 Wine 以及其他额外组件的兼容性工具