LinuxでSpace Cadet Pinball
(brennan.io)- Space Cadet Pinball はリバースエンジニアリングによってソースコード化され、複数のプラットフォームで実行可能になっている
- Linuxでは Flatpak でのインストールが最も簡単で、Windows版の元のゲームリソースも含まれている
- Full Tilt! Pinball のデータに差し替えると 1024x768 の解像度を使える
- Full Tilt のデータではルールも変わり、一部の ライト がトグルされず点灯したままになる
- 販売終了したプロプライエタリソフトウェアは FOSSライセンス への移行エスクローが望ましい
LinuxでSpace Cadet Pinballを実行する
- Windows XPにバンドルされていた Space Cadet Pinball は、デコンパイラとリバースエンジニアリングツールによってソースコード化され、複数のプラットフォームで動作するよう整理された GitHubプロジェクト がある
- Linuxで最も簡単に実行する方法は Flatpak で、Windows版の元のゲームリソースも一緒に含まれている
- GUIでは KDE Discover のようなツールでインストールでき、CLIでは次のコマンドでインストール可能
flatpak install com.github.k4zmu2a.spacecadetpinball - ブラウザベース版 もあるが、ローカルコンピュータに直接インストールして実行する方法のほうが良かった
Full Tiltデータでより高い解像度を使う
- 標準のグラフィックは 480p 程度なので、荒く見えることがある
- 別バージョンである Full Tilt! Pinball のゲームデータは 1024x768 解像度での表示に対応している
- Full Tilt のゲームデータは archive.org の zip ファイルから入手できる
- Flatpak版でこのデータファイルを使わせるには、少し手作業が必要になる
-
データ適用手順
- まずゲームを最低1回は起動して、データディレクトリを作成する必要がある
- ダウンロードした zip ファイルを Flatpak のデータディレクトリに直接展開する
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は不要かもしれないが、インストール先が/var/lib/flatpakなら root 権限が必要になる - ゲームが更新されたら手順3を繰り返す必要があるかもしれない
- ただし Flatpakパッケージ は2年以上更新されておらず、更新の可能性や頻度は低そうに見える
元データとFull Tiltデータの違い
- 元のファイルと Full Tilt のファイルを両方入れておくと、ゲーム内で元の 3DPB データと Full Tilt データを切り替えられる
- データファイルはゲームルールにも影響するようだ
- 元の 3DPB バージョンでは、リターンレーンと発射レーンのライトがボールが通過するたびにトグルされる
- Full Tilt バージョンではライトがトグルされず点灯したままになるため、ライトのセットを完成させて関連するバンパーセットをアップグレードしやすくなる
- 同時期の一部のMacには Marble Blast というゲームがプリインストールされており、そのゲームにも同じような愛着を持つ人たちがいた
- Marble Blast シリーズはこのピンボールゲームと違って、その後も拡張され、現在も遊べるより新しいバージョンが存在する
移植性と保存
- 古いゲームが十分に愛され、特に能力と意欲のある人が作業したおかげで、複数のプラットフォームで実行できる形になった
- ソースコードが何らかの形で存在すれば、ゲームをさまざまなプラットフォームに移植できるという大きな利点がある
- このプロジェクトのおかげで、Mac、Windows、Linux だけでなく Android や Nintendo Switch でも動作するようだ
- 元の開発者に費用を支払えるなら支払いたいが、特に Full Tilt 版ゲームデータのダウンロードの合法性には懸念がある
- そのデータは商用製品に含まれる著作権のあるアートやデータだからだ
- FOSSライセンスで作られた成果物を好むとしても、現実はいつもそう動くわけではなく、良いものを作る人が報われることで、より多くの良い成果物が生まれると考えている
プロプライエタリソフトウェアとソースコードエスクロー
- ソフトウェア保存も重要な目標だ
- 理想的には、この種のプロプライエタリソフトウェアは何らかの形の ソースコードエスクロー に入れられるべきだ
- 元の著作権者が製品を販売している間は、その権利は尊重されるべきである
- しかし販売を終了することを選んだなら、ユーザーが自分の使うソフトウェアを改善・維持できるよう、コードが FOSSライセンス に移行する形が望ましい
- この方式は、創作者の権利、ユーザーの権利、保存という目標のあいだのバランスを取る助けになる可能性がある
1件のコメント
Hacker Newsのコメント
Space Cadet Pinball の原作者の一人だが、古いピンボールゲームを今でも生かしておくほど愛してくれる人たちがいるのは本当に素晴らしい。
この投稿は、Cinematronicsの共同創業者で友人でもある Mike Sandige(リードエンジニア)と Kevin Gliner(デザイナー兼プロダクトマネージャー)にも伝えるつもりで、二人とも私と同じくらい喜んでくれると思う
おかげで中学校のタイピング授業でピンボールリーグを開けた。ゲームのどの部分を担当したのか、作業中の面白い逸話や見つけにくかったバグの話があるのかも気になる
キャリアを通じてあのときは運が良かったと思い返していて、気が狂わずに済んだのはこのゲームのおかげだと感謝している
このゲームは、私が現実のピンボールの世界に入り、セミプロ級まで行くうえで大きな影響を与えた。ずっと聞いてみたかったのだが、Space Cadet Pinballの公式続編を作るために、もう一度設計段階に戻る考えはあるだろうか。
エンシティフィケーション、少額課金、バーチャルピンボール界隈のプレイヤーに不利なライセンス問題の中で、こうしたノスタルジーを求めている世代がいくつもあるのかもしれない。すでに考えすぎなくらい考えていて、必要なら持っているものを全部注ぎ込むつもりもあるが、まずは返事を聞きたい
後になって Deluxe Skijump、Doom、Starcraft を持ち込む人たちも現れたが、Space Cadet も依然として十分に有力な選択肢だった
Software Heritageの外部契約者なのだが、今もこの仕事をしているかは分からないものの、そうした役割を担うには理想的な組織だと思う。
https://www.softwareheritage.org/
この再現版が原作とどれほど正確に同じかは信じがたいほどで、見た目と操作感 がほぼ同一だ。
作者は元のソースコードを見ず、exeファイルを逆コンパイルするだけで作ったので、実質的に完全に手探りでやり遂げたことになる。だから「聞こえず、話せず、見えない子がピンボールだけはとんでもなく上手い」という表現がぴったりだ
このバージョンでもできるのか気になって、あとでPCの前に行ったら試そうと思っていたのだが、AUR版を入れてみたら実際にできた。ゲーム開始シーケンス中に “hidden test” を入力するとボールを引っ張れる
もちろん、Claudeに逆アセンブル済みコードから仕様を書かせれば、似たようなことはできるかもしれない
GitHubを見ると興味深い: https://github.com/k4zmu2a/SpaceCadetPinball
複数のコンソールに移植されていて、ブラウザ版もある: https://pinball.alula.me/
それに Space Cadet Pinball は、私が知らなかった Maxis のもっと大きなゲーム Full Tilt! Pinball の一部だった。Windows 95にDOOMをバンドルしかけたが、「ピンボールみたいなゲームじゃだめなのか?」という感じで却下され、最終的にこうなった。
https://en.wikipedia.org/wiki/Full_Tilt!_Pinball#Development
昨年 Shopifyで Space Cadet に着想を得たピンボールゲームを作り、今でもここで遊べる: https://bfcm.shopify.com/
毎年 Black Friday に店舗の売上をリアルタイムで可視化するサイトを公開していて、以前は実際の販売が販売者から購入者へ移動する弧で表示される地球儀のようなものだった。ここ数年は、サイトをもっと楽しくインタラクティブにしている。
ピンボールマシンのプログラミングはかなり難しく、エンジニア2人とアーティスト1人のチームで1か月半ほどかかった。仕組みが気になるなら、ピンボール台の横にあるデスクトップPCに制作メモを置いてある
記事末尾の ソースコードFLOSSエスクロー への言及が気に入った。
法的に実装するのは難しいだろうが、ソフトウェアが販売されている間はクローズドソースで、もう販売されなくなったら自動的にオープンソース化されるというアイデアは、潜在ユーザーや購入者の立場から魅力的だ。最悪の場合でも、会社が倒産したりプロジェクトが打ち切られたりしたときの依存が減る。
https://kde.org/community/whatiskde/kdefreeqtfoundation/ を少し思い出す
こうしたことを仲介する会社もある: https://www.escrowcompany.co/source-code-escrow/
販売終了後に再配布、デコンパイル、リバースエンジニアリング、再実装を合法化すれば十分カバーできると思う
Full Tilt版にはWindows版にない マルチボール もある。
2つのライトが同じ色のときにワームホールへ撃ち込むとボールをロックでき、3個ロックすると始まる。
Space Cadet が好きなら Visual Pinball もぜひやってみてほしい。Space Cadet より優れたピンボールゲームはたくさんあり、ユーザー制作の素晴らしいテーブルも無料で多く公開されている。ただしWindows専用だと思う。テーブルはVBScriptでスクリプトされ、PinMAMEはCOMオブジェクトとしてロードされる。
付け加えると、少しハックしてみたところ Space Cadet のプログラミングはかなり雑だった。ライトの状態がそのままゲーム状態を表している。そのため、ランクアップのライトショー再生中にボールを失ったりミッションを開始したりすると、ランクを飛ばせるバグが発生する
VPX は今では Linux、Mac、iOS、Android でも動作し、jsm174 の先駆的な作業のおかげで快適に動く。VBScript の部分は必要な分だけ Wine で処理し、残りはネイティブだ。
サラウンドサウンドフィードバック(SSF)、Direct Output Framework(DOF)、Pinup Popper Packs(PUP Packs)などもサポートしている。以前はWindows専用だったGUIも、今では ImGUI によって Windows/Mac/Linux 版に組み込まれ、プレイ中でも表示できる。
試してみたいなら、GitHubにログインして各プラットフォーム向けの最新アクションをダウンロードすればよい [0]。Windows以外の利用者には、昨年の10.8.0リリースよりもWindows版との機能差が最も縮まっている master の最新版がおすすめだ。Metal と Vulkan に対応した新しいマルチスレッドレンダリングバックエンドを持つ BGFX 版を使えばよい。
さらに知りたければ、Virtual Pinball Chat 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 自体が優れたゲーム なのだと認めるようになった。操作感が良く、引きつけ続ける要素も多い。
同じくらい楽しめる別のピンボールゲームを探したくて、いちばん近かったのは Xenotitle と Demon's Tilt だったが、慣れて上達するのはより難しかった。その次に良かったのは、個人的には Yoku's Island Express だと思う
過小評価すべきゲームではない
Visual Pinball向けなら、これを見てみる価値がある: https://archive.org/details/vpinball-x-73-space-cadet / https://github.com/vpinball/vpinball
もっと良いものもあるかもしれないが、JP版は別のソフトウェアを大量に入れて設定しなくてもそのまま動く。
https://youtube.com/results?search_query=JP%27s+Space+Cadet - https://youtu.be/UXfohCzilrQ
最近のこういうピンボールの作り方には本当に驚かされる。
さらに多くのテーブルはここにもある:
https://vpforums.org/index.php?app=downloads&showcat=50
https://vpuniverse.com/files/category/82-vpx-pinball-tables
https://virtualpinballspreadsheet.github.io
https://nailbuster.com/wikipinup
https://archive.org/search?query=visual+pinball+tables
Linux/Mac では何をしてもフリーズするかクラッシュし、今は少しずつ足かせを外しているが、依然としてWindows志向のプロジェクトだ
高品質なテーブルが何百もあり、毎週12本以上の新作リリースが出ている。物理ピンボールテーブルでは不可能なことをする新しいオリジナルテーブルもあるが、1950年代から2000年代までの伝説的な商業用ピンボールマシンを丁寧に再現したものも多い。10代の頃に覚えているテーブルは、すでにエミュレートされている可能性が高い。
MAMEが消え去る前にアーケードゲームを保存しているのと同じように、VPinコミュニティ は将来の世代が電気機械式マシンを楽しめるよう歴史保存をしている。内部的には Visual Pinball で PinMAME という特殊なMAME版がピンボールマシンのROMをエミュレートし、Visual Pinball が3Dレンダリングと物理シミュレーションを担当している。
ほとんどの人はキーボードでデスクトップ上で遊ぶが、一部のMAMEプレイヤーが専用ボタンやジョイスティック、アーケード筐体を使うのと同じように、VPin もピンボールマシン風のキャビネットで動かせる。プレイフィールドの位置にはフラットスクリーンがあり、フリッパーボタンと実際のプランジャーで仮想のボールを発射する。
VPin はステレオサウンドにも対応しているが、一般的なPCサウンドカードの7.1出力の追加チャンネルを使って、サブウーファー、ベースシェイカー、最大4チャンネルの位置ベースハプティックフィードバックを駆動できる。トランスデューサーが、実際のピンボールのバンパーやスリングショットがキャビネット内で作動する感覚や、木製プレイフィールドの上を金属球が転がる微細な振動まで再現する精度には驚かされた。
私のキャビネットには、レンダリングされたフリッパー位置の下に本物のピンボールマシン用フリッパーソレノイドも組み込んである。VPin キャビネットは、本物のピンボールマシン8台と自作MAMEアーケードキャビネットの隣にあるゲームルームに置いてあるので、全体の感触が本物にかなり近いことは保証できる。
Visual Pinball を試したいなら、@eahm が上でリンクしていた Pinup Popper の自動インストーラーから始めることを強く勧める: https://nailbuster.com/wikipinup/doku.php
この素晴らしい成果物は複数のプロジェクトが滑らかに連携して生まれたものだが、最初は正しい順序と場所にインストールするのが分かりにくいことがある。初回セットアップで少し文書を読む必要があるのはやや面倒だったが、今ではワンクリック向きでない点がむしろ長所だと思っている。あまりにも気軽に流入してスパムをばらまくユーザーをふるい落とせる程度には複雑なので、完全無料のレトロ隣接ホビーに、今でも知識が深く参加意欲の高いコミュニティが残っている
ソースコードエスクロー のアイデアは気に入っていて、国家政府が関与するのに向いた領域のようにも感じる。
British Library が出版されたすべての本の複製を保管することを義務づけられている仕組みを思い出す。純粋に保存目的だけでも、ソースコードに似たような法律を設けられないだろうか。
比喩的な金庫に保管しておいて、ソフトウェアのサポートと寿命に関する特定条件が満たされた後にだけ開ける方式でもまったく構わない。その条件が「原著作権の満了後」、つまり70年以上先だとしても、現在の慣行よりはソースコード保存の面でずっと良い。リリースから10年もたたないうちに元のソースコードが失われたゲームもある(Kingdom Hearts 1)。今よりはどんな代案でも良いと思う
創作者へのインセンティブはすでに十分低い。本を書けばすぐ Anna's Archive に上がり、Altman 一味の利益のために LLM の残滓へと消化される。調査報道の記事をここや Reddit で共有すれば、有料壁回避サイトへのリンクが最も支持されるコメントの一つになったりする。
すでにバスティアの割れ窓のような状況で、人々が創作物を作る動機は削がれている。ソフトウェア制作者の仕事がさらに複製されやすくなり、著作権ロンダリングされる危険を高めたくはない。国家の金庫は兆ドル企業にとって格好の標的になるだろう。
別の話として、レトロなリバースエンジニアリングをしている立場から、ソフトウェア保存 と創作者への報酬の必要性のあいだにある緊張について語る投稿者の言葉には強く共感する
近いうちに ゲームとデータ を分離する予定で、そうなれば後者の扱いがより簡単になり、カスタム Flatpak でデータを拡張できるようになる。
Flatpak は最新ランタイムを維持するためにアップデートを受けてきたが、アップストリームのゲーム自体は更新されておらず、Flathub が表示するのはアップデートに関する appstream データだけだろう。Flatpak マニフェストのリポジトリを見ると、最新コミットは6か月前だ: https://github.com/flathub/com.github.k4zmu2a.spacecadetpinb...
誰かが趣味プロジェクトでも会社でもいいから、Space Cadet の実機ピンボール台 を作ってくれたらいいのにと思う
ついでに Sesame Street ピンボール台 [2] の実機版も見てみたいが、そちらはもう少し野心的な作業になるかもしれない。
[1] - https://spacecadetpinball.wordpress.com
[2] - https://www.youtube.com/watch?v=JZshZp-cxKg
バンパーの下を通るレーン があるが、実際のバンパーはかなり下まで伸びているからだ: https://files.catbox.moe/pnaeri.png
当時は Halo マシンも作ろうとしていたが、それも実現しなかった