LinuxやSteamDeckでSteamゲームをプレイする時の必須ツール「steamtinkerlaunch」の紹介

自分はGentoo Linuxで大体何でもやる様にしているので、PCゲームも大体はそのままGentooでやってます。

LinuxでSteamを遊ぶ時にはsteamtinkerlaunchというツールがとても便利なので、これを入れておきましょう。

Linuxでゲームをする人間にとっては結構有名なツールなんですが、日本語の記事がほぼ存在しません。(まあ、皆あんまLinuxでゲームやらないよね……。)

この記事自体も需要がほぼ無さそうですが、せっかくノウハウを溜めたので書いておきます。

一応、この記事の内容はSteam Deckにも対応するので、Steam Deck買ったよって人は使えるかもしれません。

github.com

Arch Linuxを使っていればAURで簡単に入ります。他のディストリの場合はyadというgui toolkitだけインストールすれば、他の依存ツールはほとんど問題無くパッケージマネージャーで入ると思います。

依存ツールが入っていれば、後はDownloadしてきて、sudo make installでOKです。実体はでかいシェルスクリプトなので特にコンパイルとかも必要無い。

詳しいインストール方法はwikiに載っています。

steamtinkerlaunchは何をするのか

steamtinkerlaunchはゲーム本体のexeファイルを起動する前のコマンドラッパーとして起動し、関連ツールのインストールや起動を自動化してくれるツールです。

例えば、ReShadeというDirect3Dの出力にポストプロセッシングシェーダーを差し込んで、グラフィックを弄るツールがWindowsのPCゲームではしばしば使われていますが、それをLinuxのProtonで動作する様に自動的にインストールしてくれたりします。

バージョンの相性があったりするので、しばしば動かないReShadeのバージョンがあったりしますが。

その他にもvulkanのoverlay機能を使ってHUDを出してくれるMangoHudというツールがあるんですが、それを起動するための環境変数を自動でセットしてくれたり、gamescopeというmicro-compositorを使うためのコマンド引数を自動でセットしてくれたりします。

マニュアルでそういった起動コマンドやオーバーレイ表示のための環境変数設定をコントロールするのはかなり面倒なので、steamtinkerlaunchに一元管理してもらうと楽になります。

steamtinkerlaunchの使い方

インストールしたら、各ゲームを起動する時にsteamtinkerlaunchを噛ます様にsteamの設定を変更します。以下の様にゲームごとのプロパティ画面を開いて起動オプションにsteamtinkerlaunch %command%と入れておきます。

この状態で起動すると、こんな画面が出てきます。

真ん中下にあるGAME MENUという所をクリックすると、ゲーム毎の個別の設定画面に入れます。

めちゃくちゃ一杯出てきますが、使いたいものにチェックするだけでOKです。設定が終わったら右下のSAVESAVE AND PLAYを押して、設定を保存してからゲームを開始します。

その他の機能

ProtonやWineのカスタム版をDLしてSteamのcompatibility toolに登録してくれたり、Vortexというnexuxmodsが提供している様々なゲームのMODを管理するマネージャーをインストールしてくれる機能などがあります。ただVortexは何回か試したんですが、結構相性がシビアみたいで自分の環境では中途半端にしか動作しませんでした。MOD自体は普通に動くものが多いのでマニュアルでインストールすれば大体使えます。

個別のツールについて

ここからは自分がよく使っているツールをsteamtinkerlaunchで利用する方法について書いていきます。

ReShade

reshade.me

上の方で説明しましたが、Direct3DやVulkanをフックして、グラフィックにポストプロセッシングシェーダーをかけられる様になるツールです。

具体的には色調補正をしたりシャープネスフィルタを追加したり光源に対するブルーム効果を追加したり、Screen Space Global Illuminationという画面表示領域を基準にしたレイトレーシングを追加したりなどが可能になります。

どれぐらい画が違って見えるかは下に方に比較動画を置いてあるので、参考にしてみてください。

利用するにはsteamtinkerlaunchのGAME MENUにある以下のオプションにチェックを入れます。

このチェックが入っていると起動前にReShadeを自動的にDLし、DLしたInstallerからdllファイルを抽出しゲームディレクトリに自動で配置してくれます。

この時注意しなければいけないのは、ゲームの実行ファイル本体と同じディレクトリに配置する必要があることです。

ReShadeはDirectX関係のDLL読み込みに偽装してフック機構を注入するため、ディレクトリがズレてると読み込めません。

ゲームの中には起動前に独自のランチャーを噛ますものがあり、画面サンプルに利用しているCyberpunk 2077もそういったゲームになります。

ゲームの実体ファイルは、インストールされているルートの下にあるbin/x64以下にあります。そのため、steamtinkerlaunchの設定画面でArchitecture exeAlternative game exe pathを指定し、インストール先のディレクトリを調整する必要があります。

