本文へスキップ
メニュー
ワークフロースキル、tmux、毎日のループツールai-usagebar24のAIプロバイダーのクォータとリセット時刻ghpending未対応のプルリクエストとIssueを1つのリストにtclockコマンドウィジェット付きのターミナル時計Frankプロジェクト自分の困りごとを解決する実験ai-memoryコーディングエージェントの長期メモリai-jailAIコーディングエージェント用のOSサンドボックス学ぶ書籍『Competent Enough』恐れもハイプもなしに考えるAGI、仕事、学びAGIがどうでもいい理由出典付きの意見LLMの限界AIがコピーできるもの、できないものAIと学生基礎がこれまで以上に大事な理由ブログとベンチマークブログとLLMベンチマークニュースレターThe M.Akita Chronicles、毎週月曜日ポッドキャストAIについての長い対談を動画でゲームコードで管理するゲームコレクション、Omarchyで環境Omarchy、tmux、そして見送ったものフォロー
仕事のあとで

仕事ばかりではありません。私だって遊びます。

とはいえ、私にとっての息抜きは、もちろんゲームコレクションをソフトウェアプロジェクトにすることです。Steamのゲーム、エミュレーター、PC移植、デコンパイル、ファンゲーム、Modパックを、AIエージェントが1つのAnsibleリポジトリでインストールし、設定し、ドキュメントにしています。全部コンテナの中で動くので、Omarchyのデスクトップは依存関係を1つも目にしません。その上に自作のランチャーを載せて、全体をゲーム機のように使っています。

Fun to Drive:新型テスラ・ロードスターで80年代風レースゲーム

AIエージェントとバイブコーディングで作った小さなゲームです。発表されたばかりのテスラ・ロードスターが、コールドエア・スラスターとジャンプ付きで、80年代のおもちゃのダッシュボードの画面に映るアウトラン風の道を走ります。Playmates Fun-to-DriveやTectoyのTurbo Video Driverのようなおもちゃです。

ゲーム自身の音楽付きの、通しプレイです。
  • 2分、6分、10分のランを選び、時間切れまでにできるだけ多くの車を追い抜きます。各レースは、あなたの時計の季節と時間帯から始まります。
  • コールドエアのチャージを3つ集めるとスラスターを噴射でき、Jump Kickで車を飛び越えられます。ただし車の上に着地しなければ、の話です。
  • 机の上のおもちゃも反応します。ハンドルが回り、シフトレバーが動き、ぶつかるとダッシュボード全体が揺れます。
  • 晴れ、雨、雪。桜から冬の裸木まで季節ごとに変わる沿道と、東京のネオンからパリまでの背景。まれなイベントもあります。車を巻き上げるハリケーン、夜のUFOによる誘拐、そして時速88マイルを保てばタイムマシンです。
  • キーボード、振動付きゲームパッド、タッチで遊べます。RustとBevyで書かれ、WebAssemblyにコンパイルされてブラウザで動きます。

古いレースゲームを、もう一度遊べるように

好きなレースゲームのいくつかはアバンダンウェアです。どのストアでも売っておらず、現代のPCでは半日がかりの小細工なしには動きません。そこで、コーディングエージェントと自作のリバースエンジニアリングツールREAを使い、1本ずつランチャーを書きました。オリジナルのゲームには手を付けません。ランチャーはグラフィックス、コントローラー、画面、レジストリなど、周りで古くなった部分を直し、そのうえで現代のPCにできることを加えます。

