RCade:コミュニティアーケードキャビネットを作る

2026/02/27 4:09

RCade:コミュニティアーケードキャビネットを作る

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

RCade は、Recurse Center コミュニティが作成したカスタムアーケードキャビネットで、GitHub リポジトリを 320 × 240 CRT 上で実際にプレイ可能なゲームへ変換します。キャビネットのハードウェアは、オリジナルの80年代型 CRT(Facebook Marketplace/Craigslist から取得)と、元々 Raspberry‑Pi vga666 アダプタを使用していた JAMMA ベースの映像経路で構成されており、その後 STM32H750 に電源供給されたカスタム 24‑bit USB ディスプレイアダプタに置き換えられました。入力コントローラは RP2040 をベースとし、各プレイヤーにジョイスティック2つ、ボタン2つ、およびロータリーエンコーダ1つを標準 USB HID ゲームパッドとして提供します。

キャビネットの外観はチョークボード用ビニールで覆われており、RCade ロゴを表示する 2 枚の HUB75 RGB LED マトリクスからなるマルキーが付いています。

ソフトウェア面では、開発者は

npm create rcade@latest
(JavaScript/TypeScript/p5.js/Rust‑WASM テンプレート)を使用して新しいゲームの雛形を作成します。各ゲームは GitHub にコードをプッシュすることでキャビネットにデプロイされ、ワークフロー(
rcade/action-deploy
)は OIDC トークンを用いてパスワードレス認証を行い、起動時にキャビネットの Electron アプリ(SvelteKit UI、Node HID ライブラリ)がビルドをダウンロードするようトリガーします。

ゲームは厳格な CSP ルール(canvas/WebGL、Web Audio、Workers、requestAnimationFrame)によって管理されるサンドボックス化された iframe 内で実行されます。入力はプラグインシステム(

@rcade/plugin-input-classic
)を介して処理され、特権コンテキストで動作し
postMessage
を通じてゲーム iframe と通信します。

このプロジェクトでは 44 件以上のコミュニティ制作ゲームがホストされています。rcade.dev のウェブプレイヤーはサンドボックス環境をミラーリングし、キーボード入力をアーケードコントロールにマッピングします。一方で

npx rcade@latest play
というシミュレータを使えばリモートの Recursers がゲームをローカルでテストできます。

Recurse Center の滞在中に構築され、以前の作業(24‑bit USB ディスプレイアダプタ、JAMMA 配線)を基盤とした RCade は、GitHub から物理ハードウェアへ数分で迅速にデプロイできることを示しており、コミュニティの協力がレトロスタイルゲームジャムを加速させる方法を実証しています。

本文

RCade – リカーズセンターで共同構築されたアーケードキャビネット


物語

RCade はリカーズセンタ―のコミュニティが作成したゲームを動かす、オーダーメイドのアーケードキャビネットです。

  • ハードウェア:320 × 240 CRT、独自グラフィックカード、コントローラーパネルにスピナーとジョイスティック、USBディスプレイアダプタ、LEDメルカリー。
  • ソフトウェア:GitHub Actions OIDC トークンで駆動する Web‑ベースのデプロイパイプライン、ゲーム実行用サンドボックス iframe、ゲームコードにアーケードコントロールを公開するプラグインシステム。
  • ゲーム:44 本以上のタイトルが GitHub リポジトリから数分で直接配信されています。

1. ハードウェア

1.1 CRT からアーケードモニタへ

ステップ説明
CRT の発見Facebook Marketplace と Craigslist で古いキャビネットを調達。内部に残ったのはチューブだけでした。
信号互換性従来のアーケードモニタは約15.7 kHz の水平同期(≈262 行/フレーム)で動作しますが、VGA は 31.5 kHz。標準 VGA ケーブルでは駆動できません。
ピン配置 & JAMMAオシロスコープで RGB、HSYNC、VSYNC、およびグランドをチューブのネックボードからトレースし、JAMMA エッジコネクタ(56 ピン)へ接続してゲームを簡単に交換できるようにしました。

CRT への初回ビデオ出力:ピクセルが揺れ混乱しますが、確かにピクセルは映ります。

1.2 VGA666 アダプタ

コンポーネント詳細
デバイスRaspberry Pi とオープンソースの vga666 アダプタ(GPIO ベースのアナログ VGA)。
設定
/etc/X11/xorg.conf.d/99-vga666.conf
+
/boot/config.txt
dtoverlay=vc4-kms-dpi-generic
を追加。
タイミング5.7 MHz のピクセルクロック、320 × 240 解像度、アクティブロー同期 – アーケード要件に合致。
制限18‑bit カラー(チャンネル毎 6 ビット) → バンディングが目立ちます。

1.3 ステファンのカスタムディスプレイアダプタ

  • STM32H750 MCU と高精度 DAC を用いた USB ディスプレイアダプタを構築。
  • vga666 のバンディングなしで 24‑bit カラー、60 fps を実現。

1.4 カスタム入力コントローラ

プレイヤーコントロール
ジョイスティック8 通方向デジタルスイッチ(上/下/左/右)。
ボタンアクションボタン 2 個。
スピナー回転エンコーダ (A/B 信号) により速度/向きを取得。
  • ファームウェアは入力をデバウンスし、1 kHz で四角形信号を読み取り、USB HID ゲームパッドとしてホストへ送信。

1.5 メルカリー

  • 元のアーケードメルカリの代わりに 2 枚の HUB75 RGB LED マトリクスを設置。
  • チャコブックビニール外装で Recursers が随時描画・変更できるように。

2. ソフトウェア

2.1 スキャフォールド & デプロイ

npm create rcade@latest

CLI は以下を生成します:

ファイル用途
rcade.manifest.json
ゲームメタデータ(名前、可視性、依存関係)。
.github/workflows/deploy.yaml
GitHub Actions でビルド&デプロイするワークフロー。

ワークフローのハイライト

permissions:
  id-token: write   # OIDC トークン生成を許可

2.2 GitHub OIDC による認証

  1. ワークフローが GitHub から署名済み JWT を取得(claims は repo、branch、owner)。
  2. RCade API が署名を検証し、GitHub ユーザー名が RC プロフィールに紐づいているか確認。
  3. 有効ならゲームをデプロイ – シークレットは保存されません。

2.3 サンドボックス & セキュリティ

  • ゲームは厳格な CSP ヘッダー付きのサンドボックス
    <iframe>
    内で実行。
  • ブロック:外部
    fetch
    、ローカルストレージ、WebSocket、直接入力 API、親フレームアクセス。
  • 許可:Canvas/WebGL、Web Audio、Web Workers、
    requestAnimationFrame

2.4 プラグインシステム

import { PLAYER_1, SYSTEM } from "@rcade/plugin-input-classic";

function gameLoop() {
  if (PLAYER_1.DPAD.up) moveUp();
  // …
  requestAnimationFrame(gameLoop);
}
  • プラグインは特権コンテキストでロードされる信頼モジュール。
  • postMessage
    を介してサンドボックス内のゲーム iframe にアーケード入力を公開。
  • rcade.manifest.json
    で宣言されたプラグインのみ利用可能。

2.5 キャビネットスタック

レイヤ技術
ランタイムElectron (Chromium + Node.js)
UISvelteKit
入力Node HID ライブラリ(USB コントローラ)
サービスsystemd 自動起動 & クラッシュ再起動

キャビネットは新しいゲームがデプロイされると Webhook を受け取り、ビルドをダウンロードしローカルライブラリへ追加します。

2.6 ウェブプレイヤー & エミュレータ

  • rcade.dev
    が同じサンドボックス環境でゲームをホスト。
  • ローカルエミュレータ:
    npx rcade@latest play
    .
  • キーボード → アーケードコントロールマッピング(矢印キー=ジョイスティック、Z/X=ボタン)。

3. コミュニティへの影響

  • ゲーム:Recursers が作った 44 本以上のタイトル。多くはハードウェアとオンライン両方でプレイ可能。
  • ゲームジャム:ゼロからプレイ可能までを数分で実現するデプロイパイプライン。
  • 注目タイトル
    • NIBBLES.BAS – サブピクセルグラフィック、スピナー統合。
    • SIGGY SKETCH – Etch A Sketch の忠実なクローン。
    • BAD ORCHESTRA – スピナーで制御する音高シフト。

4. 貢献者

名前役割
Rose Hallプラグインシステム & キャビネットソフトウェア
Stephen Dカスタム USB ディスプレイアダプタ(ハード/ファーム)
Joseph Abrahamson, Jack Heard, Joel HolmbergCRT 配線、JAMMA コネクタ、オシロスコープ作業
Iris E Fernandez Valdes, Anjana Vakil入力コントローラファームウェア
David Allen Feilvga666 設定 & ビデオ出力
Greg Sadetskyインスピレーション(Rapid Riter)

5. なぜうまくいくのか

  • 自由:リカーズセンターの自己主導環境が、製品制約なしでプロジェクトを育てることを可能にしました。
  • 協働:夜遅くまで仲間と作業することで深いコミュニティ絆が生まれました。
  • アクセス性:GitHub Actions で数分でゲームを出荷でき、複雑な設定は不要です。

6. 参加方法

リカーズ(遠隔でも対面でも)の皆さんは、RCade 用のゲームを作りコミュニティと共有してみませんか?

同じ日のほかのニュース

一覧に戻る →

2026/03/03 7:32

メタ社のスマートグラスの裏側にいる作業員は、全てを見渡すことができます。

