見出し画像

MGL週報 #68 - Pop!_OSお試しインストール

このエントリはゲーム開発用フレームワーク「MGL」の開発記録です。MGLはzlibライセンスの下に無償で提供されています。


Pop!_OSお試しインストール

以前にも既知の不具合として挙げた通り、MGLは現在gccでコンパイルできないという修正必須な問題を抱えています。その辺の事情は以前の週報で書いた通りです。

この問題を解決するにあたって、gccを標準的に用いているLinux系のOSを導入しようというのが今回の試みです。これは別にOSごと用意しなくても可能ではあるのですが、ちょうど手元に古いCPUとローエンドなGPUを積んだPCが余っているため、検証には丁度良いかと思った次第です。

それともう1つ、Valveの携帯型PC(ゲーム機と言うべき?)であるSteamDeckのOSもLinux系であるため、その検証も目的の一つです。あちらはManjaroベースであり、今回試すのはUbuntuベースのPop!_OSなので厳密に言えば同じではないのですが、SteamDeckにネイティブに対応させるにはLinuxの対応が必須であるという点では共通していると言えます。

(Linuxはカーネルであり、それを取り巻く環境によって色々と変わってくるのですが……これは語るとややこしいので割愛しましょう)

まとめると、MGLの不具合修正とゲームの動作検証用にLinux系のOSを用意したく、その場合は仮想環境よりもGPUを積んだ実機が良い。ちょうど手元に役目を終えたPCが眠っている。じゃあこれを使って検証しよう、という流れです。

Pop!_OSについて

先述の通りLinuxとはカーネル(OSの中核)の事であり、それを元に様々な環境を構築して初めてOSとして成り立ちます。この構成を指す言葉として「ディストリビューション」という言葉が用いられており、数多くのLinuxディストリビューションの開発が盛んに行われています。

今回導入するのは、Linuxディストリビューションの一つであるPop!_OSです。最近はPop!_OSのユーザー数が大きく伸びているらしく、ちょっと検索しただけでも日本語のページが結構ヒットします。(何だかnoteの記事が多いような……)

紹介している記事が多いのでここでは省略しますが、要するにSTEM教育、クリエイティブ、エンジニアリング、そしてゲームといった個人向け用途として扱いやすいようカスタマイズされたLinuxディストリビューション……と言えば何となく伝わるかもしれません。

現時点では最新の安定版である22.04 LTSの他に、大きな変更の入った24.04 LTSのアルファ版も頒布されています。両者の大きな違いはデスクトップ環境の変更であり、22.04までは他のディストリビューションでも広く使用されているGNOMEであるのに対し、24.04ではCOSMICという独自開発のデスクトップ環境が採用されています。

実は今回は両方インストールして試してみたのですが、現時点では何か作業するとなると22.04が無難な選択です。と、いうのもアルファ版という事もあって日本語の対応が完全ではなく、その辺を整備しようとすると結構な労力になりそうなためです。今回は目的ありきの検証ですので、楽な方を選択しました。

それともう1つ、このPop!_OSの楽なところの一つに、GPUドライバが同梱されているという点もあります。インストールイメージがNVIDIA向けとIntel/AMD向けの2種類用意されていますので、環境に合った方を選択すればGPUドライバも自動で導入されます。最近の他のディストリビューションがどうなのかは分かりませんが、昔はこれが恐ろしく面倒だったのですよ。

インストール

Pop!_OSはISO形式のディスクイメージとして頒布されているため、これをダウンロードしてUSBメモリに書き込むことでインストールメディアを作成します。

インストールイメージのUSBメモリへの書き込みには、macOSを含むUNIX系のOSであればddコマンドが標準で利用可能です。Windowsには標準機能としては備わっていませんが、専用のツールがたくさんあるので調べればすぐに見つかるでしょう。ddコマンド自体もWindowsに移植されているみたいですね。

インストールメディアを作成したら、眠っていたPCに接続して起動します。既にインストールされているWindowsよりも優先的に起動するには起動直後に何らかのキーを押す必要がありますが、そのキーがメーカーによって異なるのが面倒なポイントです。大抵はF2かF12だった気がしますが、今回の検証用PCはESCキーでした。

無事にUSBからブートできると次のような画面が表示され、何かキーを押すと黒画面に文字がずらずらと流れます。この黒画面は昔から変わっていませんね。これを眺めていると初めてLinuxに触れた頃のワクワク感を思い出します。

USBメモリから起動した直後の画面
Linuxお馴染みの起動画面

Pop!_OSが起動するとインストーラーが立ち上がりますが、インストールせずともこのまま試用できるみたいです。インストール自体もクリーンインストールであれば難しい選択はなく、これなら迷う事も無さそうです。設定項目が少ない分、WindowsやmacOSよりも簡単かもしれません。

起動と同時にインストーラーも立ち上がる。このまま試用も可能らしい。

強いて引っ掛かる点を挙げるとすれば、ストレージの暗号化の選択でしょうか。これを有効にするとログイン前のOSそのものを起動する際にもパスワードを求められるようになります。この入力画面がそうとは分からずに困惑しました。

