Sarmaticus

誰も読まないような趣味の話しかしないほうのブログ

[Proton] Ubuntu 18.04 で Windows 向け Steam ゲームをやる


要は proton で個別タイトルの導入事例についてのメモ. だいたいぐぐったら既にどっかでかかることがほとんど.

共通の準備

steam クライアントのインストール

公式でダウンロードしたのをインストールしてもいいし,
store.steampowered.com
apt コマンドでも一発でインストールできる*1. ただし, こっちのほうがバージョンが古いようだ.

sudo apt install steam

起動直後は英語になっていると思うので, 不便ならウィンドウ左上の「steam」から Settings -> ”Interface“ で言語選択する.

proton の有効化

クライアントを起動し, ウィンドウ左上の「steam」->「設定」->「アカウント」から, 「ベータへの参加」欄で「変更」を押して, 「Steam Beta Update」 を選ぶ. その後, 「プレイ」が表示されない Linux 非対応のタイトルのプロパティを開き, 「Steam Play」 で「他の全てのタイトルで Steam Play を有効化」にチェックを入れるか, 各タイトルのプロパティから「特定の Steam Play 互換ツールの使用を強制する」をチェックする*2.

後は Linux 対応していないゲームを起動するたびに以下のようなダイアログボックスが出る. この際 DirectX とか足りないライブラリがあれば勝手にインストールしてくれる.

f:id:ill-identified:20190902235640p:plain
proton 適用後に初起動するときのダイアログボックス

よく使うライブラリ等のインストール

この辺は本家のヒント集をそのままなぞった.

github.com

NVIDIAGPU を使っているなら NVIDIA ドライバのインストールが必要になる. (AMDVR やりたい人は知らない)

さらに, 色々と Windows 特有のライブラリに依存しており, wine も必要になる場面が多いのでインストールしておくとよいかもしれない.

sudo apt install wine64
sudo apt install winetricks

ただし, debian/ubuntuリポジトリに登録されている wine/winetricks はバージョンが古い.

最新版 wine のインストール方法

ここを参考にする.

https://wiki.winehq.org/Ubuntuwiki.winehq.org

最新の 4.5 は libfaudio0 が必要だが, これもリポジトリにはない. そこで, 先にそっちも deb ファイルを落として, ターミナルで以下を実行する.

sudo dpkg -i libfaudio0_xxx.deb

xxx の部分はパッケージのバージョン.

次に, 最新版 wine のために wineHQ のリポジトリを登録する. 上記のサイトに従い, 18.04 なら以下のように.

sudo dpkg --add-architecture i386
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key
sudo apt-add-repository ";deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main";
sudo apt update
sudo apt install --install-recommends winehq-stable winetricks

ゲームパッドの使用

今回の事例では, ゲームパッドに対応しているゲームタイトルのほとんどで, ゲームパッドを認識してくれなかった. RPGにツクールなど他のゲームパッドに対応しているソフトを wine 経由で起動して, ゲームパッドが機能することを確認しても, steam ゲームでは動かなかったりした. steam クライアントで bigpicture モードにすれば動く, という声も見られるが, 認識したというメッセージが出るだけで実際は動いてくれなかったりする.

そんなふうにいろいろいじってるうちに反応するようになったため何が決め手になったのかいまいち自身がないが, たぶん, steam クライアント左上の「steam」->「設定」->「コントローラ」の「一般のコントローラ設定」で, 変にチェックボックスを指定しないほうが良さそうだ. つまり, 「PlayStation/Xbox/一般のゲームパッド設定のサポート」などチェックボックスがいくつか表示されるが, その下に「ゲームパッドが検出されている」というメッセージがある限りはどれもチェックを入れないほうが良さそうだ (ちなみに私のゲームパッドlogicool F710). また, 以下の2つをインストールしている. (steam クライアントも何度か再起動したのでそれが影響している可能性もなきにしもあらず)

sudo apt install joystick jstest-gtk

試したタイトル一覧

以下ではインストールディレクトリが $HOME/.local/shere/Steam/ 以下であることを前提でファイルパスを書いているが, どこからインストールしたかとかバージョンとかでも変わる可能性がある. 例えば apt でインストールした場合, デフォルトで $HOME/.steam/ になった.

なお, Steam クラウドに対応しているタイトルならば, 他の環境でプレイしたセーブデータをロードすることができる.

スカイリム・スペシャルエディション (TheElder Scrolls V: Skyrim Special Edition)

BGM と音声が再生されない, キーボードとゲームパッドどちらか片方しか受け付けない (これは windows でも同じだっけ?)

サウンドの問題については, 以下のように steam クライアントから起動オプションを追加して解決した.

github.com

WINEDLLOVERRIDES="xaudio2_7=n,b" %command%

初回起動時のグラフィックパフォーマンス自動設定で「グラフィックボードを検出できない」と言われるが, 最高品質でも余裕で動いたのでグラフィックボードは機能しているはず.

しかし, スカイリムといえば mod で, 既存のものは当たり前だが windows 前提で作られている. よって, それらの動作確認も確かめるとなると結構骨が折れそうだ.

なお無印 Skyrim (Legendary Edition) でもだいたい起動できるが, 水中の表示がおかしい*3とか, 正常終了できないとかいろいろと小さな不具合があった.

github.com

スカイリムはもう飽きるほどやったので, この辺の不具合の解決方法を確認するのはめんどくさくなったので省略.

