这篇文章搬运自我的b站专栏,原贴传送门
问题
从linux的steam下载的oneshot,点击运行就闪退
我的系统是archlinux
排查
在终端中运行~/.local/share/Steam/steamapps/common/OneShot/steamshim
直接启动游戏,有类似这样的输出
1 | dlopen failed trying to load: |
解决
报错信息丢google上一搜索,好幸运,steam社区一个帖子给出了解决方案
闪退的原因是oneshot这游戏比较老了,它自带的老版本libglibc等一些库,在如今的系统上已经不能用了
原帖提供的解决方法是:
删掉~/.local/share/Steam/steamapps/common/OneShot/
目录下的这些文件
- libgio-2.0.so.0
- libglib-2.0.so.0
- libsystemd.so.0
- librt.so.1
如果还不能运行,继续删掉libstdc++.so.6和libdrm.so.2
实际上,看终端输出报错的是哪个文件就删哪个,直到能进游戏为止,我一开始把六个那文件全删了能玩,但是第二天再运行就报了steam 相关的错误,后来发现我的系统上只用删3个文件就行了
如果删错了东西,steam 校验一下游戏文件完整性就能恢复回去了
但是我这里必须要在终端中运行steamshim才行,steam里直接点开依旧闪退,这个真的没辙了
试了一下,通过执行steamshim进入游戏,窗口化模式下完美运行,但是设置全屏会有bug导致崩溃
这本来不是什么大问题,毕竟官方也推荐在窗口化模式下运行(难道是因为bug?),那就这样玩呗
可是我的笔记本是13寸的2k屏,窗口化模式下真的太小了……
一开始我尝试把游戏窗口缩放,但是用了几个设置缩放的变量都没用,我之前在.Xresources里对整个桌面设置的dpi对这游戏也没用
然后看了archlinux wiki的hidpi条目,了解到能对不支持缩放的程序使用run_scaled这个对xpra的封装来进行强制缩放(aur里有)
然鹅试了一下,能缩放,但是用键盘控制niko移动的时候一卡一卡的,根本没法玩
最后只好改分辨率,我使用的是i3wm,只能用xrandr手动更改分辨率
试了一下,游戏显示效果很好。应该完美了,就这样吧
不过每次都要手动输入指令改分辨率再运行steamshim很是麻烦,于是把这些操作写进脚本里
1 | !/bin/bash |
把这个脚本放主目录下并给予可执行权限,每次玩的时候只要先打开steam,再运行这个脚本就行了
其实我是在windows10下玩也闪退并且不会解决才尝试在linux上玩oneshot的