はじめに
この記事は、Akatsuki Games Advent Calendar 2023 の13日目の記事です。
昨日の記事は、スーさんの「DoxygenでC++クラスを分析し、GitHub ActionsでPRコメントする仕組みを作ってみました」でした。”GitHub Actionsで自動的にPRにコメントする仕組み”、業務フローの改善など応用が効きそうで、とても素敵ですね..!絶対読むべきです。
この記事では、
- ものの動きや形が好き
- 最先端のライフゲームが気になる
といった人を対象として、2022年に発表された最先端?のライフゲーム(Particle Lenia)について簡単に説明します。そして、Unityで作成したものを眺めます。
Particle Leniaまで超ざっくり解説
そもそもライフゲームってなに??
Particle Leniaについて説明する前に、そもそもライフゲームとは何かを説明する必要があります。
ライフゲームとは、1970年に数学者のJohn Horton Conwayが考案した、生命プロセスを(超簡易的に)再現するグリッドベースのシミュレーションです。
グリッドの各マス目には「生」と「死」の2つの状態があり、あるマス目の次のステップの状態を、近接の8つのマス目の状態から以下のルールに基づき更新します。
- 死→生になる条件:近接の3つのマス目が生。(誕生)
- 死→死になる条件:上以外。
- 生→生になる条件:近接の2もしくは3つのマス目が生(維持)
- 生→死になる条件:上以外。(過疎、過密)
ライフゲームは、上のような簡単なルールで実装できるにもかかわらず、「移動」「繁殖」「振動」など、生命現象に共通する多くのパターンを再現できることが知られています。
youtubeで上の方に出てきたライフゲームの動画を添付しておきます。 ただのライフゲームの時点で、すでに素敵ですね。
Leniaってなに??
次にParticle Leniaについて説明したいところですが、Leniaについても説明する必要があります。
Leniaとは、ライフゲームを時空間共に連続的に表現したもの、いわば「ライフゲームの連続版」です。ライフゲームにおけるグリッドの1マスがLeniaでは空間上の1点に対応し、近接の定義や、生死を決定するルールが連続的な関数で表現されます[1]。
これにより、Conweyのライフゲームではみられないような、複雑な動き/形態を表現できるようになります。
こちらのサイトで遊ぶことができます。Leniaのパラメータセットに、それっぽい種名や科名がついていておもしろいです。
[1]の著者であるBertChanさんのYoutubeも載せておきます。
動きや見た目がかかわいいですね。自分は120度の回転対称の形態をしているやつが好きです(この動画にないかも..)。Particle Leniaってなに??
今回実装したParticle Leniaは、ざっくり説明するとLeniaのメカニズムに影響を受けて作成された粒子系のシミュレーションです[2]。
- 粒子の位置をもとに、特定の関数(Leniaで用いる関数とほぼ同じ)でエネルギーの場を表現する
- 粒子の位置をエネルギーの低い方向(安定する方向)に動かす
をくりかえすことで、全体の挙動を計算しています。
粒子系でシミュレーションすることで、
- 質量が保存される(粒子の数を固定すると絶滅することはない)
- 粒子に対して異なるパラメータを設定できる(異なる種を同じシミュレーションに共存させることが簡単にできる)
などのメリットがあり、Leniaより拡張性がありそなうな予感です。
[2]に載ってあるYoutubeを添付しておきます。
粒子の挙動に合わせて音までついていて、見ていて楽しいですね。作って眺める
実際にパラメータを動かして挙動を確認してみたかったので、[2]を参考にParticle LeniaをUnity上で実装してみました。その際、[2]と同じになると面白くないので、Compute Shaderを用いて、GPUの力で大量の粒子をシミュレーションしてみました。具体的には、512x512のTexture上で5000個の粒子を用いて、シミュレーションしました。
下の動画が、複数のパラメータセットを切り替えながらシミュレーションを行ったものになります。
[2]の動画にあるような、ダイナミックな移動を再現することはできませんでしたが(粒子の初期位置が重要そう..)、どことなく有機的なパターンを再現することができました。4つのパラメータしか変化させていませんが、こんなにも多様なパターンを作成できるのは興味深いですね。
参考文献
[1]:Chan, B. W.-C. (2018). Lenia-biology of artificial life. arXiv preprint arXiv:1812.05433.
[2]:Mordvintsev, A., Niklasson, E., and Randazzo, E. (2022). Particle lenia and the energy-based formulation.
終わりに
かなり雑な説明になりましたが、最先端のライフゲームの面白さや美しさを、少しでも共感できたなら幸せです。
明日はkota miyakawaさんの"which-keyはいいぞ (デスクトップは燃えません)"という内容です。なんだか楽しそうですね。
最後に、アカツキゲームスでは一緒に働くエンジニアを募集しています。お気軽にご応募ください。応募はここから