各ゲームはご自身のコピーが必要です。ゲームのファイルを同梱するランチャーはありません。

  1. 現代のPCで動くScreamer。赤いスポーツカーが市街地を走り、オリジナルの周回カウンターとスピードメーターが表示されている。1995

    Screamerトリロジー

    以前 MS-DOSのゲーム3本。GOG版Screamer 2にはDOSでは動かないWindows用のGlideスタブが入っていて、エミュレーターを最高速で回すとアナログ入力がまったく効きません。

    • 本物の3dfx Glide。エミュレートしたVoodooを2倍の解像度で描画
    • FSRによるアップスケール、Hor+ワイド画面、描画距離の拡大
    • アナログ操作とCD音源
    • 100fpsの実験的なフレーム生成
  2. ワイド画面で動く1998年のColin McRae Rally。青いスバルが乾いた砂利道のステージを走っている。1998

    Colin McRae Rally

    以前 Windows 95向けに作られたゲーム。私の環境ではレジストリキー、XP互換モード、800x600に固定した画面、ゲームパッド用のキーボード変換が必要で、それでも800x600の4:3でしか動きませんでした。

    • 4K、Hor+ワイド画面、60fps。物理演算はオリジナルの25Hzのまま
    • HUD、メニュー、空、看板、車をAIでHDに描き直したアート
    • 最大3倍の描画距離
    • トリガーをペダルとして使用、振動にも対応
  3. ワイド画面で動くColin McRae Rally 3。フォード・フォーカスが森のステージを走っている。2003

    Colin McRae Rally 3

    以前 色の抜けた画面と、ディスクのコピープロテクトに縛られた公式1.1の実行ファイル。

    • SilentPatchで任意のアスペクト比のワイド画面、4KのHDインターフェース
    • 1.1の実行ファイルを再販版のDRMなし実行ファイルに変換
    • 最大16倍の異方性フィルタリングと調整可能な視野角
    • Linuxではオプションで色とガンマを補正
  4. 16:9で動くColin McRae Rally 04。三菱ランサーエボリューションが土ぼこりの立つ斜面のステージを走っている。2004

    Colin McRae Rally 04

    以前 16:9にしても見える景色が広がらず、グラフィック設定は2048x1536までで落ち、Alt+F4も効きません。

    • dgVoodoo経由で正しいジオメトリの16:9
    • 横向きのモニターを自動で選び、ウィンドウも正しく閉じられる
    • アナログトリガーと設定済みのコントローラー
    • fps上限とvsyncはオプション
  5. 16:9で動くColin McRae Rally 2005。青いスバルが森のステージを走っている。2004

    Colin McRae Rally 2005

    SDKから作成

    以前 Wineでは起動直後にクラッシュし、GOGのインストーラーもそこで止まります。DVD版はStarForceを使っているため対象外です。

    • GOGのインストーラーファイルから直接インストール
    • ゲーム自身のワイド表示による16:9
    • LinuxではDXVKで、約20fpsだったステージが1,000fpsを超える
    • セーブデータは専用フォルダーに保存
  6. 4Kで動くOutRun 2006。銀色のオープンカーが海辺の街の幹線道路を走っている。2006

    OutRun 2006: Coast 2 Coast

    以前 PC版はコミュニティの修正とディスクDRMの除去が必要で、「Rush a Difficulty」の冒頭2秒も欠けています。

    • OutRun2006Tweaksを固定のテスト済みバージョンで自動インストール
    • 4K、16倍の異方性フィルタリング、描画距離の拡大
    • 欠けのない「Rush a Difficulty」
    • オプションのHDテクスチャ、振動、トリガーのフル対応
  7. Colin McRae: DiRT。ラリーカーが森の中の砂利道で土ぼこりを上げている。2007

    Colin McRae: DiRT

    以前 スレッド数の多いCPUではどのレースを読み込んでもクラッシュし、コミュニティの修正を当てるとグラフィック設定がすべてリセットされます。

    • 多スレッドでのクラッシュを独自に修正し、設定はそのまま
    • Large Address Awareで2GBを超えるメモリを使用可能に
    • 9GBを二重にコピーせずハードリンクで済ませる
    • 4KのUltraプリセットとネイティブXInput
  8. Sega Rally Revo。赤いシトロエンがジャングルのぬかるんだコースで集団の先頭を走っている。2007

    Sega Rally Revo

    以前 パッチ4.060で入った2つのタイミングのバグによる常時のマイクロスタッター、GPUが2枚あるPCでの黒画面、そしてWineでは動かない設定ツール。

    • クリーンルームで書いたスタッター修正。99.9%のフレームでレース時計が実時間との差1ms未満に収まる
    • 4K、Ultra画質、21:9と32:9
    • 60fpsまたは120fpsの上限
    • ネイティブXInputと振動
  9. フルスクリーンで動くDiRT Rally。赤いミニが岩だらけの山道を走っている。2015

    DiRT Rally

    SDKから作成Linuxのみ

    以前 Feralによる2017年のLinux版は、Ryzen 5000以降では起動直後にクラッシュし、今のLinuxにはもうないライブラリを必要とし、2022年に販売終了しました。

    • Rustで書いた小さなライブラリが、ゲームに手を加えずクラッシュを修正
    • 古いライブラリを同梱し、ゲームにだけ見せる
    • Feralの起動前ウィンドウを飛ばし、4Kで起動
    • 8BitDoなどのコントローラーがゲーム自身の一覧に表示される
