
マイコンにつないだ小さな液晶に何を映すか。時計や天気、システムの状態あたりが定番だろう。ootake氏が公開した「Baiyosou」は、そこに生態系そのものを置いた。3Dのワイヤーフレームで描かれた水槽の中で、植物が育ち、草食動物が群れをなして食べに行き、それを肉食動物が狩る。人が操作しなくても、勝手に回り続ける。
登場するのは6種類だ。エネルギーの出発点になる植物、群れて草を探す草食動物、それを狙う肉食動物、さらに上位の捕食者、生態系に取りつく寄生性の胞子、そして死骸を片付けてエネルギーを植物へ戻す分解者が加わる。捕食も感染も距離の判定で起こるため、どの個体がいつ食べられるかは決まっていない。
描画と計算は自作でまとめてある。3Dの線画を描く部分は独自の実装で、透視投影に加えて、奥にあるものほど線を薄くする処理が入る。物理は一定の時間刻みで回し、平方根の逆数を求める場面では高速な近似計算を使う。草食動物の群れは、向きをそろえる、集まる、ぶつからないという3つの規則を組み合わせるBoidsの考え方で動く。面白いのは風の作り方で、ローレンツアトラクターというカオス理論でよく知られる方程式を流れの力として与えている。おかげで動きが一定の周期に落ち着かず、群れの形が絶えず崩れ続ける。
操作はタッチだけだ。画面を押したままにすると、指の位置に重力の特異点が生まれ、近くの生き物と分解者が吸い寄せられる。指を離すと衝撃波と粒子が散り、集まっていた群れがほどける。
動かす先はESP32-2432S028Rという、2.8インチで240×320ドットのSPI液晶と抵抗膜タッチを載せた安価なボードだ。書き込みはWeb Serialに対応したブラウザーから直接でき、Arduino IDEの用意は要らない。4MB分のファームウェアも配布されているので、esptoolでまとめて書き込む方法も選べる。

