世界を動かす技術を、日本語で。

Linuxでの「スペースカデットピンボール」

概要

Windows XP に付属していた Space Cadet PinballLinux で遊ぶ方法の紹介。 Flatpak を使ったインストール手順と高解像度データ利用法の解説。 Full Tilt! Pinball データを使った画質向上のコツも記載。 ゲームデータの著作権やソフトウェア保存についての考察。 その他の懐かしゲームや個人的な思い出の共有。

LinuxでSpace Cadet Pinballを遊ぶ方法

  • Space Cadet PinballWindows XP 標準搭載ゲーム
    • 子供時代に多くのユーザーに親しまれた名作
  • Linux 上でもプレイ可能なプロジェクトが GitHub で公開
    • 有志による逆コンパイルと移植作業の成果
  • Flatpak によるインストールが最も簡単
    • オリジナルのゲームリソース同梱
    • GUI(例: KDE Discover)またはCLIでインストール可能
      • コマンド例:
        flatpak install com.github.k4zmu2a.spacecadetpinball
        
  • インストール後すぐに懐かしのピンボール体験

高解像度で遊ぶ方法(Full Tilt! Pinballデータの利用)

  • オリジナルは 480p と低解像度
  • Full Tilt! Pinball 版データ利用で 1024x768 の高解像度プレイが可能
    • データは archive.org で入手可能(CADET.ZIPファイル)
  • 導入手順
    • 1回ゲームを起動し、データディレクトリ作成を確認
    • ダウンロードしたZIPをデータディレクトリに展開
      • 例:
        cd ~/.var/app/com.github.k4zmu2a.spacecadetpinball/data/SpaceCadetPinball
        unzip ~/Downloads/CADET.ZIP
        
    • 既存のデータディレクトリを削除またはリネーム
      • 例:
        sudo rm -r $(flatpak info --show-location com.github.k4zmu2a.spacecadetpinball)/files/extra/Pinball
        
      • インストール方法によってはsudo不要
    • アップデート時は再作業が必要な場合あり

データファイルに関する豆知識

  • オリジナル( 3DPB)と Full Tilt データを両方保持して切り替え可能
  • データによってゲームルールや演出が微妙に異なる
    • 例:ランプの点灯挙動
  • 他にも Marble Blast (Mac向け)など、同時期に人気だったゲームの存在

著作権・ソフトウェア保存に関する考察

  • 有志による移植で多プラットフォーム対応( Mac, Windows, Linux, Android, Nintendo Switch 等)
  • ゲームデータは商用製品の著作物であり、ダウンロードには法的配慮が必要
  • 開発者への正当な対価支払いの重要性
    • 理想は FOSSライセンス だが現実は異なる
  • ソフトウェア保存の意義
    • 販売終了後は FOSS 化し、ユーザーによる保守・改良を可能にする仕組みの必要性
    • 創作者・ユーザー・保存のバランスをとるべき

その他の思い出

  • 他にも 3D Ultra Pinball など、CDメディアで入手したピンボールゲームの思い出
    • 一部はシリアルボックス特典などで配布されていた事例

Hackerたちの意見

いつかゲームをデータから分けるつもりだよ。そうすれば、2部がもっと簡単になって、カスタムのフラットパックでデータを拡張できるようになる。フラットパックは、最新のランタイムを保つためにアップデートされてるけど、上流のゲームはそうでもないんだ。Flathubはアップデートのためのアプリストリームデータしか表示しないしね。フラットパックのマニフェストリポジトリを見ると、最新のコミットが6ヶ月前のものだよ。

いいね!GitHub見てみたよ。いろんなコンソールに移植されてるんだね。ブラウザ版もあるよ!それに、Space Cadet Pinballは、知らなかったけど、もっと大きなMaxisのゲーム「Full Tilt! Pinball」の一部なんだって。さらに、Windows 95にDOOMがバンドルされる予定だったけど、却下されたらしいよ。「ピンボールか何かのゲームが欲しいだけなのに」って。面白いね!

誰かが情熱を持って、Space Cadetを本物の物理的なピンボール台にしてくれたらいいのに。

これについて考えた人は多いと思うけど、確か物理的には作れないんだよね。バンパーの下を通るレーンがあるから(実際にはかなり下に伸びてるし)

21年前にSternの社員にこれを提案したんだけど、全然進展しなかったな。当時はHaloマシンを作ろうとしてたけど、これもダメだった。

