ALIEN - 探索人工生命的世界
Artificial LIfe ENvironment (ALIEN)是一个基于CUDA专门设计的2D粒子引擎的人工生命模拟工具,用于模拟软体和流体。每个模拟的生命体由一个粒子网络组成,可以升级为更高级的功能,从纯信息处理能力到物理设备(如传感器、肌肉、武器、构造器等),这些功能由神经网络协调执行。这些生命体可以被视为在共同环境中运作的代理或数字有机体。它们的蓝图可以存储在基因组中并传递给后代。
模拟代码完全用CUDA编写,并针对大规模实时模拟进行了优化,可处理数百万个粒子。 开发的动力来自于更好地理解(前)生物进化的条件和生物系统日益增长的复杂性。 一个重要目标是通过现代用户界面、视觉上吸引人的渲染和趣味性方法使模拟器变得用户友好。
请加入我们的Discord服务器,这里是讨论ALIEN和人工生命相关话题、分享新发展和反馈的地方。
演示视频:新兴生态系统 | 2024年ALIFE虚拟生物竞赛获胜者
⚡ 主要特性
物理和图形引擎
- 用于模拟软体和刚体力学、流体、热量散失、损伤、粘附等的粒子
- 实时用户与运行中的模拟交互
- 模拟完全在GPU上通过CUDA运行
- 通过OpenGL使用CUDA-OpenGL互操作性进行渲染和后处理
人工生命引擎扩展
- 多细胞有机体被模拟为粒子网络
- 遗传系统和逐细胞构建后代
- 用于控制高级功能的神经网络(如传感器和肌肉)
- 可以使用各种颜色来根据自己的规格定制细胞类型
- 支持空间变化的模拟参数
广泛的编辑工具
- 用于操作每个粒子和连接的图形编辑器
- 自由手绘和几何绘图工具
- 用于设计定制有机体的基因编辑器
- 批量操作和(上/下)缩放功能
网络功能
- 内置模拟浏览器
- 下载和上传模拟文件
- 通过给予星星来为模拟投票
❓ 这有什么用
- 初步回答:通过观察进化的运作来满足你的好奇心!一旦自我复制的机器出现并开启突变,模拟本身就会完成一切。
- 也许最诚实的回答:乐趣!它几乎就像一个拥有快速而真实物理引擎的游戏。你可以用鼠标指针使成千上万的机器加速和破坏。感觉就像在你自己的宇宙中用自己的规则扮演上帝。不同的渲染风格和可视化编辑器为事件提供了令人着迷的洞察。YouTube频道上有很多视频可以说明这一点。
- 更学术的回答:这是一个解决基本问题的工具,探讨复杂性或类似生命的结构如何从简单组件中产生。整个生态系统如何适应环境变化并找到新的平衡?如何找到允许开放式进化的条件?
- 生成艺术的工具:进化是一种创造力,不断产生新的形式和行为。
📘 文档
前一个主要版本的文档,以教程形式向读者介绍模拟器,可在alien-project.gitbook.io/docs找到。请注意,其中许多信息已不再是最新的。 最新版本在程序本身中通过帮助窗口和工具提示包含了简要的文档和用户指南。
更多信息和艺术作品:
🖥️ 最低系统要求
需要一张计算能力为6.0或更高的Nvidia显卡。请查看https://en.wikipedia.org/wiki/CUDA#GPUs_supported。
💽 安装程序
Windows安装程序:alien-installer.msi(更新日期:2024-08-17)
如果程序因未知原因崩溃,请参考下面的故障排除部分。
🔨 如何构建源代码
构建过程主要通过跨平台的CMake构建系统和vcpkg包管理器自动化,vcpkg作为Git子模块包含在内。
获取源代码
要获取源代码,请在合适的目录(不应包含空格字符)中打开命令提示符,并输入以下命令:
git clone --recursive https://github.com/chrxh/alien.git
注意:--recursive
参数是必要的,以检出vcpkg子模块。此外,子模块通常不会通过标准的git pull
命令更新。相反,你需要写git pull --recurse-submodules
。
构建说明
先决条件:CUDA Toolkit 11.2+和CMake的工具链(如GCC 9.x+或MSVC v142+)。
构建步骤:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release -j8
如果一切顺利,ALIEN可执行文件可以在构建目录下的./alien
或.\Release\alien.exe
中找到,具体取决于所使用的工具链和平台。
重要的是要直接从构建文件夹启动ALIEN,否则它将找不到资源文件夹。
据报告,以下版本存在构建问题(更新日期:2024-06-22):
- GCC 13(版本11应该可以工作)
- Visual Studio 17.10(版本17.9应该可以工作)
- CUDA 12.5(版本12.4应该可以工作)
⌨️ 命令行界面
这个仓库还包含了ALIEN的CLI。它可以用来在不使用GUI的情况下运行模拟。这对于性能测量以及自动执行和评估不同参数的模拟非常有用。 CLI接受模拟文件及其参数和时间步数作为输入。然后它提供结果模拟文件和统计数据(作为CSV文件)作为输出。 例如,
.\cli.exe -i example.sim -o output.sim -t 1000
运行模拟文件example.sim
1000个时间步。
🔎 故障排除
请确保:
- 你有一张计算能力为6.0或更高的NVIDIA显卡(例如GeForce 10系列)。
- 你已安装最新的NVIDIA图形驱动程序。
- 安装目录的名称(包括父目录)不应包含非英语字符。如果不满足此条件,请将ALIEN重新安装到合适的目录。不要手动移动文件。如果你使用Windows,还要确保使用不包含非英语字符的Windows用户安装ALIEN。如果不是这种情况,可以创建一个新的Windows用户来解决这个问题。
- ALIEN需要对其自身目录有写入权限。这通常应该是默认的。
- 如果你有多个显卡,请检查你的主显示器是否连接到支持CUDA的显卡上。ALIEN使用同一显卡进行计算和渲染,并选择计算能力最高的那张。
- 如果你同时拥有集成显卡和独立显卡,请确保alien-executable被配置为使用你的高性能显卡。在Windows上,你需要访问"图形设置",将"alien.exe"添加到列表中,点击"选项",然后选择"高性能"。
如果这些条件不满足,ALIEN可能会意外崩溃。
如果条件满足但错误仍然发生,请使用命令行参数-d
启动ALIEN,尝试重现错误,然后在https://github.com/chrxh/alien/issues 创建一个GitHub问题,并附上log.txt。
🌌 截图
辐射源周围的不同植物群落
不同类型生物体的特写,可以看到它们的细胞网络
不同群体攻击生态系统
基因组编辑器
🧩 为项目做贡献
我们非常欢迎对项目的贡献。最便捷的方式是根据主题通过GitHub Issues、Pull requests或讨论论坛进行交流。例如,可以是:
- 提供新的内容(模拟或基因组文件)
- 制作或分享媒体文件
- 通过GitHub Issues或讨论论坛报告错误、需求功能、提问或反馈。
- 提交错误修复、代码清理、优化或小改动的Pull requests。如果你想实现新功能、重构或其他重大更改,请提前在讨论论坛进行咨询和协调。
- 对alien-docs进行扩展或修正。它有自己的仓库。
源代码的简要架构概述可以在文档中找到。
💎 致谢和依赖项
ALIEN由Christian Heinemann发起、主要开发和维护。感谢所有为这个仓库做出贡献的其他人:
使用了以下外部库:
- CUDA Toolkit
- Dear ImGui
- ImPlot
- ImFileDialog
- boost
- Glad
- GLFW
- glew
- stb
- cereal
- zlib
- zstr
- OpenSSL
- cpp-httplib
- googletest
- vcpkg
- WinReg
- CLI11
免费图标和图标字体:
- IconFontCppHeaders
- Iconduck(Google的Noto Emoji,Apache License 2.0)
- Iconfinder(Bogdan Rosu Creative,CC BY 4.0)
- Flaticon上由Freepik创建的人物图标(Flaticon许可证)
🧾 许可证
ALIEN采用BSD 3-Clause许可证授权。