世界を動かす技術を、日本語で。

現実の中のコンウェイのライフゲーム

概要

  • Conway's Game of Life を物理インタラクティブアートとして実装した体験談
  • 17×17マトリクススイッチ とLEDによるハードウェア設計
  • コスト管理 や部品選定の工夫、回路設計の詳細解説
  • ファームウェアの安全設計 やユーザーインターフェースの工夫
  • コスト比較や代替案、より高価なアプローチへの提案も紹介

Conway's Game of Life物理インタラクティブアート化計画

  • Conway's Game of Life は、2次元グリッド上でセルが生死を繰り返すセル・オートマトン
  • 生存・誕生・死滅 のルールにより、シンプルな規則から複雑なパターンが生まれる現象
  • ゲームというよりは、 初期パターンを描いて観察するアート としての側面
  • インタラクティブアート好き として、物理的な装置で実現することを決意

設計と部品選定

  • 予算を設定し、 実際には10倍のコスト を見込んで計画
  • NKK JB15LPF-JFスイッチ を17×17マトリクスで使用
  • スイッチ単価は 約$3 で、コストの大半を占める
  • PCB設計 では、スイッチが基板の大部分を占拠
    • 左下には Microchip AVR128DA64 を配置
  • スイッチ内蔵LED をx-yグリッドで配置し、MCUのGPIOで制御

回路設計と制御方式

  • 17本のGPIOで 各行のLEDのグランドを切り替え
  • 別の17本で 各列に正電圧を供給
  • ダイオードの点灯 は、行と列の信号が交わる箇所で発生
  • 各行のデューティ比は 1/17(約6%)、明るさ確保のためLED電流を増加
  • 20Ω抵抗 で電流制限、1LEDあたり約 150mA
  • 全行点灯時は最大2.5A 消費だが、通常はプレイフィールドの多くが消灯
  • MCUの駆動力不足を補うため、 n-channel MOSFET(DMN2056U) で行切り替え、 p-channelトランジスタ(DMG2301L) で列を制御

入力検出・ユーザーインターフェース

  • 行選択ラインを利用し、 スイッチ入力検出 も実現
  • 17本のGPIOで スイッチのON/OFFを検知、MCU内蔵プルアップ抵抗を活用
  • 速度調整用ポテンショメータ (Vishay ACCKIS2012NLD6)を右下に設置し、ADCで読み取り
  • ノブ位置に応じて 0〜10Hz でシミュレーション進行
  • スイッチ操作でセルのON/OFFを切り替え、 2秒間ゲーム評価を一時停止 し、複数セルの編集が容易

ファームウェアと安全設計

  • 画面書き換え処理とゲームロジックを分離 し、LED全消灯中に状態更新
  • 150mAの持続点灯によるダイオード損傷防止
  • ウォッチドッグタイマー を有効化し、15ms以上メインループが停止した場合は自動再起動

ケース・完成品・デモ

  • 手作り木製ケース に組み込み、見た目も工夫
  • 動作動画も公開、 ソースコードやPCB設計データ も提供

コスト・代替案・発展的アイデア

  • スイッチのコストが 全体の大半 を占める
  • タッチスクリーン なら安価かつ高機能だが、 触感の楽しさ は失われる
  • 安価なスイッチ+独立LED+自作キーキャップ も可能だが、設備・材料・時間コストが増大
  • さらにコストをかけるなら、 フリップドットディスプレイ など完全電気機械式も面白い選択肢

まとめ・関連情報

  • 電子回路設計・アルゴリズム・オタク文化 をテーマにした独自記事も執筆
  • 読者登録 や他の記事への誘導も推奨

Hackerたちの意見

私の母校にはこれのジャンボ版があって、「ライフゲーム」がいくつかあるモードの一つなんだよね。

プロジェクトにかけるのに妥当な金額を考えたら、それを10倍にしたんだ。君の考え方、いいね。

ジェフ・アトウッドの名言があるんだ。「シャンデリアの電球を18個交換する必要があったんだけど、18倍するのは結構な金額だってことがわかった。」

スイスのコンピュータ博物館で見たことがあるよ。すごく大きなフィールドで、大きなオレンジのLED(それともチューブだったかな?)が使われてたんだけど、いろんなセルオートマトンゲームがサイクルしてたんだ。個々の「ピクセル」が見えるのがすごく魅力的だった。

ティーンエイジャーの頃、コモドールのアセンブリ言語についての本を読んで、すごくシンプルな方法でライフゲームを実装したんだ。テキスト画面だけを使ったよ。セルをオンにするには、アスタリスク('*')を入れるだけ。そしたら、マシンコードプログラムを実行して、ライフゲームのルールに従って進化していった。

それをやらなかった人なんていないよね! :) ASCIIテーブルの上半分から半ブロックや四分の一ブロックのキャラクターを使えば、解像度を4倍にできたし。 (C64の場合はPETSCIIのやつだね)。

