ALIEN - CUDAベースの人工生命シミュレーションプログラム
(github.com/chrxh)- ALIENはCUDAベースの2D粒子エンジンで、ソフトボディ、流体、細胞ネットワーク型のデジタル生命体をリアルタイムにシミュレートする人工生命環境
- シミュレーション内のボディは粒子ネットワークで構成され、センサー・筋肉・武器・生成器のような高レベル機能をニューラルネットワークが調整し、設計図はゲノムとして保存して子孫に伝達できる
- シミュレーションコード全体はCUDAで書かれており、数百万個の粒子を扱う大規模リアルタイムシミュレーションに最適化され、レンダリングにはCUDA-OpenGL連携を使用
- ユーザーは実行中のシミュレーションと対話し、グラフエディタ・フリーハンド/幾何ツール・ゲノムエディタ・一括操作で生命体と環境を編集できる
- 実行にはcompute capability 6.0以上のNVIDIA GPUが必要で、GUIなしでシミュレーションを実行・評価するCLIも含まれる
ALIENがシミュレートする対象
- ALIENはArtificial LIfe ENvironmentの略で、人工生命シミュレーションツール
- 基盤はCUDAで書かれた特殊な2D粒子エンジンで、ソフトボディと流体を扱うよう設計されている
- 各シミュレーションボディは粒子ネットワークで構成される
- 純粋な情報処理機能からセンサー、筋肉、武器、生成器のような物理装置まで、高レベル機能を付与できる
- こうした機能の実行はニューラルネットワークが調整する
- ボディは共通環境で動作するエージェント、またはデジタル有機体と見なせる
- 設計図はゲノムに保存され、子孫へ伝達され得る
- 開発目的は、前生物学的進化と生物学的システムの複雑性が増大する条件をよりよく理解することにある
- モダンなUI、視覚的に見栄えのよいレンダリング、遊びに近いアプローチにより、使いやすいシミュレータを作ることも重要な目標
物理・グラフィックエンジン
- 粒子はソフトボディ・剛体力学・流体・熱放出・損傷・接着などをシミュレートするために使われる
- 実行中のシミュレーションに対するリアルタイムのユーザーインタラクションをサポート
- シミュレーションはCUDAを通じてすべてGPU上で実行される
- レンダリングとポスト処理は、CUDA-OpenGL相互運用性を使用するOpenGLベース
人工生命機能
- 多細胞有機体は粒子ネットワークとしてシミュレートされる
- 遺伝システムと、細胞単位の子孫生成をサポート
- センサーや筋肉のような高レベル機能はニューラルネットワークで制御される
- さまざまな色を使い、ユーザーが定めた仕様に従って細胞タイプをカスタマイズできる
- 空間に応じて変化するシミュレーションパラメータをサポート
編集・共有ツール
- 編集ツールはシミュレーション構成要素を直接操作することに重点を置く
- グラフエディタで、すべての粒子と接続を操作できる
- フリーハンドおよび幾何学的な描画ツールを提供
- ゲノムエディタでカスタム有機体を設計できる
- 一括操作とズーム機能をサポート
- ネットワーキング機能も含まれる
- 内蔵シミュレーションブラウザを提供
- シミュレーションファイルのダウンロードとアップロードをサポート
- 星を付ける方式でシミュレーションを推薦できる
活用目的
- 自己複製機械と突然変異を有効にするとシミュレーション自体が進行し、ユーザーは進化が機能する様子を観察できる
- 高速でリアルな物理エンジンを備えたゲームのように利用できる
- マウスカーソルで数十万個の機械を加速したり破壊したりできる
- さまざまなレンダリングスタイルとビジュアルエディタがイベントの観察を助ける
- 例はYouTube channelにある
- 学術的には、単純な構成要素から複雑性または生命に似た構造がどのように生じ得るかを探究するツール
- 生態系が環境変化に適応し、新しい均衡を見つける方法
- オープンエンドな進化を可能にする条件を見つける問題
- 生成アートツールとしても使うことができ、進化が新しい形態と振る舞いを生み出す創造的な力として働く
ドキュメントと実行条件
- 以前のメジャーバージョン向けドキュメントはalien-project.gitbook.io/docsにあり、チュートリアル形式の記事でシミュレータを紹介している
- そのドキュメントの多くの情報は、もはや最新ではない
- 最新バージョンは、プログラム内のヘルプウィンドウとツールチップで簡単なドキュメントとユーザーガイドを提供する
- 追加資料はWebsite、YouTube、Twitter、Reddit、Discordにある
- 最小システム要件はcompute capability 6.0以上のNVIDIAグラフィックカード
- Windows用インストーラはalien-installer.msiで、README基準の更新日は2025-09-06
ビルドとCLI
- ソースビルドは、クロスプラットフォームのCMakeと、Gitサブモジュールとして含まれるvcpkgパッケージマネージャを使ってほぼ自動化されている
- ソースを取得するときは、vcpkgサブモジュールまでチェックアウトするために
--recursiveが必要- 標準の
git pullは通常サブモジュールを更新しないため、git pull --recurse-submodulesを使う必要がある
- 標準の
- WindowsとLinuxのどちらもNinjaとCUDAコンパイラ
nvccを使用- 必要条件はCUDA Toolkit 11.2+
- WindowsではVisual Studioの“Desktop development with C++”と“C++ CMake tools for Windows”コンポーネントが必要
- LinuxではGCC、
ninja-build、X11/OpenGL開発ライブラリが必要
- ビルドコマンドは
cmake --preset ninjaとcmake --build --preset ninja-release - 実行ファイルは
build-ninja/Release/以下に生成され、リソースフォルダを見つけるためにビルドフォルダから直接実行する必要がある - リポジトリには、GUIなしでシミュレーションを実行するCLIも含まれる
- 性能測定と、複数パラメータに対する自動実行・評価に使用できる
- 入力はシミュレーションファイル、パラメータ、時間ステップ数
- 出力は結果シミュレーションファイルとCSV統計ファイル
- コマンド例
.\cli.exe -i example.sim -o output.sim -t 1000は、example.simを1000時間ステップの間実行する
トラブルシューティングとライセンス
- 原因不明でクラッシュする場合は、まず要件を確認する必要がある
- compute capability 6.0以上のNVIDIA GPUが必要
- 最新のNVIDIAグラフィックドライバがインストールされている必要がある
- インストールディレクトリとその上位ディレクトリ名に英語以外の文字が含まれていてはならない
- Windowsでは、ALIENをインストールしたWindowsユーザー名にも英語以外の文字が含まれていてはならない
- ALIENには自身のディレクトリへの書き込み権限が必要
- 複数のGPUがある場合、メインモニターがCUDA対応カードに接続されている必要がある
- 内蔵・専用グラフィックカードを併用している場合、
alien.exeが高性能グラフィックカードを使用するよう設定する必要がある
- 条件を満たしてもエラーが続く場合は、
-dコマンドラインパラメータでALIENを起動してエラーを再現したうえで、log.txtを添付してGitHub issueを作成する必要がある - コントリビューションはGitHub Issues、Pull requests、Discussion forumを通じて受け付ける
- ALIENはBSD 3-Clauseライセンスで配布される
1件のコメント
Hacker News のコメント
最初に探したかった資料が思ったより見つけにくく、GitHub の動画は自分の環境では読み込まれなかったので、リンクをまとめておく:
https://www.youtube.com/@alien-project/videos
https://www.youtube.com/watch?v=qwbMGPkoJmg
https://www.youtube.com/watch?v=w9R6zrdl6jM
また、Linux でどう動作するのかは完全には明確ではなく、ぱっと見では Windows + NVidia 構成に限定されているように見える。間違いだと確認できるとよいのだが
こういうものを作ってみたいけれど、どこから始めればよいかわからないなら https://natureofcode.com/ をおすすめする
初心者向けで JS ライブラリを使っているが、扱っている 核となるアイデア は一般に応用できる
むしろ逆に The Code of Nature のほうが自然だった気がする
ここ数か月、Alien シミュレーションを長時間走らせていて、PC を使うかどうかに応じて電源を入れたり切ったりしている
RGB Triad の初期設定プリセットで始めたのだが、驚くのは、3種類の生物がそれぞれ異なる方法で複雑な細胞のような構造を作ることだ
幾何学的な結晶、ほかのものを食べようとする長いひも、壁を形成するトゲ状の構造まで生まれていて、本当に魅惑的だ
小さな粒子がそれぞれ固有の振る舞いをする Flash ゲームを、今でも良い思い出として覚えている
各粒子は衝突し、反応し、変換したり、ほかの粒子素材を破壊したりできた。ウェブサイトやゲーム名は覚えていないが、創発的な遊びに触れるのはいつでも楽しい
[1] https://dan-ball.jp/en/javagame/dust/
[2] https://powdertoy.co.uk/
ウェブサイト: https://alien-project.org/
驚いた。セル・オートマトン と Conway の Game of Life が好きなのだが、これはなかなか良さそうなゲームに見える
かなりクール。何人かが実行を試しているのを見ると、AMD でも可能性はありそうだ: https://github.com/chrxh/alien/issues/99
息をのむほど素晴らしい。動画をいくつか見たが、今作っているエイリアン生命進化シミュレーターを思い出した
自分のコンソールベースのプログラムは這っているレベルだが、このプロジェクトは 空を飛んでいるレベル だ
素晴らしそうだが、いったい 画面移動 はどうやるのかわからない