直し方はブログで

どれも実験的です。Linux上で、RTX 5090とXbox系コントローラーを使って1本ずつ通しで確認しました。ネイティブのWindowsではまだ1本も試していないので、試した方は実行ファイルのSHA-256とログを添えてIssueを立ててください。

そして、レシピはSDKになった

どのランチャーも前のものをコピーして始まり、コピーごとに独自のバグを抱えて離れていきました。そこで、いつも人に勧めている順番を守りました。先にアプリ、フレームワークは後です。rea-launcher-sdkにはランチャーに共通する部分が入っていて、コーディングエージェントが扱う前提で書かれています。

私がたどった順番

  1. 同じ種類のプロジェクトをいくつも作り、それぞれが自分の実際の問題を解く。
  2. それらを並べて比べる。
  3. すべてが同じ土台に乗るまでリファクタリングする。
  4. そこで初めて、共通部分をフレームワークとして切り出す。
9
このSDKで作ったランチャー、対応ゲームは11本
1,223
SDKとランチャー全体のテスト、すべて成功
95%
SDK自身のコードの行カバレッジ、テストは310件
~4
SDKから作ったランチャー1本あたりの時間。それ以前は8〜18時間

2026年11月2日のブログ記事で数えたものです。

自分のゲームのランチャーを作る

SDKをクローンし、エージェントにREAを追加して、インストール済みのゲームを指定します。エージェントがコミュニティの修正を調べ、リバースエンジニアリングをして、コードを書きます。4つのチェックポイントで止まってあなたの判断を待ち、承認なしには何も公開しません。Claude Code、Codex、opencode、Cursorで動きます。

ツール
cd ~/Projectsgit clone https://github.com/akitaonrails/rea-launcher-sdk# REA, the reverse engineering MCPnpx rea-agents setup# Claude Code onlyrea-launcher-sdk/scripts/install-skills

~/Projects/rea-launcher-sdkのSDKを使って、Need for Speed: Porsche Unleashed(PC、2000年)用の新しいreaランチャーを作ってください。AGENTS.md、docs/STANDARDS.md、docs/playbooks/new-launcher.mdを読み、プレイブックをフェーズごとに進めてください。ゲームは/mnt/games/NFSPUにインストールされています(読み取り専用。リポジトリには絶対にコピーしないこと)。まずコミュニティの修正を調べ、コードを書く前に見つけたものを見せてください。私に確認せずにpushや公開はしないでください。

SDKのREADMEをもとにしたプロンプトの例です。

AIでレトロゲーム

Omarchyで動く私のゲームランチャー:Banjo-Kazooie Recompiled、OutRun、Colin McRae Rallyシリーズ、Donkey Kong Country、DOOM 3など52本のカバーを並べた全画面のグリッド。上部にカテゴリのチップと並べ替えボタン。
デスクトップ上のランチャー。ゲームも移植版もエミュレーターも、中で何が動いていようと1つのグリッドに並びます。

ホストはきれいなまま

エミュレーターやWindowsゲームは、32ビットライブラリ、Wineのビルド、AURパッケージ、互いにぶつかり合うランタイムのバージョンを引き連れてきます。そのどれもデスクトップには触れません。Steamも含めてすべてgamingという名前のArch Linuxのdistrobox 1つの中にあり、ホストにはデスクトップに必要なものしかありません。

2つのパネル。コンテナなし:ホストのタワーがもつれたライブラリのブロックに埋もれ、赤い「競合」の警告が出ています。distroboxあり:同じホストは緑の点が付いてきれいなまま。隣のオレンジ色のgamingコンテナに同じブロックが整然と並び、「いつでも再構築」と書かれたAnsibleのレシピがあります。
  • Steamはボックスの中で動き、ライブラリとProtonのプレフィックスは専用ディスクに置いています
  • NVIDIAドライバーはパススルーし、32ビットライブラリの例外的な問題1つはホストではなくランチャー側で直しています
  • デスクトップエントリーはボックスが生成し、ホストの小さなスクリプトが検証してインストールし、消えたアプリのエントリーを削除します
  • セーブデータはNASにミラーし、必要なときに復元するので、ボックスを消しても何も失いません

冪等だから、壊せる

エミュレーター、設定、パッチ、Modセットはどれも1つのAnsibleロールです。playbookを2回実行しても何も変わらないので、気軽に実験したり、エミュレーター1つの設定だけ戻したり、ボックス全体を一から作り直して同じマシンを取り戻したりできます。

ansible/フォルダーより
ansible-playbook site.yml                 # the whole box, from scratchansible-playbook site.yml                 # again: nothing changesansible-playbook reset-configs.yml --tags esde   # reset one frontendansible-playbook backup.yml && ansible-playbook restore.ymlansible-playbook site.yml --tags verify   # post-setup checks
96
docs/にあるメモ(ゲーム、移植、修正ごとに1つ)
497
2026年4月11日以降のコミット

調べるのも書き残すのもAI

移植版、リコンパイル、手ごわいWindowsゲームのそれぞれについて、エージェントが情報源を調べ、Ansibleロールを書き、入手先、設定方法、うまくいかなかったことをメモに残しました。SteamのゲームにはProton用の互換性データベースがあり、ローカルでの修正にはそれぞれ根拠となる情報源が付いています。

使い方

いちばん簡単なのはエージェントに任せることです。リポジトリをクローンし、その中でClaude Codeを開いて、欲しいコンテナとゲームを伝えてください。プレイブックとノートはまさにそのために書かれています。

クローンして開く
git clone https://github.com/akitaonrails/distrobox-gamingcd distrobox-gamingclaude

ES-DE、Dolphin、PCSX2入りのgamingコンテナをセットアップして。ROMとBIOSは/path/to/your/gamesにある。

リポジトリにはゲーム、ROM、BIOS、その他のバイナリは含まれていません。自分で用意して、その場所をエージェントに伝えてください。

ボックスの中身

エミュレーター

フロントエンドはES-DE。単体のshadPS4、Dolphin、PCSX2、DuckStation、Flycast、xemu、RPCS3、PPSSPP、Azahar、Eden、Cemu、Supermodel、そしてコア付きのRetroArch。

PC移植、デコンプ、リコンプ

Ship of Harkinian、2Ship2Harkinian、Starship、SpaghettiKart、Render96ex、Unleashed Recompiledなどのネイティブビルド。

Windowsゲーム

Metal Gear Master Collectionなどのゲームを、Wineで管理してインストール・修正しています。古いレースゲームは、上で紹介した自作ランチャー経由で入るようになりました。

Modも再現可能に

ゲームごとのNexusModsのModセット、PS3とSwitch用のDLCとパッチのインストーラー、ゲームごとのRPCS3設定。

Omarchy用に作った自作ランチャー

omarchy-games-menuは、OmarchyとHyprland向けのSteam風の全画面ランチャーです。gamingリポジトリが書き出すデスクトップエントリーを読むので、新しいゲームは勝手に表示され、すべてがキー1つで呼び出せます。

3つの層:ホストの板、エミュレーターとPC移植、Ansibleのレシピが入ったgamingというオレンジ色のdistroboxコンテナ、そして一番上にカバーアートが並ぶランチャーのグリッド。
  • RustのCLIであるogmがスキャン、カタログ、保存を担当し、QuickShellのオーバーレイがグリッドを描きます
  • カバーアートとメタデータはSteamGridDBから取得し、移植版とリコンプの新しいリリースはGitHubでチェックします
  • プレイ回数、名前、追加日、発売日で並べ替え。どこで文字を打っても絞り込めます
  • Hyprlandのモニター設定に合わせて拡大縮小し、Super+Gのようなキー1つで開き、ゲームは専用のワークスペースに全画面で起動します
ターミナル
yay -S omarchy-games-menu-binogm scan && ogm refreshgames-menu   # or bind it: bind = SUPER, G, exec, games-menu

ここにあるものはすべてオープンソースです

ツールもスキルもベンチマークも公開リポジトリです。フォークして、自分の働き方に合うバージョンを作ってください。