これに関してはいくつか試みがあったね。最も有名なのは多分これだと思う[1]。ついでに、セサミストリートのピンボールテーブルの物理版も見てみたいな[2]、でもそれはちょっと野心的かも。 :)

Full Tilt版にはマルチボールがあって、Windows版にはないんだ。色が同じライトのあるワームホールにボールを打ち込んでロックするんだ。3つのボールをロックするとスタート。Space Cadetが好きなら、Visual Pinballも試してみることをおすすめするよ。Space Cadetよりも面白いピンボールゲームがたくさんあって、素晴らしいテーブルが無料で手に入るから。ただ、Windows専用だと思うけど(テーブルは全部VBScriptでスクリプトされてて、PinMAMEはCOMオブジェクトとして読み込まれる)。ちなみに、これをいじってみたけど、Space Cadetのプログラミングは結構ひどいことが分かったよ(彼らを貶めるつもりはないけど、ちゃんと動いてる)。ライトの状態がゲームの状態を直接反映してるんだ。(これが原因で、ランクアップのライトショーが再生中にミッションを開始したり、ボールが流れたりするとランクをスキップできるバグが発生するんだ。)

よりリアルなゲームの方が楽しいんじゃないかって直感的に感じるし、Space Cadetには子供の頃からの思い出があるから好きなんだと思う。でも、他のピンボールゲームをプレイすればするほど、Space Cadetが本当に素晴らしいゲームだってことが分かる。プレイしてて気持ちいいし、ハマる要素がたくさんあるんだよね。もっと楽しめるピンボールゲームが見つかればいいな。近い体験としてはXenotitleとDemon's Tiltがあるけど、そっちは入り込むのが難しかったし、上手くなるのも大変だった。個人的にはYoku's Island Expressが次におすすめかな。

でも、Windows専用だと思うよ(テーブルはすべてVBScriptでスクリプトされてて、PinMAMEはCOMオブジェクトとして読み込まれるから)。でも、実は君が間違ってるよ :-) VPXは今やLinux、Mac、iOS、Androidでも動くんだ。開発者のjsm174のおかげで、これらのプラットフォームで素晴らしく動いてるよ。VBScriptの部分はWineを使って処理してるけど、他はすべてネイティブだよ。サラウンドサウンドフィードバック(SSF)、ダイレクトアウトプットフレームワーク(DOF)、ピンアップポッパーパック(PUPパック)などもサポートされてる。以前はWindows専用だったGUIも、今はImGUIを通じてWindows/Mac/Linux版に組み込まれて、プレイ中にライブで表示できるよ。試してみたいなら、GitHubにログインして、自分のプラットフォーム用の最新アクションをダウンロードしてね[0]。非Windowsユーザーは、最新のmasterバージョンを使うのがいいよ。これがWindows版に最も近いから。BGFXバージョンを使うと、新しいマルチスレッドレンダリングバックエンドがMetalとVulkanをサポートしてるよ。もっと知りたいなら、バーチャルピンボールチャットのDiscord[1]をチェックするか、Wiki[2]を見てみるといいよ。開発者たちはVPXをクロスプラットフォームにするためにたくさんの努力をしてるし、それが表れてるよ。自分もこれを基にしたPincab[3]を作ったけど、すごくいいよ。編集: VPXは今やBatoceraでもサポートされてるけど、そこにあるVPXバージョンはちょっと古くなってきてるね。[0] https://github.com/vpinball/vpinball/actions/workflows/vpinb... [1] https://discord.gg/BhR9h5aWm [2] https://github.com/dekay/vpinball-wiki/wiki/About-Visual-Pin... [3] https://github.com/dekay/vpin-cabinet/

俺、ピンボールめっちゃやってきたけど、Space Cadetはデザインもバランスも面白さもあって、すごくいいピンボールゲームだと思う。短く評価する気にはならないな。

新しいOSがデフォルトインストールにゲームをバンドルしなくなった理由が気になるな。スマホでもそうだし。昔のダムフォン(たぶんノキア)では、スネークやレースゲームができたのを覚えてる。Bluetoothでマルチプレイもできたんだよ。

Google Playゲームには、オフラインで遊べるスネーク、ソリティア、マインスイーパーなどが入ってるよ。これがスマホにバンドルされてるのかは分からないけど、ゲームはちょっと隠れてる。接続なしでGoogle Playを検索すると出てくるから、そこで初めて気づいた。

