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

看板Steam作者 (小四)時間7年前 (2017/04/24 20:24), 編輯推噓31(31023)
留言54則, 29人參與, 最新討論串1/1
這篇文章是某個 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 效能也實在令人嘆氣。 總而言之就是一整個讓人很想哭... 《待續...》 -- 時間並不能治療我心中的疼痛 南方的春天說什麼也溫暖不了我冰冷的血 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.18.3 ※ 文章網址: https://www.ptt.cc/bbs/Steam/M.1493036641.A.776.html

04/24 20:30, , 1F
推個。
04/24 20:30, 1F

04/24 20:31, , 2F
快推,免得被人說看不懂
04/24 20:31, 2F

04/24 20:34, , 3F
這套件不能用 apt-get裝?
04/24 20:34, 3F

04/24 20:40, , 4F
玩個Game這又是何苦呢~ 工作用的電腦就它好好工作
04/24 20:40, 4F

04/24 21:03, , 5F
是大大 快推
04/24 21:03, 5F

04/24 21:10, , 6F
有沒有考慮用KVM加PCI-passthrough,效能可以逼近原生
04/24 21:10, 6F

04/24 21:20, , 7F
PCI直通需要兩張顯示卡,而且過程不是人人都會
04/24 21:20, 7F

04/24 21:20, , 8F
我拿Linux都做日常使用啊,誰說Linux只能工作用嗚嗚
04/24 21:20, 8F

04/24 21:33, , 9F
實用推!
04/24 21:33, 9F

04/24 22:38, , 10F
雙系統應該也能當作選項?
04/24 22:38, 10F

04/24 23:19, , 11F
0.77趴路過 嗚嗚
04/24 23:19, 11F

04/24 23:20, , 12F
為什麼不用PlayOnLinux前端呢,方便管理wine版本,我自
04/24 23:20, 12F

04/24 23:20, , 13F
己也是這樣用的
04/24 23:20, 13F

04/24 23:23, , 14F
有些遊戲在某些版本會跑不起來,要換版本試試看,比如說
04/24 23:23, 14F

04/24 23:23, , 15F
海王星,照著winedb做完,他跟我都用wine 1.9,我卻跑不
04/24 23:23, 15F

04/24 23:23, , 16F
起來,改到1.7.48才成功執行,所以我覺得能方便切換版本
04/24 23:23, 16F

04/24 23:23, , 17F
是很必要的
04/24 23:23, 17F

04/24 23:34, , 18F
0.77% 簽到。Debian 9 跟 Steam runtime 有衝突的樣子
04/24 23:34, 18F

04/24 23:35, , 19F
Steam client 會發不出聲音
04/24 23:35, 19F

04/24 23:36, , 20F
ntfs-3g 是 fuse based,大量 I/O 會讓 CPU 吃滿
04/24 23:36, 20F

04/25 01:08, , 21F
我確定 steam 有直接支援 ubuntu 但其他的 linux 系統能
04/25 01:08, 21F

04/25 01:08, , 22F
不能用我就不知道了
04/25 01:08, 22F

04/25 01:17, , 23F
推個,不過硬碟夠的話就直接裝雙系統比較實在
04/25 01:17, 23F

04/25 01:17, , 24F
0.77% 目前主要是用 Steam for Linux 來著
04/25 01:17, 24F

04/25 01:17, , 25F
(不太想讓 wine 的程式常駐 純粹感覺問題 XD
04/25 01:17, 25F

04/25 01:18, , 26F
不過遇到會綁 Steam API 的就一個悲劇
04/25 01:18, 26F

04/25 01:50, , 27F
在linux下就玩本身支援linux的獨立遊戲吧
04/25 01:50, 27F

04/25 02:05, , 28F
不過說到 vfio 一度考慮過讓 Linux 用內顯
04/25 02:05, 28F

04/25 02:05, , 29F
顯卡就 pass 給 Windows 但是一個懶
04/25 02:05, 29F

04/25 05:25, , 30F
我還是裝雙系統好了XD
04/25 05:25, 30F

04/25 07:20, , 31F
用 wine 的話,還算是 linux 的 steam 嗎?好奇
04/25 07:20, 31F

04/25 08:58, , 32F
樓上,步驟6說要用.exe,所以應該不是
04/25 08:58, 32F

04/25 09:36, , 33F
上次steam更新又跟plauseaudio衝突沒聲音了 嗚嗚
04/25 09:36, 33F

04/25 10:38, , 34F
太慘啦 還是裝雙系統吧
04/25 10:38, 34F

04/25 11:37, , 35F
以前試過用winetrick 和playonlinux
04/25 11:37, 35F

04/25 11:38, , 36F
我記得winetrick比較方便,playonlinux比較無腦
04/25 11:38, 36F

04/25 11:39, , 37F
不過我曾經遇過重灌前可以run的wine設定,重灌後就失
04/25 11:39, 37F

04/25 11:39, , 38F
敗了(當時大概是Debian7還在test的時候)
04/25 11:39, 38F

04/25 12:40, , 39F
沒聲音是指 Steam client 本身啦。遊戲是都還正常運作。
04/25 12:40, 39F

04/25 13:27, , 40F
就直接用steam for linux吧 其他再用playonlinux
04/25 13:27, 40F

04/25 13:28, , 41F
但個人經驗 還是蠻多遊戲不能玩(有問題)的
04/25 13:28, 41F

04/25 13:30, , 42F
後來懶得弄 沒linux版的遊戲就不玩了 不然就等切win再玩
04/25 13:30, 42F

04/25 14:40, , 43F
這是在玩遊戲還是在寫程式阿?
04/25 14:40, 43F

04/25 14:40, , 44F
遊戲名稱是 : 安裝 ??
04/25 14:40, 44F

04/25 14:43, , 45F
沒到寫程式啦 只是做儀式讓別的世界的東西動起來而已 (?
04/25 14:43, 45F

04/25 15:44, , 46F
用過 wine 但看了 vfio 的一些 benchmark 很心動
04/25 15:44, 46F

04/25 17:01, , 47F
的確是做儀式wwww
04/25 17:01, 47F

04/25 17:43, , 48F
用 wine 玩遊戲 CPU 性能要夠強,效能瓶頸幾乎都是 CPU
04/25 17:43, 48F

04/26 18:32, , 49F
END 然後bootcamp
04/26 18:32, 49F

04/28 01:00, , 50F
04/28 01:00, 50F

04/28 01:29, , 51F
04/28 01:29, 51F

04/28 22:48, , 52F
文中提到的字型不太建議用 Noto Sans T Chinese 只涵蓋正
04/28 22:48, 52F

04/28 22:49, , 53F
體約1萬多字 超出範圍的話可能會缺字或直接套其他字型
04/28 22:49, 53F

04/28 22:50, , 54F
可以考慮改用 Noto Sans CJK TC 相對來說字集比較完整
04/28 22:50, 54F
文章代碼(AID): #1O_UvXTs (Steam)