初稿:2018年8月23日
更新:2018年9月24日
PC ゲームプラットフォーム「Steam」でおなじみの Valve 社が(2018年)8月21日、Codeweavers 社と共同開発した Windows 専用ゲームを動かせる互換レイヤーを発表した。この互換レイヤー 「Proton (プロトン)」は Linux ユーザーなら誰もが知っている「Wine」 を改造したもののようだ。
Wine は Windows のシステムコールを Linux のシステムコールに変換するプログラムだ。よく Wine はエミュレーターと勘違いされるが、 OS が違うだけで同じ x86 アーキテクチャ上で動作しているためやってることは翻訳作業に近い。エミュレートとはコミュニケーション方法が全く違う生物の行動を真似てコミュニケーションを取るようなものだが、翻訳ならば人間同士なので言葉の意味を覚えれば比較的スムーズにコミュニケーションができるだろう。このため Linux 上であっても Wine を経由すれば Windows専用アプリケーションの高速な動作が実現できる。
Proton とは
Proton は Wine を改造した互換レイヤーであり、いろんなところからかき集めたプログラムや技術が詰め込まれている。中でも「DXVK」という DirectX API コールをリアルタイムで Vulkan のそれに変換するレイヤーが最大の特徴で、これのおかげで DirectX API で作られたゲームでも割と軽快に動作する。
もともと Vulkan と DirectX には機能的にそこまで大きな違いがないためだろう。相互に移植するのも難しくはないと言われている。
また OpenVR への対応や ゲームのフルスクリーンモードの取り回しを改善、 Steam 対応のコントローラのサポートも改善している。
Proton はオープンソースとして GitHub に公開されているので誰でも中身を見ることが出来る。ベータの段階でこんなにいろんなプログラムを Steam に統合できたことに驚いたが、2年の開発期間を要したそうだ。
まだ公開初期のテスト段階ではあるが下のリンクからテストに通ったゲームのリストが載っている。
Steam for Linux – Introducing a new version of Steam Play
使い方
使い方はごくごく簡単で左上のメニューから「設定」>>「Steam Play」で設定を行う。
「サポートされたタイトルでSteam Playを有効化」と「その他のすべてのタイトルでSteam Playを有効化」にチェックを入れ「他のタイトルに使用するツール:」で使いたい Proton のバージョンを選ぶ。
注意すべきは最新のグラフィックドライバをインストールしておく必要があることだ。ドライバが古いとあまり良い結果は得られないだろう。 Ubuntu などが標準のリポジトリに置いているドライバは6ヶ月〜1年くらい古いため、 PPA を利用する必要がある。
あとは各ゲームのページにアクセスしてダウンロードするだけだ。このようにダウンロードした場合でも Linux を使用しているとしてカウントされるのでゲーム開発者の目にも止まるだろう。
ちゃんとサポートできるのか?
Wine 自体が永久にベータ版みたいなところがあり、昨日動いていたゲームが今日突然動かなくなるということがある。これはゲーム側のアップデートによって起こることもあるし、Wineのアップデートで起こることもある。そしていつ修正されるかわからない。数カ月後かもしれないし数年後かもしれない。
Codeweavers である程度このビジネスモデルは成功しているかもしれないが、安易に動作可能リストに突っ込んでサポートしきれるのかが不安が尽きない。
また複雑な DRM やチート対策を施されたゲームは動作しない可能性が高いため、どれだけのメジャータイトルをサポートできるのかがわからないのが非常に気がかりだ。
BattlEye や Easy Anti-Cheat といったチート対策プログラムは Linux / Proton への対応を完了させており、ゲーム開発側がやることはボタンひとつ押して許可するだけだ。このような状況にもかかわらず Linux へのサポートを渋るゲームスタジオはたくさんある。
去年(2017年)、フォートナイト運営は Wine を使っていたユーザーのアカウントを警告もなしにいきなり停止した。 また Apex Legends 運営は Linux がチートの巣窟になっているとしてプレイを全面禁止した。ゲーム制作スタジオとの連帯も不可欠だろう。
macOS版はリリースされるのか
macOS 版のリリースは望みが薄いと考える。 Apple は Metal という誰も使いたくない独自の API の普及に拘っていて本気で Vulkan API をサポートする気はサラサラないようだ。 OpenGL もバージョン3で早々とサポートを打ち切ってしまい、ユーザや開発者が不便だろうが見てみぬふりをして放置している。
Proton にとって Vulkan API は最も重要なコンポーネントだ。 Apple がこれに正式対応しない限り macOS で Proton を使える日は来ないだろう。
追記:コメントしてくださった方の情報、 macOS でも Wine 経由で Vulkan を動かす方法があるようだ。おそらく Codeweavers が開発している MoltenVK のことだろうと思うが、自分で試したことがないのでここでは割愛させていただく。
Vulkan API普及までのつなぎか
ネガティブなことを書いてしまったが Valve は Wine の開発チームと協力し、 DXVK の開発者を雇ったりしている。なので Proton で培った技術は Wine にもバックポートされている。こうやって開発元のプロジェクトにきちんとフィードバックしていくことはなかなか難しく、あまり多くの企業がやっていないことだ。オープンソース・ソフトウェアをただの無料で使える道具だと思っている企業も多い。
Valve は Linux や OSS コミュニティに深い理解がある。そしてそれが行動にあらわれている。彼らがリーダーシップをとって開発を推し進めているのは素晴らしいことだと思う。
Wine コミュニティも非常に活動が活発で多い時では月に3回もマイナーリリースをするときもあり、VirtualBox や一部のオンラインゲームにも組み込まれていたりする。もっと光を当てられるべきプロジェクトだ。 こういうことをやってしまうと、互換レイヤー任せになってしまい Linux へ対応するタイトルが減るんじゃないかと心配している人もチラホラいるがその心配は最もだと思う。
しかし現状のゲーム開発情勢だと Linux に移植するのは大変な労力だ。少し前までは Windows 以外の開発は OpenGL 一択でよかったが Apple が OpenGL のサポートを事実上やめたことにより、古い OpenGL 3を使っている作品もある。 そして Linux よりも macOS への対応を優先するゲーム会社も多い。このため非常に低品質な移植が多い。 Unity で作られたものや一部の優秀なポート専門会社でつくられたもの意外は Wine で動かしたほうがマシ、という有様。
Valve はマルチプラットフォーム API である Vulkan を積極的に支援しているがまだ発展途上である。しかも低レベルAPIでの開発自体高い技術を要する。しかし協賛企業を見ればわかるが業界スタンダードなAPIになるのではないかと予想できる。そうなったら Windows でしかゲームが動かないという問題は7〜8割方消える。
Valve は今はとにかく Linux でゲームをやるユーザを増やしたいのだろう。ユーザが増えることでゲームデベロッパーは Linux を無視できなくなってくるし Vulkan API の普及の推進にもつながる。
Valve がどこまで力を入れてくれるかわからないがこのプロジェクトは非常に魅力的なので当ブログは応援しています。
― 了 ―
コメント
一応MacのwineでもVulkan動かす方法はあるらしい
コメントありがとうございます。記事に反映させていただきます。
Steam OSで動くタイトルを増やしたいってことなんだろうな