インストールするReShadeのバージョンは、~/.config/steamtinkerlaunch/global.confというファイルにRSVERSという設定項目があるので、そこを編集することでコントロールできます。

自分の環境では5.4.2で動作確認できています。

新しいバージョンに変更した時はReShade updateにチェックを入れておけば、新しいバージョンを再インストールしてくれるはずです。

インストールが正しく完了していれば、ゲームのexeファイルと同じディレクトリにdxgi.dlld3dcompiler_47.dllというファイルが追加されているはずです。またReShadeの設定ファイルであるReShade.iniというファイルも一緒に追加されます。

本来であれば、それに加えてwinetricksかprotontricksという設定ツールを使って、DLLの読み込み設定を弄っておく必要があるのですが、steamtinkerlaunchが自動的に設定を調整してくれます。

これらをマニュアルでやるのは結構大変なので、steamtinkerlaunchが無いと大分面倒臭いことになります。

各シェーダーのインストール

steamtinkerlaunchの起動画面にあるGame Shadersという項目をクリックすると、自動的にGitHubで公開されているいくつかのシェーダーをDownloadし、ゲーム毎に利用するシェーダーを設定できます。有効にしたシェーダーはシンボリックリンクで各ゲーム毎のシェーダーディレクトリに配置されます。

インストールした後にゲームを起動したらデフォルトでHOMEキーを押すことで設定画面が開きます。

そこでシェーダーの有効/無効やパラメーターを調整できます。

ReShadeの設定には、結構分かりにくいところがあるんですが、ReShadeに関しては結構日本語の解説記事があるので、そちらを参考にするのが良いでしょう。

MangoHud

github.com

画面上にGPU利用率やCPU利用率、現在のFPSなどを表示してくれるツール。

こんな感じ。

vulkanのoverlayを利用しているので、vulkanを利用するものなら何でも使える。簡単にテストしたいならMANGOHUD=1 vkcubeとか実行してみましょう。

インストール自体は自分でやる必要がありますが、インストールした後に、steamtinkerlaunchで以下の項目にチェックを付ければ自動で起動してくれます。

~/.config/MangoHud/MangoHud.confを編集することで表示項目を調整できます。

GameScope

github.com

Xwaylandを経由してDRM/KMSを利用し、ダイレクトにゲームフレームを画面に描画するためのmicro-compositorです。

何のこっちゃって感じですが、フレーム描画のオーバーヘッドを減らしてくれるツールという認識で良いと思います。同じfpsでも普通に起動するよりヌルっと動く様になります。

こちらもインストール自体は自分でやる必要があります。steamtinkerlaunchのGAME MENUで以下の項目にチェックを付けると起動時に自動的にgamescopeを間に噛まして起動してくれます。

gamescope自体の設定はsteamtinkerlaunchのトップ画面にあるgamescopeという項目をクリックすると設定画面が開きます。

また、gamescopeにはAMD FidelityFX CASやnvidiaのDLSSを利用したアップスケーリングを対応していない任意のゲームに適用できる機能もあるんですが、自分の環境でそれを有効にすると終了時にamdgpuドライバがハングして死ぬという厳しい問題があったので、アップスケーリングは常用できませんでした。

使える環境であれば、好きなゲームを簡単にupscalingできる様になります。

obs-vkcapture

github.com

Vulkanの画面描画をフックすることで、低オーバーヘッドで画面キャプチャしてobs studioに取り込むことができる様になります。

ArchだったらAURがあるし、Gentooもguru overlayでインストールできるので割と簡単に導入できます。

インストールしたら、steamtinkerlaunchでEnable obs-gamecaptureにチェックを入れます。

obsの入力ソースでゲームキャプチャを選択すると画面の内容がキャプチャできます。 普通にX Window経由でやるより少ないオーバーヘッドでキャプチャできるし、どのWindowを対象にするかも選択しなくていい。

諸々有効にして起動したらこんな感じ。

www.youtube.com

ちなみにサイパン2077はエッジランナーズ効果もあってか、MODがめちゃくちゃ一杯あって、ほぼ別ゲームぐらいまで弄れるので色々楽しい。 ReShadeの設定presetも沢山あるので、ブレードランナーっぽくしたりとかして雰囲気を変えて楽しめる。

レイトレーシングをシェーダーでやると流石に30fpsぐらい落ちますが、それ以外のシェーダーは複数有効にしても数fpsぐらいのオーバーヘッドで済みます。

という訳で、Linuxでsteamゲームをやる時の必須ツールとも言える「steamtinkerlaunch」と関連ツールの紹介でした。

やっぱ、あんまり需要無いとは思いますが……。