「わあ、8ビットマシンはどうやってそれを実現したの? RAMをたくさん食うように見えるけど」という疑問の答えは、フレームバッファがデータストレージになってるってことだよ。実際、フル解像度のフレームバッファがアドレス可能なRAMの1/4だったから、RAMの使用を最大限に活用する必要があったんだ。

完全に話が逸れちゃうけど、もしかしたら間違ってるかもだけど、非LLMの文体がすぐに好きになったし、ただその文章だけで内容に引き込まれたんだ。最近は珍しいよね。

lcamtufは何十年もそれをやってるよ!

個人的には、LLMの文章を読むのがほとんど耐えられない。1、2文読んだら、たくさんの記事を閉じちゃうんだ。これが長期的にエンゲージメントにどう影響するのか、ちょっと気になる。

そんなに珍しくなってるとは感じてないな。確かにYouTubeみたいなプラットフォームでは、自動化されたプロセスがつまらないコンテンツを大量生産してるのは見かけるけど。俺が興味あるおもちゃの電子プロジェクトや、古いゲームのスプライトの描画方法、色空間分析、ツイートに収まるコンパイラみたいな話には影響が出てないと思う。AIが書いた「どうやってサブスクリプションで月1000ドル稼いだか」みたいな記事はたくさんあるだろうけど、それと昔のものを比べて失ったものがあるとは思えないな。

もっと安く済ませる方法は、いくつかのNovation Launchpadを買うことかも。90€で8x8のフルRGBタクタイルボタンが手に入るし、MIDIで操作できる。4つ並べれば16x16で360€、ケーブルやコントローラー代を少し足しても、全体で1/3の価格になるよ。

もっと大きくなるだろうし(ミニでも)、4つの間に隙間ができるし、各部分の真ん中の4つのボタンは角がカットされてるよ。でも、もっと安く照明付きボタンが手に入るよ: https://www.ebay.com/itm/173922115935

こういうスイッチは、3Dプリンターやレーザーカッター、透明または半透明のアクリル板、タクタイルスイッチ、LEDを使って安く作れるかも。俺は50ドルで安いテレライトスイッチの代替品を設計して、価格を約0.60ドルまで下げたことがあるよ。サイズが大きいから、理想のサイズにするのはちょっと大変かもしれないけど。とりあえず、俺の偽の安いテレライトスイッチの動画を見てみて!: https://www.youtube.com/watch?v=LaenrgPVCjc

これは素晴らしいね。実際のポンテーブルを持ってるんだけど、みんな大好きなんだ。[0] デジタルなものの物質的で一つのことしかできない形には、なんか魔法のようなものがあるよね。—— 何百万もの磁気制御された縦に押し出すロッドピクセルからなるフラットなテーブルトップスクリーンが楽しみだな。実際の色が制御されたピクセルがその長さに沿って並んでいて、D&Dのダンジョンや地形を驚くべきテーブル表示/押し出しでミニチュア用に作れるんだ。ちょっとしたセンサー機能があって、押し出しが横に「スクロール」すると、ミニチュアも一緒に動く小さなリップができて、位置を保てるようになるんだ。NPCもDMの指示で動かせるし。部屋の明かりを消して、光のピクセルを色だけじゃなくて、壁のランプが点滅するようなライティングエフェクトにも使えたら、怖い位置分布の音を加えたり… これ、すぐに実現するよね? どこかの部分で、これをClaudeに説明して、反復して、「さあ、そのデザインを磨いて、部品を経済的に最適化して、サプライチェーンにリンクさせて、最初のレビュー用ユニットを送ってくれ」と言いたくなる。これ、すぐに来るよね? 現実の平面を分けるラインが、どんどんぼやけてきてる。—— [0] https://www.youtube.com/watch?v=84Ymt9BAq5s

それに、何千ものアクチュエーターのうちの一つが詰まったり壊れたりしたときの修理も考慮しないとね… でも、ちょっと面白いアイデアがあるんだけど、サンドテーブルとKinectのプロジェクションマッピングのデモ見たことある?それに、二軸で動く磁石の砂マンダラのマーブル描画テーブルを組み合わせたらどうかな?アクチュエーターが道を描いたり、地形を作ったりして、マーブルを放してフィギュアをつかむって感じ。

Technology Will Save Usは、明るい過去からの最後の作品としてArcade Coderを作った。12×12のタクタイルボタンに内部にカラーレッドがあって、Scratchのようなコードブロックでプログラムできるアプリとインタラクティブなチュートリアルが付いてる。ESP32ベースだよ。アプリは短期間だけアプリストアにあったから、今もその命を続ける努力があるみたい。 https://github.com/padraigfl/twsu-arcade-coder-esp32

これはコアメモリーアレイを使ってやると面白そうだね。こんなのよりもっと大きいやつね。