研究と調査に100万ドル投資した場合の正確なROIを説明してほしいんだけど、OSベンダーがそのバンドルで利益を上げる理由が分からない。(バグレポートくらいしか考えられないけど)

子供たちが親に「ブラックベリーでブリックブレイカーをやらせて!」って懇願してたのを思い出すな。もちろん、iPadを持つ幼児が普通になったのはその後の話だけどね。

それは、ユーザーのためにいいことをする代わりに、アプリストアへのトラフィックを少し減らすことになるね。広告技術やアクセス料でお金を稼いでるから、より良い製品を追求するためにお金を残したくないよね?

記事の最後にある「ソースコードFLOSSエスクロー」についての著者のコメントが好きだな。法的に実現するのは難しいかもしれないけど、ソフトウェアが売れなくなるまでクローズドソースで、その後自動的にオープンソースになるってアイデアは、ソフトウェアの潜在的なユーザーや購入者として魅力的だよね。最悪のシナリオ(会社が倒産したり、プロジェクトをキャンセルしたりすること)でのロックインが少なくなるし。ちょっとKDEのことを思い出すな。

完全なFLOSSエスクローではないけど、ソースコードエスクローは大企業のソフトウェア契約では結構一般的だよ。これをサポートする会社もあるし、例えばここね:https://www.escrowcompany.co/source-code-escrow/

正直、ソースコードがそんなに役に立つとは思わない。販売が終わった後は再配布や逆コンパイル、リバースエンジニアリング、再実装が合法になるようにすれば、それで十分だと思う。

そういえば、上手いプレイヤーって実際にティルトキー使ってるのかな? 本物のピンボールマシンを使ったことがなかったから、ティルトキーの目的が分からなくてずっと混乱してた。ボールを押すほどのリスクを冒す価値があるとは思えなかったし。

実際のピンボールマシンをティルトするのはめっちゃ正当な行為だよ。一方で、ピンボールマシンには調整可能な脚があって、アーケードのオーナーは人を惑わせるためにマシンを調整することがある。毎日ではないけど、誰かが常にフリープレイを稼いでるのに気づいたら、対策を講じるんだ。ちょっとした変更でも、ボールの進む道が少し変わるからね。

スペースカデットを最後にやったのはずいぶん前だけど、巧妙なヌードが多くのビデオピンボールで役立つんだよね。ちょっとしたヌードでボールをドレインから救ったり、ショットを決めたりできるよ。

昨年、ShopifyでSpace Cadetからインスパイアを受けたピンボールゲームを作ったよ。ここでまだ遊べるよ: https://bfcm.shopify.com/ 毎年、ブラックフライデーに商人の売上をリアルタイムで可視化したものを出してるんだ。最初は、売り手から買い手に実際の売上が流れるアークを示す地球儀だったけど、ここ数年でウェブサイトをもっと楽しくてインタラクティブなものに変えてきた。ピンボールマシンのプログラミングはかなり難しかった。エンジニア2人とアーティスト1人のチームで、約1ヶ月半かけてそのプロジェクトに取り組んだよ。プロセスについてのメモも書いて、ピンボールマシンの隣のデスクトップコンピュータに置いてあるから、興味がある人は見てみてね。

この再現がオリジナルにどれだけ正確か、ほんとにバカみたいだよ。見た目も感触も全く同じ。著者はexeファイルを逆コンパイルするだけでこれを実現したんだ、オリジナルのソースコードを見ずに。つまり、完全に盲目的にね。だから言うまでもないけど、耳も口も目も不自由な子が、すごいピンボールを作るんだよ。

私の理解では、プロジェクトの逆アセンブルされたコードを見ないで、誰かに見てもらってその内容を文書化することがクリーンルームの条件なんだよね。もしクラウドに同じことをさせて… 逆アセンブルされたコードから仕様書を書かせるってのもアリかも。

ちなみに、Microsoftはピンボール用のデバッグシンボルを提供してるよ。

元のバージョンでは、ゲームのスタートシーケンス中に何かを入力するとボールをカーソルで動かせた気がするんだけど(確か「hidden test」だったかな?)、このバージョンでもできるか気になるな。誰かが試してなければ、後でコンピュータの前でやってみようと思う。編集:できた!リポジトリのREADMEにリンクされてたAURバージョンをインストールして試したら、ゲームのスタートアップシーケンス中に「hidden test」を入力するとボールをドラッグできたよ。