鼓捣Steamdeck的零碎心得

1 怎么用Proton运行Windows软件

  1. 把Windows软件的主程序添加到Steam库,然后在库中该项目的属性 - 兼容性页面设置强制使用Proton运行,以后通过Steam运行这个软件即可。
  2. 添加到Steam库后,在/home/deck/.steam/steam/steamapps/compatdata路径下会生成一个数字编号的文件夹,里面是Proton模拟的Windows文件环境。
  3. 非Steam游戏在该目录下的文件夹的数字编号远远比正常Steam游戏文件夹的数字编号大,再根据创建时间,很容易找到刚才添加的软件对应的是哪个文件夹。

2 如何在Steamdeck上运行Linux软件

目前最新的SteamOS是基于ArchLinux二次开发的Linux系统,理论上可以运行原生的Linux软件。但是,因为Valve为了让SteamOS适配Steamdeck做了很多优化,SteamOS相比于完整的ArchLinux实际上缺了很多库,直接把原生Linux软件拿来运行可能无法运行。

  1. 我是在鼓捣yuzu模拟器时遇到问题的。yuzu模拟器有Linux版本,然而下载之后,双击运行,OK完全没反应 😕
    接下来尝试在控制台Konsole上运行,提示缺少libenet.so.7和libfmt.so.10两个东西,这是Linux的两个动态链接库文件。
  2. 自行下载这两个文件,因为SteamOS对/usr/bin这些根目录开了写保护,出于安全起见,我也没有去解除写保护,而是直接把上面的两个库放在了/home/deck/Download文件夹里。
  3. SteamOS初始的环境变量中没有上述Download文件夹路径,因此运行yuzu模拟器仍然会提示缺少那两个动态链接库。这里有一个知识,在Linux的控制台中手动设置环境变量,只能在本次运行的控制台环境内生效(如下)
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/deck/Download/libenet:/home/deck/Download/libfmt
// $LD_LIBRARY_PATH代表引用系统的原环境变量,英文冒号代表分隔,上面语句中一共添加了三个环境变量,分别是系统原环境变量、libenet文件夹路径、libfmt文件夹路径,后面两个文件夹路径当然就是我分别存放缺少的动态链接库文件的地方

关了再重开一个控制台就又找不到Download路径了。我的最终目的是想在Steamdeck的游戏模式下正常运行yuzu模拟器Linux版,所以这样临时在控制台设置环境变量不行,而是得把yuzu模拟器的主程序添加到Steam库,然后在它的启动选项里添加

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/deck/Download"  %command%

注意两点:

  • 启动选项中的路径两边有英文引号;
  • 预加载环境变量的语句后面需要加(空格)%command%,以保证执行完添加环境变量的语句后,接着执行运行游戏程序的命令。

3 用Proton运行Windows游戏时提示缺少Microsoft Visual C++ Runtime

  1. 手动下载VC++的安装包;
  2. 把VC++的安装包添加到Steam库,设置强制使用Proton运行;
  3. 在VC++的安装包的启动选项中加入:
STEAM_COMPAT_DATA_PATH="/home/deck/.steam/steam/steamapps/compatdata/[ID]" %command%

上面的[ID]是Windows游戏添加到Steam库后,在/compatdata路径下生成的数字编号文件夹的名字(如果这句话看不懂,就去看上面第1条),注意这里不要填VC++添加到Steam库后对应的文件夹名!!!

STEAM_COMPAT_DATA_PATH是Proton的兼容文件夹运行路径,强制指定VC++的安装包在游戏对应的虚拟文件环境中运行,把VC++安装到与游戏同一文件环境中。如果不指定,VC++安装包自己对应了一个新的文件环境,与游戏的文件环境是隔开的,装了也没有用。

之前还在网上搜到过一个类似的问题帖 Linux Gaming(Proton)常见问题与解决(Visual C++ runtime/蜘蛛侠/霍格沃兹/巫兔),帖主说直接用Proton装好VC++,然后在游戏的启动选项里加两条STEAM_COMPAT_DATA_PATH命令,用空格隔开,这个做法是错的。
首先,两条被空格隔开的STEAM_COMPAT_DATA_PATH会被先后运行,从而使后一条命令覆盖了前一条命令,前一条命令实际上没用;其次,让游戏强制在VC++安装包对应的文件环境中运行,会导致不可预见的问题,因为只装了VC++的文件环境可能缺少其它游戏所需的文件,而且以后的存档也都会存在VC++的文件环境中。显然,直接将VC++装在游戏的虚拟文件环境中是更合理的做法。

4 在SteamOS中用Proton运行Epic Games Launcher (EGL),但EGL会自动更新,更新完之后闪退

首先,基本的Epic安装方法参考这个:
【中字】如何直接在 Steam Deck 上玩 Epic 商城的游戏 | Gaming On Linux

不想看视频的可以看下面文字版总结:

  1. 把EpicInstaller.msi(也就是Epic安装包)添加到Steam库,强制用Proton运行;
  2. 安装完成后,找到EpicInstaller.msi对应的兼容层文件夹(/home/deck/.steam/steam/steamapps/compatdata路径下),具体怎么确定哪个是Epic的文件夹看上文【1 怎么用Proton运行Windows软件】
  3. 在/home/deck/.steam/steam/steamapps/compatdata/[ID]/pfx/drive_c/Program Files (x86)/Epic Games/Launcher/Portal中找到EpicGameLauncher.exe,右键选择Copy Path(复制该文件的路径)
  4. 回到Steam库的EpicInstaller.msi - 属性 - 快捷方式中,把刚才复制的EpicGameLauncher.exe的路径覆盖到“目标”和“起始位置”中,并把“起始位置”中的EpicGameLauncher.exe删掉,仅保留到它所在的文件夹
  5. 在Steam运行刚才设置好的快捷方式,就可以启动Epic了。在Steamdeck的游戏模式下,Epic的广告可能会使Epic窗口的大小变得很奇怪,记得在Epic设置里把通知都关了。

照着这个做完,可能会遇到一些问题:

  1. 视频里把路径粘贴到目标和起始位置中时,路径两侧是有英文引号的!没有引号会导致无法启动,因为Epic Games文件夹名有空格,而Linux语法不支持文件路径中有空格。
  2. 运行EpicGamesLauncher.exe时,遇到自动更新后闪退的问题,我摸索了一点经验供参考:
  • 在Steam的Epic快捷方式的启动选项中加入-SkipBuildPatchPrereq,跳过预检
  • 在/home/deck/.local/share/Steam/steamapps/compatdata/xxxx/pfx/drive_c/Program Files (x86)/Epic Games/Launcher/Engine/Config/BaseGameUserSettings.ini中加入
[Launcher]
DisableAutoUpdate=true
[Update]
AutoUpdateEnabled=False
BackgroundUpdatesEnabled=False

上面两个方法,第一个我试了之后马上有效果,不过第一次运行还是闪退了,第二次开始运行正常,后面一个方法我没来得及试,因为第二次成功运行之后,我再把启动选项删掉,还是能正常启动。后面在BaseGameUserSettings.ini中加入的指令是Deepseek给我的,不保证正确,仅供死马当活马医参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值