Steam (简体中文)

From ArchWiki
Jump to navigation Jump to search
翻译状态: 本文是 Steam 的本地化版本。上次翻译日期:2019-12-17。如果英文版本有所更改 ,则您可以帮助同步翻译。

Steam 是维尔福公司推出的著名游戏分发平台。

注意: 对于 Linux 平台,Steam 只支持 Ubuntu 的长期支持版本[1]。 因此,请不要向维尔福公司提交 issue 以获得 Steam 对 Arch Linux 的支持。

安装

启用 multilib 仓库并安装 steam 软件包。

你需要满足下列要求从而在 Arch Linux 上运行 Steam:

SteamCMD

安装 steamcmdAUR 以使用命令行版本的 Steam

可选 Flatpak 安装

Steam 也可以作为 com.valvesoftware.Steam 使用 FlatpakFlathub 中安装。使用 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 补丁

维尔福公司 发布 了一个可以帮助提升大量多线程应用运行帧率的特殊内核补丁。这里有一些使用这个补丁的方法:

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 通过安装 protonAURproton-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 的界面定义文件所覆盖。

想要安装一个皮肤:

  1. 将皮肤的目录放于 ~/.steam/root/skins
  2. 按照 Steam > 设置 > 界面 依次点击并选择该皮肤。
  3. 重启 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 只会在启动时被读取。

注意: 一些游戏并不遵守位于 gameoverlay.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 远程同乐

Steam 内置对于 远程同乐 的支持。

前往 Steam 社区指南 以了解如何在 Linux 上设置 headless 模式的流式服务器。

不同子网

Tango-edit-cut.pngThis section is being considered for removal.Tango-edit-cut.png

Reason: 本解决方案将不再具有参考意义,因为此方案已经变为 Steam 远程同乐 的一个特性。 (Discuss in Talk:Steam (简体中文)#)

Steam 客户端如果处在不同的子网中,那么将不能检测到主机,这种情况常见于当你使用 VPN 去连接你的家庭网络时。就算服务端与服务器都可以互相 ping 通 —— Steam 客户端将仍然不会检测主机,因此你需要去强制检测。想要达到目标,你需要使用下面的命令启动 Steam:

$ steam -console

请耐心等待,直到 Steam 已经启动。一旦它加载完成,你会发现一个名为“控制台”的额外标签。打开它并将已替换为正确主机 IP 的下列命令粘贴上去:

connect_remote <host_ip>:27036

你将会看到通知说:你可以从主机来流式运行游戏了。

注意: 如果上述的命令不起作用 —— Windows 可能会屏蔽来自不同子网的所有流入流量,这意味着所有来自 VPN 管道的连接将会被丢弃。如果你向你的 VPN 客户端发出了 ping 的请求但没有任何的应答,那么就可以确定是上述的问题。要解决它,配置(或关闭)所有 Windows 防火墙(包括已经运行的杀毒软件)。
提示: 如果上述方案均不起作用,参见 Gaming#Remote gaming 以查找其他方法。

Steam 控制器

通常一个 Steam 控制器需要使用 Steam 界面。不过在非 Steam 的原生 Linux 游戏中这种界面并不很实用。对此,当 Steam 客户端运行时,其会保持一个“桌面配置”。如果你有 Steam 控制器,请在桌面配置中将其设置为通用 XBOX 控制器。只要 Steam 客户端在运行,你可以在其他游戏中使用 Steam 控制器,例如 GOG 的游戏, 就像一个 XBOX 控制器。确保已经选择了你的控制器类型以实现“常规控制器设置”的映射。

故障排除

参见 Steam/Troubleshooting.

另见