[心得] Linux 与 Steam(一):Wine

楼主: Tetralet (Tetralet)   2017-04-24 20:23:48
这篇文章是某个 Linux 笨蛋的 Steam 不专业恶搞文。请不要有太大的期待。
若说 Linux 有什么罩门,那么大概是 GAME 这一块了。
而 Steam,可以说是 Linux 的救赎...
根据 2017 年 3 月 Steam 官方调查数据,
用 Linux 来跑 Steam 的玩家只有 0.77%:
http://store.steampowered.com/hwsurvey/
所以... 嗯... 欢迎加入 0.77%! XD
在 Linux 上想玩 Steam,
按照安装方法的不同,基本上可以分成 4 种方法:
Wine:
Wine 是个很有雄心壮志的计划:在 Linux 上实作所有 WINAPI!
讲白一点,就是想辨法让 Windows 的程式可以在 Linux 上跑。
很多程式或游戏,像 LINE 或 WoW,都可以利用 Wine 在 Linux 上执行。
用 Wine 来执行 Steam 基本上没什么大问题啦,
但还是有一些小技巧可以聊一下:
1. 请先确认您已正确驱动您的显示卡,并确认已开启 3D 加速。
并请确认 i386 版的驱动程式函式库,以及以下套件已安装:
libgl1-mesa-dri libgl1-mesa-dri:i386 libgl1-mesa-glx libgl1-mesa-glx:i386
2. 如果您是较旧的系统,如:Debian Jessie,请顺便安装以下套件:
libc6-i686:i386
部份 32bit 应用程式的效能可能会因此快上 1.5 倍。
3. 可以利用 WINEPREFIX 环境变量,
把 Steam 安装在各别资料夹下(本文中是 $HOME/Steam)。
它可以让各个 Wine 应用程式之间不至于互相干扰。
比如说,您可以用此技巧在系统中执行 2 个 LINE。
4. 在较新版的 64 bit WINEPREFIX 里已经可以直接执行 Win32 程式了,
所以建议直接用 64bit 版的 Wine64 来跑就好了。
反正相容性大概差不多:
该当的地方还是会当,很 Lag 的地方大概也不会有改善。XD
Wine 在默认上应该会建立 64 bit 的 WINEPREFIX。
5. Wine 的开发进度虽然没辨法一日千里,
但若遇上了什么问题,可以试试由 Wine 官方所提供的最新版。
而 Wine 官方有提供包括 devel 及 staging 这两种版本的套件包:
devel:原生版的 Wine
staging:包含了一些实验中功能的 Wine
安装后分别是装在 /opt/wine-devel/ 或 /opt/wine-staging/ 下。
可以的话建议安装 wine-staging 版,
然后请用 winecfg 开启 wine-staging 相关功能,
像是 3D 效能依情况可能会增加 10% 以上。
但如果遇到了什么奇怪的问题,像是贴图错误之类的,
可换回 wine-devel 或旧版 wine 试试看。
注:Debian 官方里的 wine 套件是 1.8.x 稳定版。
另外还有个 wine-development 是测试版,但版本不若 Wine 官方的新。
也就是,您有 4 个版本的 Wine 可以测试,虽然大概是差不多 XD
其它相关资讯请参阅:https://wine-staging.com/
6. 安装 Steam 的过程很简单,就是去官网下载 SteamSetup.exe 后用 wine 执行即可。
其中的 WINEARCH 参数是指定 WINEPREFIX 目录是使用 Win32 还是 Win64。
默认是 Win64,只需指定一次即可,但事后无法修改:
WINEARCH="win64" WINEPREFIX="$HOME/Steam" WINELOADER="/opt/wine-staging/bin/wine64" /opt/wine-staging/bin/wine64 SteamSetup.exe
另,有部份游戏会根据您的环境而下载 32bit 或 64bit 版本。
也就是,32bit 及 64bit 的 Steam 游戏资料夹 steamapps 可能无法共用。
您可以利用 file 指令来检查游戏的主程式是 32bit 或 64bit 版本,例:
file "Steam/steamapps/common/Tomb Raider/TombRaider.exe"
TombRaider.exe: PE32 executable (GUI) Intel 80386, for MS Windows
7. 当然也有很欢乐的方法,用 winetricks 安装!(请先安装 winetricks 套件)
WINEARCH="win64" WINEPREFIX="$HOME/Steam" winetricks steam
而 winetricks 在安装完成之后,会套用一个 override-dll.reg 档,其内容如下:
[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
"*gameoverlayrenderer"=""
但没有说明这个 override-dll.reg 是修正了啥东西就是了。
winetricks 是一个 Wine 的辅助工具,
用来方便得下载及安装许多常见的 Windows 应用程式、函式库、字型等等,
因为实在很无脑所以还蛮受使用者欢迎的。XD
另,还有一个 GUI 的 playonlinux 也可以试试看。
但因为是基于不是很热门的 wxWidgets,有些人可能不太喜欢。
8. 在安装过程中,Steam 的使用者接口请务必先设定成‘English’。
安装完成后还有些设定要改,先不要直接执行 Steam。
9. 安装完成后,请先用 winecfg 程式把 Windows 的版本设定为 Windows XP,
(默认应该会是 Windows 7)
否则一些视窗,像是最新资讯,会一片空白:
WINEPREFIX="$HOME/Steam" WINELOADER="/opt/wine-staging/bin/wine64" /opt/wine-staging/bin/winecfg
注意:Steam 针对 Windows 各版本皆有其不同的 binary 执行档。
每当您用 winecfg 修改了 Windows 的版本,
再开 Steam 时就会重跑一次下载更新程序。
所以您是可以利用 WINEPREFIX 来执行多种版本的 Steam,
但主要环境建议使用 Windows XP。
另,如果您同时启动了第 2 个以上的 Steam 登入同一个帐户,
另一个会被设定成‘未连线’就是了。
10. 安装完成后,请在 $HOME/Steam/user.reg 中先设定好替代字型,如:
[Software\\Wine\\Fonts\\Replacements]
"System"="Noto Sans T Chinese Medium"
"Arial"="Noto Sans T Chinese Medium"
"Fixedsys"="Noto Sans T Chinese Medium"
"Microsoft Sans Serif"="Noto Sans T Chinese Medium"
"MS UI Gothic"="Noto Sans T Chinese Medium"
"Tahoma"="Noto Sans T Chinese Medium"
"Terminal"="Noto Sans T Chinese Medium"
"MingLiU"="Noto Sans T Chinese Medium"
"PMingLiU"="Noto Sans T Chinese Medium"
而系统中的字型列表,可用 fc-list 指令取得。(需安装 fontconfig 套件)
未设定的话,启动 Steam 后可能会看到方框字,或无字视窗,
或是功能选单上的中文字被切掉一半等等奇怪问题。
11. 以上准备完成后,加上 -no-cef-sandbox 参数启动 Steam:
WINEPREFIX="$HOME/Steam" WINELOADER="/opt/wine-staging/bin/wine64" /opt/wine-staging/bin/wine64 $HOME/Steam/drive_c/Program\ Files\ \(x86\)/Steam/Steam.exe -no-cef-sandbox
12. 在安装完 Steam 用户端程式并正确登入后,
请至【Settings】→【Interface】,
勾掉【Enable DirectWrite for improved font smoothing and kerning】,
然后就可以把接口设定为【繁体中文】了。
13. Wine 理论上最高只能跑 DirectX 9.0c 的游戏,
DirectX 11 以上的游戏大概都不能跑;
也就是大部份近期作应该是没辨法用 Wine 执行的。
Wine 也是有在努力要支援 DirectX 11 以上啦,
但至少短期之内应该是不会有太大的进展。请参阅:
https://www.winehq.org/winapi_stats
有部份游戏可以加上 -force-d3d9 参数来强制让它以 D3D9 执行。
14. 也因此,Wine 目前尚无法支援 Steam 的 Big Picture 模式。
因为它会用到一些目前 Wine 尚未实作的 DirectX 10.x 函式库。
15. Wine 的 3D 效能约是原生程式的 40%~85% 左右。不用抱过度的期待。
16. 音效在 Wine 上应该不会有什么大问题。
另,如果是要跑 Source Engine,请设定如下:
WINEPREFIX="$HOME/Steam" WINELOADER="/opt/wine-staging/bin/wine64" /opt/wine-staging/bin/wine64 reg add "HKLM\\System\\CurrentControlSet\\Control\\Session Manager\\Memory Management\\" /v PagedPoolSize /t REG_DWORD /d 402653184 /f
17. 应该无法在 Steam 中侦测到摇杆。
因为无法进入 BigPicture 模式,所以也无法自行设定摇杆。
解决方案有 2:
A. 用 LD_PRELOAD 的方式加挂 xinput 模组,
但个人测试结果,好像不能用...
请参阅:https://github.com/KoKuToru/koku-xinput-wine
B. 修改 Wine 原始码以支援 xinput。但需自行重编 Wine。
但好像只能支援 Xbox360 的 USB 有线版摇杆。
请参阅:https://github.com/00cpxxx/wine-xinput
18. Wine 有支援 XIM 输入法。在中文输入方面应该问题不大才是。
另,Wine-Staging 对输入法的 OverTheSpot 输入模式有较好的支援,
请设定如下:
WINEPREFIX="$HOME/Steam" WINELOADER="/opt/wine-staging/bin/wine64" /opt/wine-staging/bin/wine64 reg add "HKEY_CURRENT_USER\Software\Wine\X11 Driver" /v "InputStyle" /t reg_sz /d "overthespot" /f
不过这仅限于采用部份标准视窗元件 WINAPI 的程式,
我论这对大部份游戏应该是没什么效果就是了。XD
19. Steam 有个非常大的问题:接口的字太小... 但这点基本上是无解。
Steam 的 UI 好像是自行开发的名为 VGUI,目的是为了跨平台。
但说起跨平台,Qt 似乎是比较常见的选择?
Qt 明明也算是蛮成熟的 GUI Toolkit 了。(虽然输入法...)
像 Blizzard 的 battle.net 就是用 Qt 开发的。
LINE 好像也有用到 Qt 元件...
但总而言之,Steam 的 UI 并不会理会系统中 DPI 的设定,
因此在一些高分辨率,像是 4K 萤幕,字会小得和蚂蚁差不多,非常伤眼。
有很勉强的解决方案,就是自订一个字型比较大的 skin 给 Steam 用。
您可以修改 Steam/resource/styles/steam.styles 里的字型设定,
并将其放入:(目录请自行建立)
Steam/skins/BigSkin/Resource/Styles/steam.styles
然后在接口中的【面板】中选取【BigSkin】后重启 Steam 即可。
但 Steam 里很多地方也没辨法用 skin 自订就是了。
您也可以由此下载由敝人自改的 steam.styles:
http://debian.luna.com.tw/other/steam.styles
另,不要直接修改 Steam 内建的 steam.styles。
只要修改任何 Steam 内建的档案,
Steam 就会再次下载用户端程式并自行重新安装。
20. 如果您想让 Wine 存取位于 Windows 的 NTFS 分割区的 steamapps 资料夹,
建议在安装 ntfs-3g 套件后,使用以下指令来挂载 NTFS 分割区:
(ntfs-3g 提供了比 Linux Kernel 中内建的 ntfs 更多更完整的功能)
mount /dev/sda5 /mnt -o uid=1000
然后使用符号连结把 Steam 目录里的 steamapps 指向 /mnt 里的 steamapps 即可。
对 Linuxer 而言,用 Wine 来跑 Steam 应该是无奈之举:
BigPicture 不能用、一堆 DiretcX 11 游戏也不能跑已经够糟糕了,
就算能跑的,那半残的 3D 效能也实在令人叹气。
总而言之就是一整个让人很想哭...
《待续...》
作者: penguinfuko (企鹅)   2017-04-24 20:30:00
推个。
作者: syldsk (Iluvia)   2017-04-24 20:31:00
快推,免得被人说看不懂
作者: MAGICXX (逢甲阿法)   2017-04-24 20:34:00
这套件不能用 apt-get装?
作者: felixgugu (felix)   2017-04-24 20:40:00
玩个Game这又是何苦呢~ 工作用的电脑就它好好工作
作者: sivid (go back to sleep)   2017-04-24 21:03:00
是大大 快推
作者: sealer (sealer)   2017-04-24 21:10:00
有没有考虑用KVM加PCI-passthrough,效能可以逼近原生
作者: a07051226 (葡萄糖)   2017-04-24 21:20:00
PCI直通需要两张显示卡,而且过程不是人人都会我拿Linux都做日常使用啊,谁说Linux只能工作用呜呜
作者: y5770567 (肥渊)   2017-04-24 21:33:00
实用推!
作者: Tverous (Orah~)   2017-04-24 22:38:00
双系统应该也能当作选项?
作者: AlphaGoo (阿法狗)   2017-04-24 23:19:00
0.77趴路过 呜呜
作者: Davinais (水灵流喵)   2017-04-24 23:20:00
为什么不用PlayOnLinux前端呢,方便管理wine版本,我自己也是这样用的有些游戏在某些版本会跑不起来,要换版本试试看,比如说海王星,照着winedb做完,他跟我都用wine 1.9,我却跑不起来,改到1.7.48才成功执行,所以我觉得能方便切换版本是很必要的
作者: Bencrie   2017-04-24 23:34:00
0.77% 签到。Debian 9 跟 Steam runtime 有冲突的样子Steam client 会发不出声音ntfs-3g 是 fuse based,大量 I/O 会让 CPU 吃满
作者: tkigood (提谷德)   2017-04-25 01:08:00
我确定 steam 有直接支援 ubuntu 但其他的 linux 系统能不能用我就不知道了
作者: nickbanana (巧克力香蕉特调)   2017-04-25 01:17:00
推个,不过硬盘够的话就直接装双系统比较实在
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-04-25 01:17:00
0.77% 目前主要是用 Steam for Linux 来着(不太想让 wine 的程式常驻 纯粹感觉问题 XD不过遇到会绑 Steam API 的就一个悲剧
作者: sarsman (DeNT15T♠)   2017-04-25 01:50:00
在linux下就玩本身支援linux的独立游戏吧
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-04-25 02:05:00
不过说到 vfio 一度考虑过让 Linux 用内显显卡就 pass 给 Windows 但是一个懒
作者: darkmore (小D)   2017-04-25 05:25:00
我还是装双系统好了XD
作者: rollr (衛生紙的心情)   2017-04-25 07:20:00
用 wine 的话,还算是 linux 的 steam 吗?好奇
作者: Typebrook (Pham)   2017-04-25 08:58:00
楼上,步骤6说要用.exe,所以应该不是
作者: trashprince (Contigo ergo "XOR"!!)   2017-04-25 09:36:00
上次steam更新又跟plauseaudio冲突没声音了 呜呜
作者: narsilx (反正我们都是训练用猴子)   2017-04-25 10:38:00
太惨啦 还是装双系统吧
作者: commandoEX (卡曼都)   2017-04-25 11:37:00
以前试过用winetrick 和playonlinux我记得winetrick比较方便,playonlinux比较无脑不过我曾经遇过重灌前可以run的wine设定,重灌后就失败了(当时大概是Debian7还在test的时候)
作者: Bencrie   2017-04-25 12:40:00
没声音是指 Steam client 本身啦。游戏是都还正常运作。
作者: sujner (纸与蜡笔)   2017-04-25 13:27:00
就直接用steam for linux吧 其他再用playonlinux但个人经验 还是蛮多游戏不能玩(有问题)的后来懒得弄 没linux版的游戏就不玩了 不然就等切win再玩
作者: APM99 (血统纯正台北人)   2017-04-25 14:40:00
这是在玩游戏还是在写程式阿?游戏名称是 : 安装 ??
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-04-25 14:43:00
没到写程式啦 只是做仪式让别的世界的东西动起来而已 (?
作者: wheatdog (麥田圈裡的來福)   2017-04-25 15:44:00
用过 wine 但看了 vfio 的一些 benchmark 很心动
作者: sarsman (DeNT15T♠)   2017-04-25 17:01:00
的确是做仪式wwww
作者: Bencrie   2017-04-25 17:43:00
用 wine 玩游戏 CPU 性能要够强,效能瓶颈几乎都是 CPU
作者: wulouise (在线上!=在电脑前)   2017-04-26 18:32:00
END 然后bootcamp
作者: WindSucker (抽风者)   2017-04-28 01:00:00
作者: fjm31714 (float)   2017-04-28 01:29:00
作者: Wcw5504 (五月雨)   2017-04-28 22:48:00
文中提到的字型不太建议用 Noto Sans T Chinese 只涵盖正体约1万多字 超出范围的话可能会缺字或直接套其他字型可以考虑改用 Noto Sans CJK TC 相对来说字集比较完整

Links booklink

Contact Us: admin [ a t ] ucptt.com