Loading 3D model… large boards can take a moment.
Raspberry Pi 4 / 5 を Unity 製ゲームを遊ぶためのゲーム機にするオリジナル OS イメージ (pi-gen / arm64 / Raspberry Pi OS Lite(Debian trixie)ベース)。 Unity の Linux (x86_64) ビルドを box64 で動かし、 USB メモリの「ゲームカセット」を挿すだけで SD カードへ自動インストールする。
License: CC BY-SA 4.0(同梱フォント等は対象外) © ラジアン(柏木主税) / RadianN_kswg
| 機能 | 内容 |
|---|---|
| Unity アプリ実行 | box64 による Linux x86_64 ビルドの実行。Mesa の設定で OpenGLCore ビルドもそのまま動く |
| USB カセット | USB メモリの /UnityGames/ に置いたビルドフォルダや zip を、挿すだけで自動インストール |
| Type-C 転送・保守 | Type-C 1本で給電 + USB 複合ガジェット。シリアルでアプリ転送(tools/send-app.py)、USB ネットワークで SSH 保守 |
| ランチャー | 平成のゲーム機本体を思わせるドット絵 UI。アプリ終了後もここに戻る |
| 退避 | SD が一杯になったら、ランチャーからアプリを USB メモリへ移動(挿し直せば再インストール) |
| 入力 | USB / Bluetooth のゲームパッド・キーボード(ランチャーにペアリング画面あり) |
| 2画面 | HDMI を2本つなぐと、ゲームからは Unity の Display 1(HDMI0)と Display 2(HDMI1)として見える。ゲーム側で Display.displays[1].Activate() を呼ぶと2枚目にも出せる。ランチャーは1枚目に出る。後から挿した2枚目は次のゲーム起動から有効 |
| ホームボタン | GPIO に挿す小基板。ゲーム中に短押しで一時停止+終了確認、長押しで即終了(設計データ) |
| GPIO 拡張(設計中) | ゲームから GPIO・PWM・I2C を使い、LED やサーボ、センサーで拡張ゲームパーツを作れるようにする(設計) |
いちばん上の画像は実機の HDMI 出力。下の画像は同じランチャーを Pi 上でオフスクリーン描画したもので、 ソフト名・メッセージ・空き容量は表示例。
| ソフトメニュー |
|---|
| 終了確認(ホームボタン短押し) |
|---|
| ソフトが多いとき(横スクロール) | Bluetooth ペアリング |
| ソフトが無いとき | |
*.img.xz をダウンロードする
(SHA256 はリリースノートに記載)。自分でビルドする場合は docs/build.md。player / player で、SSH が有効。有線 LAN などのネットワークにつなぐ前に、
Type-C で PC とつないで ssh player@10.89.0.1 で入り、passwd でパスワードを変える
(USB リンクの詳細)。MyGame/
MyGame.x86_64 ← 実行ファイル(必須・1つ)
MyGame_Data/
UnityPlayer.so
game.json ← 任意(表示名と起動引数)
{"name": "表示名", "args": ["-screen-fullscreen", "1", "-screen-width", "960", "-screen-height", "540"]}
A. USB メモリ(ゲームカセット) — USB メモリのルートに UnityGames/ フォルダを作り、
ビルドフォルダか zip を置いて本体の USB ポートに挿す。SD へ自動でインストールされ、ランチャーに通知が出る。
導入済みの同名アプリはスキップするので、挿しっぱなしでもよい。どのポートに挿してもよい
(既定では青い USB 3.0 ポートも USB 2.0 として動かす。理由)。
B. Type-C ケーブル(PC から転送) — 本体の Type-C 端子と PC をつなぐと、PC にシリアルポートが現れる。
pip install pyserial
python tools/send-app.py COM5 MyGame.zip # Linux なら /dev/ttyACM0
C. SSH — 同じ Type-C 接続で ssh player@10.89.0.1 に入れる。ファイルを置いて ucon-install <zip|フォルダ> でも導入できる。
| 操作 | ランチャー | ゲーム中 |
|---|---|---|
| ←→ / ↑↓(十字キー・スティック) | 選択 | — |
| A / Enter | 決定 | — |
| B / Esc | 戻る | — |
| ホームボタン 短押し | — | 一時停止して終了確認 |
| ホームボタン 長押し(2秒) | — | すぐに終了 |
ソフトを決定すると「起動 / USBメモリへバックアップ(退避) / 削除 / 戻る」を選べる。 ゲームパッドのボタン番号の割り当ては機種によって異なる(ボタン0 が A、ボタン1 が B)。 パッドは起動後の接続や抜き差しにも対応する(ランチャーが挿さった 1 台だけを開き直す)。 アナログスティックは倒した瞬間だけ 1 回動く(閾値 0.6 / 復帰 0.35 のヒステリシス)ので、 摩耗して値が揺れるスティックでもカーソルが走らない。
ゲーム側(Unity)のパッド入力: X にウィンドウマネージャが無くゲームの窓がフォーカスを得ないため、
ucon-run-app が SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS=1 を付けて起動する(Unity の Linux プレイヤーはパッドを SDL で読み、
既定ではフォーカスの無い窓のパッド入力を捨てる)。Input System を使うゲームはさらに
InputSystem.settings.backgroundBehavior = IgnoreFocus にしておく(NTsWallpaperEngine で実機確認済み)。
ゲーム側のキーボード入力: WM が無い X では入力フォーカスが None のままでキー入力がどの窓にも配送されないため、
ucon-run-app が起動後(2 / 15 / 45 秒)に X の入力フォーカスを PointerRoot にする。
ポインタ下の窓=全画面のゲームへキーが流れるようになる(2026-09-21 に仮想キーボードで実測。
設定前はキーが完全に無反応で、PointerRoot にした瞬間に届いた)。
なお X のキーボード自動リピート(既定 660ms / 25回毎秒)は「離上+押下」の連打として届くので、 ゲーム側で長押しを判定するときは離上を少し様子見すること(NTsWallpaperEngine は 0.15 秒)。
| 対象 | 状況 |
|---|---|
| Raspberry Pi 4B | 実機で確認済み(起動、USB カセット導入、ゲーム実行、退避と再導入、ランチャー表示。HDMI 1280×720、Type-C を PC に接続して給電) |
| Raspberry Pi 5 | 設定は入っているが実機未検証(box64 のため 4K ページカーネルを使う) |
| ホームボタン基板 | 設計・発注データのみ(実基板は未製作。GPIO を模擬して動作確認済み) |
| ゲームパッド | ELECOM JC-U4013S(XInput モード / xpad ドライバ)を実機で確認済み(抜き差しの再認識、ランチャー操作、ゲーム起動)。ゲーム内のパッド操作は uinput の仮想 Xbox 360 パッドで確認(NTsWallpaperEngine) |
box64 によるエミュレーションなので CPU 負荷は高く、重い 3D ゲームは厳しい。 USB メモリは「ゲームカセット」として使うため、USB メディアからの起動とは併用しない。
lib/RasPiLib_UnityGpio/config pi-gen 設定(arm64 / trixie / STAGE_LIST)
build-image.sh ビルドラッパー(pi-gen の取得 → 独自ステージ同期 → ビルド)
stage-unityconsole/
00-base/ パッケージ(X/GL/pygame/git 等)・config.txt・ディレクトリ・権限
01-box64/ box64 の導入
02-gadget/ Type-C USB ガジェット(NCM + ACM)・dnsmasq・シリアル受信
03-cartridge/ USB カセット自動インストール・退避 CLI
04-launcher/ ランチャー(キオスク X セッション)と同梱フォント
05-purge-cloud-init/ cloud-init の除去(必ず最後)
lib/RasPiLib_UnityGpio/ GPIO 拡張の本体(サブモジュール・MIT。設計段階)
tools/send-app.py PC 側のアプリ転送ツール(pyserial)
hardware/home-button/ ホームボタン基板(KiCad 10)と JLCPCB 発注データ
docs/ ドキュメントと画面画像
本リポジトリの独自制作物(ビルド構成・スクリプト・ランチャー・PC 側ツール・ホームボタン基板の設計データ・ ドキュメント・画面デザインと画面画像)は Creative Commons 表示 - 継承 4.0 国際 (CC BY-SA 4.0) で公開しています。ライセンス正文は LICENSE を参照してください。 改変したものを公開するときは、同じ CC BY-SA 4.0(または互換ライセンス)で公開してください。
著作者(ライセンス主): ラジアン(柏木主税) / RadianN_kswg
利用時のクレジット表記例:
RasPiOS_UnityConsole by ラジアン(柏木主税) / RadianN_kswg
CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/
stage-unityconsole/04-launcher/files/fonts/ の x12y16pxMaruMonica.ttf と x14y24pxHeadUpDaisy.ttf)
— © hicc(患者長ひっく)、ゼロピクセルフリーフォント。
CC BY-SA 4.0 の対象外で、作者の独自ライセンス(ソフトウェアへの同梱・再配布・商用利用は可、
フォント単体の販売は不可など)に従います。要約は fonts/README.md、
正式な規約は配布サイトを参照してください。lib/RasPiLib_UnityGpio/(サブモジュール)は別リポジトリ RasPiLib_UnityGpio の内容で、
CC BY-SA 4.0 の対象外です。MIT ライセンスに従います(同ディレクトリの LICENSE を参照)。build-image.sh が取得します。.info ファイルにあり、ソースコードは Debian と
Raspberry Pi のアーカイブ(apt-get source <パッケージ名>)から入手できます。
No comments yet. Be the first to ask about this board.