- 1993年の名作ゲーム DOOM を ワイヤレスイヤホン PineBuds Pro で動作するよう移植したプロジェクトで、Web経由でリモートプレイが可能
- イヤホンとWebサーバーを接続する シリアルサーバー (serial server)、Webサーバー、静的Webページ、そして DOOMポート の4つの構成要素から成る
- UART接続 により約2.4Mbpsの帯域幅を確保し、MJPEGストリーム で映像を送信して理論上最大27FPSを達成
- CPUを100MHzから300MHzにオーバークロックし、JPEGエンコード の制約により実効性能は約18FPSを確保
- RAM・FLASHの制約 を最適化と軽量化された Squashware WADファイル で克服し、オープンソースファームウェアベースのハードウェア実験の可能性を示す
プロジェクト概要
- 1993年に発売された DOOM を PineBuds Pro イヤホンで実行できるように移植
- PineBuds Proは オープンソースファームウェア をサポートする唯一のワイヤレスイヤホンとして言及されている
- Webサイトの訪問者はキューに登録してリモートでゲームをプレイできる
- プロジェクトは4つの部分で構成
- イヤホン上で動作するDOOMポート
- イヤホンとWebサーバーを接続し、MJPEGストリームをTwitchに変換する シリアルサーバー
- アセット提供、キュー管理、キー入力の転送、ストリーム表示を担当する Webサーバー
- ブラウザ表示とサーバー通信を担当する 静的Webページ
ハードウェアと接続構成
- イヤホンにはディスプレイがないため、Bluetooth または UART接点パッド でデータを送受信
- Bluetoothは約1Mbpsと遅く、UART (2.4Mbps) の方が適している
- DOOMのフレームバッファは320×200解像度、8ビットカラーで約 96KB
- UART帯域幅基準では約 3FPS の転送が可能
- これを改善するため MJPEGストリーム 方式を採用
- JPEGエンコーダー として bitbank2/JPEGENC を使用
- 平均JPEGフレームサイズは11〜13.5KB
- 理論上の最大FPSは22〜27FPS水準
CPU性能調整
- 標準ファームウェアのCPUクロックは100MHzだが、これを 300MHzに引き上げ、低電力モードを無効化
- Cortex-M4F (300MHz) はDOOMの実行には十分だが、JPEGエンコード でボトルネックが発生
メモリ (RAM) 最適化
- 標準で利用可能なRAMは 768KB、補助プロセッサを無効化すると 992KB を確保
- DOOMは4MB RAMを要求するため、さまざまな最適化を実施
- ルックアップテーブルの事前生成、const変数のフラッシュ保存、キャッシュシステムの無効化、不要変数の削除 などでメモリを節約
フラッシュ (FLASH) 容量の問題
- DOOM 1の基本 WADファイル は4.2MBで、イヤホンの4MB保存上限を超過
- fragglet の軽量版 Squashware WAD (1.7MB) を使うことで問題を解決
オープンソースとアクセシビリティ
- プロジェクトコードは2つのGitHubリポジトリで公開
- Webサイトはキュー方式で運営されており、5番目の順番から Twitchストリーム が 低遅延MJPEGストリーム に切り替わる
5件のコメント
「DOOMが動く」
DOOMの達人たちは本当に…すごいですね
うわ、これはちょっと…やばすぎるwwwww
なんてこった
Hacker Newsの意見
どんな単純な機器でも DOOM が動くのを見るたびに、これがソフトウェアの勝利なのか、それともより安価な 専用ハードウェア を作れなかった経済的失敗なのか考えてしまう
ANC Bluetooth イヤホンは単純な製品ではなく、ノイズキャンセリング は非常に複雑な演算を継続的に実行する必要がある
高速な MCU は単なる無駄ではなく、低遅延 と効率的な電力管理という利点がある
完璧な ASIC を作るより、汎用 MCU でアップデート可能な構造を持たせる方がはるかに現実的だ
結局のところ、実績のある MCU を大量購入する方が、カスタムチップを作るよりずっと経済的だ
カスタムチップを設計・生産するための人件費、テスト、教育、少量生産のコストの方がむしろ高い
材料費よりも ビジネスプロセスのコスト がはるかに大きな割合を占めている
イヤホンで DOOM が動く世界なのに、これを否定的に見る理由はない
過剰なスペックではあるが、そのすべてが耳の中に収まるというのが驚きだ
私が DOOM を PineBuds Pro に移植した
インターネット経由で接続すれば、自分のイヤホン上で DOOM をプレイできる
詳細と GitHub リンクは自分のサイトにある
毎回 DOOM ばかり移植されるのは少し残念だ
昔は単純だけど 中毒性のあるゲーム が多かったのに、今のゲームは大きすぎて複雑すぎ、小さなプラットフォームに移すのが難しい
業界はインディーを除けば方向を見失ったように思える
昔の Master of Orion 1 のようなゲームは単純でも繰り返し楽しめた
今のゲームは映像のように 相互作用が少なく、XP稼ぎ 中心なので興味が薄れる
すでに伝統のように続いている
今ではほとんどのユーザーが容量や性能をあまり気にしない
消費者が「ちゃんと動けばそれでいい」という態度を取るようになり、最適化の価値 が下がっている
それでもインディーシーンには短くて スタイリッシュなゲーム が今でもたくさんある
ただ、映画のように短いゲームは大きな印象を残しにくいため、あまり知られていないだけだ
DOOM の移植一覧は Wikipedia のページ で見られる
PineBuds Pro にとって 素晴らしい宣伝効果 だと思う
Fairbuds でもこういうことができるのだろうか
それにしても、こんなに多くの機器で DOOM が動くのに、なぜまだ 386 では滑らかに動作 しないのだろう
John Carmack が DOOM 3 以降のインタビューで、エンジンが複雑になるにつれて すべてのコードを一人で書けなくなった と語っていたのを思い出す
今の AI 時代 に彼がどう考えているのか気になる
個人的には、AI に対して前向きだと思う
それと “Masters of Doom” は本当に良い本なのでおすすめだ
PineBuds Pro を使ったことがある人がいるか気になる
Pine64 IRC には関連チャンネルがなく、聞きづらかった
装着感や音質は分からないが、Pine64 の Discord チャンネル には Pinebuds 専用ルームがある
わざと ANC なしのファームウェアを入れているが、Bluetooth イヤホン としては十分に役目を果たしている
数年後には、イヤホンの RAM がもう少し増えれば ローカル Kubernetes クラスター も動かせそうだ
「DOOM を使い捨て電子タバコのチップに移植した」という投稿を待っている 😄
ムーアの法則が続くなら、約 10年後 には可能かもしれない
イヤホンに直接接続された 独立ビューアー もモバイルで動作する
デモ動画 参照
タッチ操作はなく、イントロのループだけが再生される