暗号化設定。 「Don't Encrypt」を選択するとスキップできる。
有効にすると電源投入時にこの画面になる。分かりにくいけどパスワードを求められている。

OSそのものがインストールされたら、後は好きなように設定を……としたいところですが、このOSはデフォルトでは日本語入力ができません。また、インストール方法にも若干の癖があるため、最大のハマりポイントはこの部分になるでしょう。反面、解決策の情報も収集しやすいため、22.04をインストールしたのであれば簡単に解決方法を得られるはずです。

実を言うと、最初にインストールした24.04はこの日本語入力の問題が解決できませんでした。その後すぐに22.04の検証に移ったためあまり深く調査はしませんでしたが、Fcitx5をインストールしたら右上のアイコンが増殖するようになったあたりで色々察して退却してしまいました。

最終的に22.04で色々と設定した結果が次のスクリーンショットです。

色々設定後のデスクトップ画面。ダークモードとフラットなデザインがモダンな感じ。

使用感は良好で、このまま違和感なく作業できそうな操作性でした。若干動作にもたつきがあり、たまに操作に引っかかりを感じる事がありますが、これは検証用のPCのスペックが低すぎる事が原因でしょう。GPUはともかく、CPUは今日のNUCの性能にすら届いていない可能性があります。

ひとまずMGLとツール類のビルドが行えれば作業になるので、準備は主にコンソール上でのビルド環境の構築となります。MGLは想定通りビルドエラーとなり、ツール類はビルドが通って動作確認も行えました。後はMGLのビルドエラーを取り払えば、とりあえず今回のメインクエストはクリアです。

Protonの検証

今回Linuxを導入したもう1つの理由として、SteamのProtonがどんな感じかを試してみたかったというものがありました。

Protonを簡単に説明すると、Windows向けのゲームをLinux上で動かすための技術です。その基底にはWineというWindowsAPIの互換レイヤーが用いられており、これをSteamクライアントから簡単に扱えるようにすることで、既存のWindows向けゲームに手を加える事なくLinuxで動作可能にする……と言うと若干の語弊があるように思えますが、まあ大体そんな感じのものです。

先にSteamDeckはManjaroベースのLinuxであると書きましたが、それでも既存のWindows向けゲームが動作する理由がこのProtonによるものです。すなわち、ゲームをSteamDeckに対応させたい、けどLinux向けの対応は難しいとなった場合、このProtonこそが要になってくるのです。

Protonを用いた各ゲームの互換性についてはProtonDBというサイトによってデータベース化されているため、こちらが参考になるでしょう。

この機能を利用するには、まずSteamクライアントからProtonを有効にする必要があります。Steam設定から「互換性」を選び、「他のすべてのタイトルでSteam Playを有効化」の項目を有効にします。これによってライブラリ内のWindows向けのゲームがインストールできるようになります。

Steamクライアントの互換性に関する設定画面。デフォルトでは無効化されている。

試しに手持ちのゲームをいくつか試してみたところ、互換レイヤーを用いているとは思えないほど普通に動作していました。入出力に目立った遅延もなく、推奨スペックを満たしていればフレームレートも安定しています。これはGPUドライバがちゃんと機能している事の証でもあります。

また、Xboxコントローラを有線で接続するだけで問題なく使用できたのはちょっと意外でした。macOSは主にライセンス的な問題があるらしく、無線じゃないと使用できないのですよ。

「Fallout 76」は人の少ない場所であれば60FPSに届き、人の集まるパブリックイベント中は40FPS台に落ちる。これは同じPCのWindowsでも同等だった。
精密なプレイが要求される「虫姫さま」も、少なくとも私の腕ではプレイに支障のあるような遅延は感じなかった。フレームレートも60FPSで安定。

気になった点としては、画面解像度の設定を4Kかつ150%にした場合、左上だけが拡大して表示される現象が多くのゲームで確認できました。

3840x2160、150%表示を設定して起動した「Fallout 76」のメインメニュー。表示がおかしい。
画面解像度を1920x1080に設定して起動し直したら正常に表示された。

これは互換性の問題かもしれませんし、アプリケーション側の問題の可能性もあります。と、言うのも、物理解像度と論理解像度が異なる環境に対応していないゲームはそれなりに多いのですよ。2Kや4Kといった高解像度ディスプレイがお手頃になったのはそう古い話ではないため、少し古めのゲームだと対応している方が珍しいかもしれません。(MGLはその辺対応済みですよ、とアピールしておこう)

意外に……と言っては失礼かもしれませんが、Protonが優秀なのを目の当たりにして、無理にネイティブ対応しなくても大丈夫かもという感じがしてきました。MGLのLinux対応は試験的な意味合いもあるため、いずれは行いたいと思っていはいますが、少なくともSteamDeckの対応は今のままでも十分に行えそうです。


その他

検証以外に行ったMGL関連の作業としては、主にドキュメントの加筆や修正くらい。週末こそはゼルダをプレイするつもりでしたが、家に持ち帰った仕事とこの検証で結局プレイできませんでした。

いいなと思ったら応援しよう!