Steam Deck は 認定された大成功に成長しました。
数百万台が販売されたこのデバイスは、PC ゲームに対する私たちの考え方を変え、多数のクローンを生み出し、ハンドヘルド ゲーム デバイスの未来を確保しました。数十億ドル規模の企業の支援があれば、それほど驚くべきことではないかもしれない。
しかし、Steam Deck を動かしたものの背後には語られない物語があります。これは、この規模で Linux ゲームを動作させるというパズルを解き明かしたエンジニアリングの情熱の核です。その大部分は、1 人の独立系開発者 ( ニーア オートマタ と呼ばれるゲームへの愛情を持つ男性) と、Linux ゲームを次のレベルに引き上げようとするコミュニティから始まりました。
謙虚な起源
昨年の Steam オータム セール中に、私は Nier: Automata を購入することにしました。 2017 年のジャンルを超えたアクション アドベンチャー ゲームは、Digital Trends の のリストに載っています。私は PlayStation 4 で少しプレイしたことがありましたが、PC で購入したことはありませんでした。 Steam でゲームを購入するときはいつものように、ゲームが Steam Deck でどのように動作するかについて情報を調べたところ、 この Reddit スレッド を見つけました。
ゲームの動作は素晴らしく、これは私が週に数回、30 分間のセッションをゆっくりと進めていくうちに学んだことですが、このスレッドの最初のコメントが強迫観念の始まりでした。「 ニーア オートマタ は 80 歳」 Linux ゲームが今ほど優れている理由の % (おそらく 90%)。 DXVKの歴史を見てみましょう。簡単に言うと、ある男の 2B に対する愛が、今日私たちがこのような素晴らしい DirectX 変換レイヤーを持っている理由なのです。」
初心者にとっては理解すべきことがたくさんありますが、そのコメントを見つけたとき、私は夢中になりました。なぜなら、コメント投稿者は正しかったからです。Linux ゲームはここ数年で根本的な変化を遂げまし た 。これまで、DirectX は克服すべき主なハードルでした。 PC ゲームの大部分は Microsoft の DirectX アプリケーション プログラミング インターフェイス (API) を使用していますが、ご想像のとおり、これは Windows でのみ動作します。ゲームは API に命令を送信し、ハードウェアでの作業を準備します。ほとんどのゲームが DirectX で動作するように設計されていることを考えると、Linux 上では、少なくともネイティブではプレイできないことを意味します。
長年にわたり、主な回避策は Wine として知られる互換性レイヤーでしたが、サポートされるゲームには依然として当たり外れが非常に多かったです。これは、当時の Wine のゲーム用途によるものです。 DirectX 命令を受け取り、それを OpenGL API に変換します。古いゲームやそれほど要求の厳しいゲームでは機能しましたが、より複雑な API 命令を利用する最新のタイトルではパフォーマンスに大きな影響が発生しました。
Linux ゲームの状況が本格的に変わり始めたのは、2016 年に Vulkan と呼ばれるクロスプラットフォーム API が登場してからです。 OpenGL を構築したのと同じコンソーシアムによって作成された Vulkan は、DirectX 12 のようなものと同様に、プログラマーが GPU をより詳細に制御できるように設計されました。ゲームがますます複雑になる中、Vulkan のような低レベル API は、次のような場合にパフォーマンスの同等性を実現する鍵となりました。 DirectX 命令の変換。
Valve は Linux の取り組みを長年サポートしてきましたが、Vulkan は転換点となりました。 Vulkan がリリースされたのと前後して、Valve は、Steam に直接統合される互換性レイヤーである Proton と呼ばれる Linux ゲームを強化する独自の取り組みを開始しました。そして、まさにそのようにして、バルカンとプロトンからスチームデッキまでまっすぐに線を引くことができます。 「Vulkan は間違いなくパズルの重要なピースです」と、Valve 開発者の一人である Pierre-Loup Griffais 氏は電子メールで私に説明してくれました。
しかし、Valve だけがそれを成し遂げたわけではありません。実際、Proton は、オープンソースの理念に対する同社自身の取り組みに基づいて、いくつかのオープンソースの翻訳レイヤーを 1 つのパッケージにバンドルしています。全体は Wine をベースに構築されていますが、ゲームには DirectX 12 用の VKD3D と OpenGL 用の Zink が使用されます。ただし、大部分のゲームを引き受けるようになった重要なテクノロジーがあります。
これは DirectX 11 から始まり、現在では DirectX 10 と DirectX 9 も含まれています。プロジェクトの名前は DXVK で、これは「3D アプリケーションの実行を可能にする、Direct3D 9/10/11 用の Vulkan ベースの変換レイヤー」であると自称しています。 Linux では Wine を使用します。」
創設以来、数え切れないほどの貢献者が参加してきましたが、最初は非常に小規模でした。首謀者はフィリップ・レボーレというドイツ人開発者で、彼によれば、これは情熱的なプロジェクトとして始まったという。
ニーアがすべてを変えた方法
「このプロジェクトを本格的に始めたのは、大学を卒業して就職活動を始めた頃でしたが、当初は趣味のプロジェクト以上の意味はありませんでした」とレボーレ氏は語った。 「それでも、初期の開発は速く、私は自分の進捗状況を小規模な Discord コミュニティと共有しました。その結果、より重要なマイルストーンのいくつかが Phoronix に転送されました。」
馴染みのない方のために説明すると、Phoronix は Linux ハードウェアのニュースとレビューに特化した Web サイトです。その名前を覚えておいてください。
2018年の GamingOnLinuxのインタビュー によると、Rebohle氏は「常にグラフィックスプログラミングに興味を持っていた」が、主に趣味のプロジェクトをいじっていたが、Rebohle氏自身の言葉を借りれば、「役に立つものには決して発展しなかった」という。 DXVK は、Linux でのゲームの現実に対する不満から始まりましたが、Rebohle が「特定のゲームを本当に動作させたかった」という理由もありました。それが 『ニーア オートマタ』というゲームでした。
Rebohle 氏は、DXVK の最初のリリースから数日後の 2018 年初頭、 GamingOnLinux フォーラム で自分自身を「ニーアに関してはちょっとミーハー」だと述べていました。しかし、レボーレがこの試合を気にかけていただけではない。開発者と話をすると、 『ニーア オートマタ』が 独特の課題を提示していることは明らかでした。
「そもそも Nier は、私が D3D11 API の学習とデバッグに取り組むきっかけとなったゲームです。当初は、AMD ドライバーのバグにより、私の RX 480 上の Windows でさえ動作しなかったためです」と Rebohle 氏は語りました。
Nier: Automata は 非常にシンプルな DirectX 11 ゲームなので、Rebohle はそれほど手間をかけずに Linux 上でタイトルを実行できます。 PC ポートには Windows 上でも大きな問題があり、特に Rebohle 氏が言及した AMD ドライバーのバグはその問題でした。しかし、何よりもまず、「本当に素晴らしいゲームだ」とレボーレ氏は語った。
「最終的に、Wine の OpenGL ベースの D3D 変換を使用して Linux 上で実行し始めたとき、速度が遅く、適切にレンダリングされませんでした。そこで、より本格的なデバッグを行い、その過程でかなり多くのことを学びました。以前に Vulkan を試したことがあり、DXVK のアイデアはこのプロセス中に生まれました」と Rebohle 氏は言いました。
開発は 2017 年末に始まりましたが、2018 年 1 月までに、Rebohle と貢献者のグループはすでに Linux 上で Nier: Automata を稼働させていました。 Phoronix はこのニュースを共有し 、その直後、Rebohle は Windows API を Vulkan に変換するオープンソース プロジェクトにフルタイムで取り組む契約を Valve と締結しました。 「記事が公開されてからすぐに、Valve の担当者から連絡があり、請負業者としてフルタイムでこの仕事に取り組みたいかどうかを尋ねられました」と Rebohle 氏は語った。
開発者は現在も Valve と協力しており、主に VKD3D-Proton として知られる DirectX 12 変換レイヤーに貢献しています。
Rebohle は DXVK を立ち上げ、引き続き主任開発者ですが、プロジェクトに貢献した他の開発者を強調することが重要です。 GitHub プロジェクトには現在 137 人の貢献者が名を連ねており、コミュニティの努力がなければこのプロジェクトは今日の形にはならなかったと言っても過言ではありません。それでも、 『ニーア オートマタ』がなかったら、それは始まらなかったかもしれません。
「正直言って言うのは難しいです」とレボーレは私に言いました。
Steam Deck の特別な理由
「なんてことだ。言葉は申し訳ありませんが、正直に言うと、今私は体が震えています。これをどのように処理すればよいのかよくわかりません。」
これは、GamingOnLinux の編集長である Liam Dawe が、2018 年に Proton の最初のリリースについて ニュース投稿に書いた 返信です。投稿に寄せられた 500 件を超えるコメントを読むと、興奮と緊張が高まっているのがわかります。このニッチなコミュニティが主流になろうとしているという認識が生まれ始めています。
わずか 4 年後、Steam Deck が登場し、Linux ゲームの世界は永久に変わりました。
Valve は Proton なしでも Steam Deck を構築できたでしょうが、それが成功したとは想像しにくいです。どうすればわかりますか?そうですね、証拠の 1 つは Steam Machine の失敗です。 Valve は 2015 年に Steam Machine をリリースしました。これは、Valve 独自の Linux ベースの SteamOS で動作する、手頃な価格のコンソールのような ゲーム PC として構築されました。発売から半年後、Valve が販売した Steam Machine の販売台数は 50 万台未満で、 このデバイスを「水没した」と呼ぶ人もいます 。
失敗についてはさまざまな説明が考えられますが、Valve によると、問題の 1 つは、Linux ゲームの準備が整う前に導入しようとしていたことです。 IGN とのインタビュー で、Valve デザイナーの Scott Dalton 氏は次のように述べています。「Steam Machine には、鶏が先か卵が先かという典型的な問題が常にありました。それが私たちを Proton の道に導き、今では実際に動作するゲームがすべてここにあります。」
Steam Deck の開発において、Valve は、より多くのネイティブ Linux ポートが出現し始めることを黙って期待することはできず、開発者に自社のプラットフォーム専用のゲームを作成することを要求することもできませんでした。 Valve は、Steam Machines の経験を通じて、それがどのように失敗するかを理解しました。 Steam デッキをサポートするにはゲームのバックログが必要でしたが、そのバックログを達成する唯一の合理的な方法は、Linux の堅牢な互換性レイヤーを使用することでした。
スチームデッキが成功するためには、プロトンも努力する必要があったことは明らかです。 Valve は、Steam Deck がリリースされる 3 年半前の 2018 年 8 月に Proton を最初にリリースしました。今では Proton を通じて何千ものゲームをプレイできますが、当時、Valve は Doom、Final Fantasy VI、Star Wars: Battlefront 2、 そしてもちろん Nier: Automata など、サポートされているタイトルを少数しかリストしていませんでした。
それ以来、何千人もの開発者が Proton または Proton が構築するさまざまな基盤の 1 つに貢献してきましたが、DXVK が今日の Proton の重要な部分であることは否定できません。これは DirectX 11、DirectX 10、および DirectX 9 ゲームに使用されており、DirectX 12 が最新バージョンであっても、これら 3 つの API が Steam で見つかるゲームの大部分を占めています。
DXVK が影響を与えたハードウェアは Steam Deck だけではありません。 Intel は、古い DirectX 9 命令をより最新の Vulkan API に変換することで、Arc GPU 上の DirectX 9 ゲームに DXVK を活用しています 。
Rebohle の DXVK における予期せぬ貢献は、ゲーム開発の世界に定着しました。これは、オープンソース開発の強みを示す美しい図となっています。
Linux ゲームには安全な未来がある
DXVK の起源には魅力的なストーリーがありますが、Steam Deck が単独では決して実現しなかったというわけではありません。 Valve の Griffais 氏は、DirectX 11 を動作させるために他のプロジェクトが進行中であり、もし DXVK が現れなければ、「Vulkan プロジェクトよりも他の DirectX 11 プロジェクトのいずれかが優先されただろう」と語った。
Valve は DXVK よりも前から Proton を開発していたことは明らかであり、おそらく Steam Deck の計画も持っています。しかし、それはうまくいったでしょうか?サポートは今と同じくらい良いでしょうか?どれくらい時間がかかったでしょうか?それはスチームデッキ全体にどのような影響を与えたでしょうか?確かに、DXVK が決して Proton の一部ではないという別の現実がありますが、それは起こったことではありません。 DXVK は Proton の基礎的なコンポーネント、つまり Steam デッキに進化し、 ニーア オートマタは その中で重要な役割を果たしました。
Griffais 氏は、「DXVK は Proton にとって非常に重要です」と述べており、Valve は「Proton にとって DXVK から離れる計画はありません」と述べています。
その結果、Linux ゲームは現在、2018 年初頭とは大きく異なる状況にあります。未来がこれほど明るく見えたことはありません。これは、ある開発者の Nier: Automata への愛から始まりましたが、 それ以来、この取り組みはさらに大きなものに成長しました。結局のところ、それがオープンソース開発を特別なものにしているのです。誰の指紋が最終製品に反映され、テクノロジーの未来を形作るのに役立つかはわかりません。

