ES-DEとRetroArchでセルフホストのレトロゲームハブを構築する

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

ホームラボ・アーケード:眠っているハードウェアの再活用

クローゼットの奥に、使わなくなった Raspberry Pi 4 や古い Dell Optiplex が眠っていませんか?多くのホームラボ愛好家はファイルストレージやホームオートメーションに注力しがちですが、そうしたハードウェアを中央集約型のゲームマシンに変えることには、独特の達成感があります。専用のコンソールを購入する代わりに、ローカルネットワーク経由で家中のどこからでも遊べるシステムを構築してみましょう。

ゲームサーバーの構築は、ハードウェアの最適化や低遅延ネットワークについて学ぶ絶好の機会です。これは単にゲームをプレイするだけではありません. 15ms以下のラグで、あらゆる画面に16ビット時代のノスタルジーを届けることができる、高性能なストリーミングサーバーを構築するプロジェクトなのです。

クイックスタート:5分でできる基礎構築

Ubuntu 22.04 や Raspberry Pi OS のような Debian ベースのシステムを使用している場合、開始は非常に簡単です。「エンジン」として RetroArch を使用し、インターフェースとして EmulationStation-DE (ES-DE) を使用します。

1. RetroArch のインストール

sudo add-apt-repository ppa:libretro/stable
sudo apt update
sudo apt install retroarch

2. EmulationStation Desktop Edition (ES-DE) の取得

ES-DE のウェブサイトから AppImage または DEB パッケージをダウンロードします。専用サーバーとして運用する場合、通常は DEB パッケージの方がシステムへの統合がスムーズです。Raspberry Pi を使用している場合は、必ず ARM64 バージョンを選択してください。

3. 初期のディレクトリ設定

ES-DE を一度実行して、必要な設定ファイルを生成します。

./ES-DE_x64.AppImage

実行すると、ROM の保存パスを尋ねられます。PlayStation 1 や Dreamcast のタイトルをホストする予定がある場合は、専用のパーティションか、少なくとも 128GB 以上の空き容量がある外付け SSD を使用することをお勧めします。

セットアップ:コアエンジンの設定

RetroArch は強力ですが、そのメニューシステムは迷路のようになることがあります。このソフトウェアは「コア」と呼ばれる動的ライブラリをコンソールハードウェアとして使用します。動作をスムーズにするために、これらのコアの処理を自動化する必要があります。

ネットワークストリーミング向けの最適化

RetroArch を開き、Settings(設定) → Drivers(ドライバ)へ進みます。最新の統合グラフィックスを使用している場合はビデオドライバを vulkan に、古いハードウェアの場合は glcore に切り替えます。この変更により、ネットワークプレイ中の入力遅延が大幅に削減されます。

次に、Online Updater(オンラインアップデーター) → Core Downloader(コアダウンローダー)を使用して、以下の信頼性の高いデフォルト設定を取得します。

  • NES: Mesen
  • SNES: Snes9x (Current)
  • PlayStation 1: DuckStation (1080pへのアップスケーリングに最適)
  • GameBoy Advance: mGBA

ES-DE とライブラリの紐付け

ES-DE はビジュアルフロントエンドとして機能します。~/ROMs/snes のような特定のサブフォルダ内の ROM をスキャンします。ここで重要なのは、命名規則を綺麗に保つことです。ファイル名が正しく設定されていれば、ES-DE はコレクション全体に対して高品質なボックスアートや30秒のビデオプレビューを自動的に取得してくれます。

ゲームチェンジャー:あらゆるデバイスへのストリーミング

セルフホスト」の利点は、モニターに縛られないことです。ベッドでタブレットを使ったり、キッチンでノート PC を使ったりしてプレイできます。これを実現するために、サーバー側で Sunshine を、クライアント側で Moonlight を使用します。

1. Sunshine のインストール

Sunshine は GameStream プロトコルを実装した強力なホストツールです。AMD、Intel、Nvidia のハードウェアで動作します。

# SunshineのGitHubから最新の.debパッケージをダウンロードする
sudo apt install ./sunshine-linux-amd64.deb

https://localhost:47990 からウェブ設定ツールにアクセスします。ここでリモートデバイスとのペアリングを行います。

2. Sunshine へのコンソールの追加

Sunshine のウェブ UI で Applications タブに移動し、新しいエントリを追加します。

  • Application Name: Retro Console
  • Command: /path/to/ES-DE_x64.AppImage

これで、スマートフォンやテレビで Moonlight アプリを開くと、「Retro Console」が起動可能なアプリとして表示されるようになります。設定はこれだけです。

3. コントローラーの管理

Moonlight は、クライアント側のコントローラー入力を仮想 Xbox コントローラーとしてサーバーに渡すという重役をこなしてくれます。RetroArch は通常、xinput ドライバを介してこれを即座に認識するため、手動のマッピングは不要です。

実践から学んだヒント

私はこの構成を数年間運用してきました。トラブルシューティングとフラストレーションを解消するための3つのヒントを共有します。

BIOS の重要性

NES や SNES のゲームは即座に動作しますが、PS1、Saturn、Dreamcast などのシステムには BIOS ファイルが必要です。これらは ~/.config/retroarch/system に配置する必要があります。これらがないと、画面は真っ暗なままです。特定の MD5 が一致する BIOS ファイルを探し回るのは骨の折れる作業なので、私はこのフォルダの検証済みバックアップをメイン PC に保存しています。

安定性のための有線接続

サーバーは必ずイーサネット(有線)で接続してください。Wi-Fi 接続のタブレットにストリーミングする場合でも、ソース側が有線であるだけでジッター(遅延の揺らぎ)を 50% 削減できます。ビデオがカクつく場合は、Moonlight の設定でビットレートを 20 Mbps に制限してみてください。2D のレトロゲームであれば画質の低下は感じられませんが、安定性は劇的に向上します。

セーブデータの自動バックアップ

SD カードの破損で『ファイナルファンタジーVII』の40時間の進行状況を失うのは、絶対に避けるべき「儀式」です。RetroArch は .srm.state ファイルを特定のディレクトリに保存します。簡単な cron ジョブを使用して、これらを毎晩 NAS やクラウドストレージに同期させましょう。

# 毎晩午前3時にセーブデータをNASに同期する
0 3 * * * rsync -av --delete ~/.config/retroarch/saves/ /mnt/nas/backups/game_saves/

このセットアップにより、あなたのホームラボは実用的なエンターテインメントセンターへと進化します。ゲームの歴史を自宅で守り続けながら、仮想化やネットワークチューニングを学ぶための実践的な方法と言えるでしょう。

Share: