4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

最先端のライフゲーム(Particle Lenia)を作ったので眺める

Last updated at Posted at 2023-12-13

はじめに

この記事は、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]。

  1. 粒子の位置をもとに、特定の関数(Leniaで用いる関数とほぼ同じ)でエネルギーの場を表現する
  2. 粒子の位置をエネルギーの低い方向(安定する方向)に動かす

をくりかえすことで、全体の挙動を計算しています。

粒子系でシミュレーションすることで、

  • 質量が保存される(粒子の数を固定すると絶滅することはない)
  • 粒子に対して異なるパラメータを設定できる(異なる種を同じシミュレーションに共存させることが簡単にできる)

などのメリットがあり、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はいいぞ (デスクトップは燃えません)"という内容です。なんだか楽しそうですね。
最後に、アカツキゲームスでは一緒に働くエンジニアを募集しています。お気軽にご応募ください。応募はここから

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?