## Japanese Translation: > Metaの新しい「Meta Ray‑Ban」メガネは、仕事・旅行・リアルタイム翻訳・プライバシー制御を一つのAIアシスタントとして位置付けられています。EssilorLuxotticaと共同で製造され、スウェーデンで販売される予定で、2023‑24年に200万台から2025年秋には700万台へと売上が急増する見込みです。このデバイスはサーバー側で処理を行う必要があり、ローカルでの対話は不可能です。アプリは電話にインターネット接続がなくても、常にMetaサーバーにアクセスします。 > Metaのプライバシーポリシーでは、ユーザーが明示的にオプトインしない限り、音声・テキスト・画像・動画を自動的に取得することが許可されています。すべてのコンテンツはAIによって自動または手動でレビューされる可能性があり、オプトアウトの選択肢はありません。プライバシー専門家は、ユーザーがしばしばメガネのカメラがAIアシスタントに話しかけた際に録画していることを認識していない点を指摘し、透明性の欠如を強調しています。 > データ注釈作業はサブコントラクター(例:ナイロビのSama)に委託されており、従業員は極めてプライベートな資料(例:トイレ訪問、セックスシーン、銀行カード情報など)をレビューすることがあります。匿名化は不完全であり、照明が悪い場合には顔が見えてしまう可能性があります。Metaの利用規約では保存場所や詳細な取り扱いについて具体的に示されておらず、ヨーロッパの幹部はGDPR準拠がサーバー所在地よりもデータ保護基準に依存していると指摘し、法的責任はMeta Irelandに帰属すると述べています。 > スウェーデンのプライバシー保護機関はまだ製品をレビューしていないため、ユーザーが自分のデータがAIモデルのトレーニングや広告ターゲティングにどのように使用されるかを十分に理解できていないという懸念があります。MetaはクラウドベースのAI処理を維持しつつメガネの販売を継続する計画であり、これがGDPR監視の強化につながり、企業や消費者がウェアラブルAIデバイスにおけるより明確なオプトインデータポリシーを要求する動きを促す可能性があります。

2026/03/03 6:09

Macintoshへようこそ(お帰りなさい)。

## Japanese Translation: --- ## Summary 著者は、最近の macOS リリース―特に不安定な「macOS Tahoe」―が継続的なバグと頻繁な UI 変更に悩まされており、システムの安定性やユーザー体験を侵食していると主張しています。主要な問題点は次の通りです: - **Time‑Machine バックアップ** は古いスナップショットが削除されない限り失敗します。 - **Spotlight** のタグインデックスは不完全な結果しか返さず、インデックスを再構築したり Finder を再起動しても部分的にしか解決しません。 - **Finder** は Spotlight クエリ中や検索結果の更新時にハングします。また、外部ファイルが作成された後にフォルダ内容を更新できず(*Go To Folder* やパスオートコンプリートといった回避策も限定的で、しばしば Finder の再起動が必要になります)。 - **AirPods Pro** は約 1 秒後に音声の不具合を起こし、ファームウェアや OS アップグレードでは問題は解決されません。 - **全画面ウィンドウ** は Cmd + Tab で切り替えるとフォーカスが失われ、キーボードショートカットが機能せず、ウィンドウをクリックするまで Safari のビデオコントロールに影響します。 これらの問題は複数の macOS リリースおよび Mac モデル(著者自身の M1 Max 2021 を含む)で継続しており、Apple 自身のコンポーネントに起因することを示しています。著者は、アイコン変更やダークパターン UI の微調整といった Apple の迅速な美観修正が長期的信頼性を損ねる可能性があると警告しています。将来のアップデートでバグが対処されることは期待できるものの、安定性よりも視覚的洗練を優先することへの懸念があります。 **Rosetta 2 の段階的廃止** は ARM64 Linux コンテナサポートに依存している開発者にとってさらに悪影響を及ぼし、アプリケーションの互換性を脅かす恐れがあります。総じて、著者は Apple に対し、短期的な美観更新よりもソフトウェア安定性、謙虚さ、および長期的利用価値に再集中するよう訴えています

2026/03/03 5:30

ブリティッシュコロンビア州、時刻変更を廃止し一年中サマータイムを採用

## Japanese Translation: ### 改訂要約 ブリティッシュコロンビア州は、2026年11月1日付で「太平洋時間(Pacific Time)」と呼ばれる夏時間を永久に採用し、それ以降の時刻変更をすべて終了します。デービッド・エビー首相は月曜日にこの決定を発表し、3月8日(最後の春先進調整)が最終的な移行となると述べました。この動きは、2019年の公衆意見調査で回答者の93%が健康・安全上の理由から永久夏時間を支持したことに続くものです。エビー氏は子供やペットの睡眠不足、二度の時刻変更による車両事故増加を強調しました。歴史的に、BC州は1918年以降に時刻を切り替えてきました(法務長官ニキ・シャルマ氏が指摘)。州政府は最終変更前に住民に8か月の調整期間を設け、カリフォルニア州、オレゴン州、ワシントン州といった米国隣接州にも同様の法案採択を促しています。東部BC地域(例:デイソンクリーク)はすでに年間を通じて山岳標準時を観測しているため除外されます。新制度下では、バンクーバーの永久夏時間で最も早い日の出は6月5:06 AM、最も遅い日は12月9:08 AMです。夕暮れは12月5:14 PMから6月9:22 PMまで変動します。この変更は生活品質の向上、事故リスクの低減、およびイエローナイフ州と同じ年間を通じて夏時間を採用することでBC州を調和させることを目的としています。

RCade:コミュニティアーケードキャビネットを作る | そっか~ニュース