リトルナイトメア (Little Nightmare)

起動直後に Fatal Error というダイアログボックスが出て終了してしまった.

以下を参考に, steam クライアントでリトルナイトメアの起動オプションに ‘-onethead‘ を追加すると正常に起動できた.

github.com

proton 5.0-9 でも Fatal Error となった. 4.11-13 なら起動できる

ただし, フルスクリーンを指定してもメニューバーとかが消えずに完全なフルスクリーンにならなかった. ゲームパッドも, 先に書いた内容でなんとかなった.

キングダムカム・デリバランス (Kingdom Come: Deliverance)

私の場合は, タイトルロゴが表示されてからいつまで経ってもゲーム画面が展開しなかった. この場合は, インストールされた一部のファイルを別のディレクトリにコピーしないと動かないかもしれない. 以下を参考にした.

steamcommunity.com

以下のコマンドで, Bin/Win64Shared 直下のファイルを Win64/ にコピーする.

cd $HOME/.local/shere/Steam/steamapps/common/KingdomComeDeliverance/Bin/
cp Win64Shared/* Win64/

なお, いくつかの起動オプションが有効という話もあるが, 私の場合は逆に画面が表示されなくなってしまった. 古いバージョンでは有効だったが, 現在は逆効果なのかもしれない. また, steam 版は日本語パッケージがないため, 日本語表示したい場合は有志翻訳 mod が必要になる. しかし, この mod の翻訳テキスト取得プログラムは .net framework と power shell に依存している. 前者はともかく, 後者は wine ではどうしようもない. おそらく VM などで仮想環境を作らないと無理だろう. どうしても windows を使いたくないというのなら, 開発者に最新版のファイルをアップロードしてもらうか, 自分でクローリングプログラムを書き直したら良いだろう.

2019/11/15 追記: Python で日本語化ファイル取得スクリプトを書いた:
github.com

ちなみに DMM Games 版も wine で動かせないかと思ったが, DMM Game Player のインストールがうまく行かなかったので諦めた.

ソードアート・オンライン フェイタルバレット (Sword Art Online: Fatal Bullet)

先に書いたようなゲームパッドの問題を除けば, 普通に機能した. しかし windows で起動した場合よりやや FPS が低下している気がする.

メトロ・エクソダス (Metro: Exodus)

起動時にエラー以下のようなエラーが発生した.

f:id:ill-identified:20190902235750p:plain
メトロ エクソダス起動時のエラー

ここでもあるように, windows のバージョンを 8.1 に設定すれば動いた. バージョンは新しすぎても古すぎても良くないようだ. (私の場合はデフォルトが XP だった... )

www.protondb.com
Metro: Exodus (412020) · Issue #2414 · ValveSoftware/Proton · GitHub
PSA: Do not update Metro Exodus on steam : linux_gaming

wine をインストールして, ターミナルで以下のように入力する. Linuxディストリビューションとかバージョン違いとかでディレクトリは多少変わるかもしれない. 412020 というのはメトロ・エクソダスのIDである*4*5.

WINEPREFIX=$HOME/.local/share/Steam/steamapps/compatdata/412020/pfx winecfg

なお, wine はなぜか英数字 (半角英数?) だけが文字化けすることがある. wine 側でフォントを認識してないからだろうが, ネットに出回ってる対処法を試してもいまいちうまくいかなかったので, ロケールを英語で起動した. つまり, LANG=C を追加して起動する

WINEPREFIX=$HOME/.local/share/Steam/steamapps/compatdata/412020/pfx LANG=C winecfg

これで読めるようになるので, ドロップダウンリストで Windows 8.1 を選んで 「OK」

f:id:ill-identified:20190902235828p:plainf:id:ill-identified:20190902235840p:plain
(左) 文字化けした場合 (右) 英語ロケールで起動した場合

Metro: 2033, Last Light もたぶん同じ方法で大丈夫だろうと思う.

その他, proton で特に問題なく機能したタイトル

S.T.A.L.K.E.R. Shadow of Chernobyl

確認はしてないが, ゲームエンジンが同じはずなので Clear Sky と Call of Pripyat もたぶん大丈夫

ウィッチャー 3 ワイルドハント (The Witcher 3: Wild Hunt)

ゲームパッドも機能した

ダークソウル 3 (Dark Souls III)

ゲームパッドも機能した. なお, 最近のタイトルでは珍しく Steam Cloud に対応していないので, セーブデータの移植には注意 (それともたまたま自分の買ったタイトルに Cloud 対応が多いだけ?)

ニーア・オートマタ (Nier Automata)

ゲームパッドも機能した

A Plague Tale: Innocence

ゲームパッドも機能した

ヒットマン (Hitman)

全て問題なし. オンライン接続も機能した.


*1:multiverse リポジトリの登録が必要. 殆どの人は登録してると思うが一応: ‘sudo add-apt-repository multiverse; sudo apt update‘ で.

*2:一部のタイトルはチェックを入れなくても「プレイボタンが表示される」例えば, ダークソウル3とか. 公式が動作確認したかどうか?

*3:これは windows でも mod いじってたときはよく表示がおかしくなったのでめんどくさい

*4:ID は https://steamdb.info/ で検索できる

*5:インストール方法によっては ‘$HOME/.steam/steamapps/compatdata/‘ 以下になったりする