- KiDoomは、1993年のクラシックシューティングゲームDOOMをKiCad PCBエディタ内でベクターベースにレンダリングするプロジェクト
- PCBの配線(trace)をグラフィック出力経路として使用し、毎秒10〜25フレームの速度で動作
- 同じ開発者はScopeDoomを通じてオシロスコープ上でもDOOMを実行しており、MacBookのヘッドホンジャックをDACとして活用
- このほかにもCircuitSnips.com、AIチャットアプリ、MQTTベースのトリガー、エンジンシミュレーターなど、さまざまな電子・ソフトウェアプロジェクトを進行
- ハードウェア設計とソフトウェアの創造性を組み合わせた電子工学ベースのインタラクティブ実験プロジェクトとして注目
主なプロジェクト概要
- KiDoomは、KiCad PCBエディタでDOOMをベクター方式でレンダリングする実験的実装
- PCB配線をグラフィック出力経路として使用
- 約10〜25 FPSの速度で動作
- ScopeDoomは、オシロスコープでDOOMを動作させるバージョン
- MacBookのヘッドホンジャックをデュアルチャネルDACとして使い、ベクターグラフィックスを4〜8Hzで表示
その他の公開プロジェクト
- CircuitSnips.com: KiCadサブ回路を共有するプラットフォームで、Thingiverseの回路版のような存在
- HIT Impact Android App: 外傷性脳損傷センサー向けのKotlinベースAndroidアプリ
- MQTT Duration Trigger: Home Assistant向けのMQTTベース持続時間トリガー統合ツール
- TheDuck.chat: T3 Cloneathon向けに開発されたAIベースのチャットアプリケーション
- bitwise-mcp: 組み込み開発者向けのMCPドキュメントサーバーで、PDF RMからレジスタ定義を抽出し高速な意味検索を提供
- KiCad Netlist Tool: KiCad SCHファイルのLLMトークン数を減らし、自動ドキュメント化を支援するツール
- Claude Code Comm Bot: VS Code統合向けのDiscordコミュニケーションボット
- Agent Tool (deprecated) : CLIツールおよびLLM Webサービス向けのリアルタイムストリーミングWebフロントエンド
- Engine Simulator [WIP] : ディーゼル6気筒エンジンを物理計算でシミュレーションするプロジェクト
- Vitamin/Supplement Price Comparison [WIP] : ブランド製サプリメントと一般製品の価格比較サイト
- Fuel Injector Characterizer: ArduinoとWebserialを用いた燃料インジェクター性能検証システム
個人開発環境
- VS Code Server: Tailscale VPNを通じたリモート開発環境
- Home Assistant: 認証が必要なスマートホーム自動化プラットフォーム
経歴要約
- 3件のECU開発、10年以上の経験、2,850万マイル以上の走行データに基づくプロジェクト経験を保有
1件のコメント
Hacker Newsのコメント
このプロジェクトはミーム性よりも実装方法のほうがずっと興味深い
DOOMをレンダリングしていること自体がすごいのではなく、PCBエディタのレンダリングパイプラインをハイジャックして、リアルタイムのベクターエンジンのように動作させている点が印象的
DOOMの内部構造からgeometryを直接抽出し、スプライトを実際の部品フットプリントにマッピングし、KiCadのオブジェクトモデルを全体再計算なしでリアルタイム更新している
さらに同じベクターストリームをオシロスコープのオーディオDACに送るアイデアまである
こうした「ツールを本来の目的とは違う形で使う」創造的なつながりがすばらしい
今後はScopeDoomの方向性のほうがさらに面白いかもしれない。ベクターディスプレイはレンダリングの発想そのものを完全に変えるし、DOOMがアナログ電圧信号で描かれるというのは詩的ですらある
さらに高速DAC、残光のあるアナログスコープ、動的なスプライト簡略化などを組み合わせれば、滑らかなベクターシューターの美学に近づきそう
図面を紙に印刷して、フリップブックのようにパラパラめくれないだろうかと考えた
そうしているうちに、いつかPowerPointプレゼンテーションになるのかもしれない
本当に驚くべきプロジェクト。まるでtom7や彼のYouTubeチャンネルの作品のように感じる
「エンジンからベクターデータを直接抽出する」という部分を見て、オシロスコープで実装した例があるのか気になった
DOOMはスプライトベースなので限界はあるが、背景くらいならレンダリングできそう
高速スコープを低解像度の白黒ラスターディスプレイとして使う例はあった
Quakeをオシロスコープで実装した動画を見つけたが、3Dモデルなので立体感が生きている
修正: 記事の後半でScopeDoomを見て驚いた。こういう試みはもっと以前からあったと思っていたが、意外と見つけにくい
Keysight MXAのような機器でDOOMを動かした例は多いが、それは単にPCとして使っているにすぎない
Spectrum DOOMはどうだろう。waterfall plotのスナップショットを使えば可能かもしれない
次の段階は、DOOMを実際にPCBとしてレンダリングしてプレイすることかもしれない
各フレームを発注し、2週間後に届いたボードを差し込みながら人生を振り返るプレイヤーの姿が目に浮かぶ
最近KiCadを学び始めたばかりだが、ゲーム開発のコワーキングスペースで働いているので、2つの世界が完璧に出会った感じがする。すばらしい
なぜこれが世界をより良い場所にするのかは分からないが、ただそう感じる
拡張アイデアとして、チップ設計CADファイルをもとに新しいマップを追加したら面白そう
チップが部屋になり、ソルダーのラインが通路になるような感じ
いつかやってみたいプロジェクトとして、マイクロコントローラベースのオーディオジャック表示システムを作りたいと思っていた
XY信号を直接使うか、ソフトモデムでWebからデコードするかで悩んでいた
アポロミッションでもこうした方式でTV映像を送っていた
現代のSSTVは数百Hz帯域でも動作するが、オーディオチャンネルの20kHzをすべて使えば、100x100ピクセル程度の解像度で1fps送信できる
これがKiCad v9の新しいソケットAPIを使ったものなのか気になる
自分はs-exprライブラリを直接作ってフットプリントとシンボルを注入したが、バグが多く不安定だった
もっと公式で安定した方法に移行したい
あなたのs-exprライブラリには興味がある。自分の別プロジェクトであるCircuitSnipsと重なる部分がありそう
CircuitSnipsは電子回路向けのThingiverseのようなサービスで、KiCanvasレンダラーにシート全体を供給する方法を自前で実装した
KiCad Discordで共有したとき、KiCad 9+のDesign Block機能が関連しているかもしれないというフィードバックももらった