ALIEN - Programa de simulação de vida artificial baseado em CUDA
(github.com/chrxh)- ALIEN é um ambiente de vida artificial com um motor de partículas 2D baseado em CUDA que simula em tempo real corpos moles, fluidos e formas de vida digitais em rede celular
- Os corpos simulados são compostos por redes de partículas, e funções de alto nível como sensores, músculos, armas e geradores são coordenadas por redes neurais; o projeto pode ser armazenado em um genoma e transmitido aos descendentes
- Todo o código de simulação foi escrito em CUDA, otimizado para simulações massivas em tempo real com milhões de partículas, e a renderização usa integração CUDA-OpenGL
- O usuário pode interagir com a simulação em execução e editar organismos e ambientes com editor de grafos, ferramentas de desenho à mão livre/geométricas, editor de genoma e operações em massa
- Para executar, é necessária uma GPU NVIDIA com compute capability 6.0 ou superior, e o projeto também inclui uma CLI para rodar e avaliar simulações sem GUI
O que o ALIEN simula
- ALIEN significa Artificial LIfe ENvironment e é uma ferramenta de simulação de vida artificial
- Sua base é um motor especializado de partículas 2D escrito em CUDA, projetado para lidar com corpos moles e fluidos
- Cada corpo simulado é composto por uma rede de partículas
- É possível anexar funções de alto nível, desde processamento puramente informacional até equipamentos físicos como sensores, músculos, armas e geradores
- A execução dessas funções é coordenada por uma rede neural
- O corpo pode ser visto como um agente ou organismo digital que opera em um ambiente compartilhado
- O projeto é armazenado em um genoma e pode ser transmitido aos descendentes
- O objetivo do desenvolvimento é entender melhor a evolução pré-biótica e as condições que aumentam a complexidade em sistemas biológicos
- Outro objetivo importante é criar um simulador fácil de usar, com UI moderna, renderização visualmente agradável e uma abordagem próxima de uma brincadeira
Motor físico e gráfico
- As partículas são usadas para simular corpos moles, dinâmica de corpos rígidos, fluidos, emissão de calor, dano e adesão
- Há suporte a interação do usuário em tempo real com a simulação em execução
- A simulação é executada inteiramente na GPU via CUDA
- A renderização e o pós-processamento são baseados em OpenGL, usando interoperabilidade CUDA-OpenGL
Recursos de vida artificial
- Organismos multicelulares são simulados como redes de partículas
- Há suporte a sistema genético e geração de descendentes em nível celular
- Funções de alto nível como sensores e músculos são controladas por redes neurais
- É possível personalizar tipos celulares conforme especificações definidas pelo usuário usando várias cores
- Há suporte a parâmetros de simulação que variam conforme o espaço
Ferramentas de edição e compartilhamento
- As ferramentas de edição focam na manipulação direta dos componentes da simulação
- Com o editor de grafos, é possível manipular todas as partículas e conexões
- Há ferramentas de desenho à mão livre e geométricas
- Com o editor de genoma, é possível projetar organismos personalizados
- Há suporte a operações em massa e zoom
- Recursos de rede também estão incluídos
- Há um navegador de simulações embutido
- Há suporte a download e upload de arquivos de simulação
- É possível recomendar simulações por meio de estrelas
Finalidades de uso
- Quando máquinas autorreplicantes e mutações estão ativadas, a própria simulação progride e o usuário pode observar a evolução em funcionamento
- Também pode ser usado como um jogo com um motor físico rápido e realista
- Com o cursor do mouse, é possível acelerar ou destruir centenas de milhares de máquinas
- Diferentes estilos de renderização e um editor visual ajudam a observar eventos
- Há exemplos no YouTube channel
- Em termos acadêmicos, é uma ferramenta para explorar como complexidade ou estruturas semelhantes à vida podem surgir a partir de componentes simples
- Como ecossistemas se adaptam a mudanças ambientais e encontram novos equilíbrios
- A questão de quais condições permitem evolução em aberto
- Também pode ser usado como ferramenta de arte generativa, em que a evolução atua como força criativa para produzir novas formas e comportamentos
Documentação e requisitos de execução
- A documentação da versão major anterior está em alien-project.gitbook.io/docs e apresenta o simulador em formato de tutorial
- Muitas informações dessa documentação já não estão atualizadas
- A versão mais recente oferece documentação simples e orientação ao usuário por meio da janela de ajuda interna e de tooltips
- Materiais adicionais estão em Website, YouTube, Twitter, Reddit, Discord
- O requisito mínimo de sistema é uma placa gráfica NVIDIA com compute capability 6.0 ou superior
- O instalador para Windows é alien-installer.msi, e a data de atualização segundo o README é 2025-09-06
Build e CLI
- O build do código-fonte é em grande parte automatizado com CMake multiplataforma e o gerenciador de pacotes vcpkg incluído como submódulo Git
- Ao baixar o código-fonte, é necessário usar
--recursivepara também fazer checkout do submódulo vcpkg- Como o
git pullpadrão normalmente não atualiza submódulos, é preciso usargit pull --recurse-submodules
- Como o
- Tanto no Windows quanto no Linux são usados o Ninja e o compilador CUDA
nvcc- O requisito é CUDA Toolkit 11.2+
- No Windows, são necessários os componentes “Desktop development with C++” e “C++ CMake tools for Windows” do Visual Studio
- No Linux, são necessários GCC,
ninja-builde bibliotecas de desenvolvimento X11/OpenGL
- Os comandos de build são
cmake --preset ninjaecmake --build --preset ninja-release - Os executáveis são gerados em
build-ninja/Release/, e devem ser executados diretamente da pasta de build para localizar a pasta de recursos - O repositório também inclui uma CLI para rodar simulações sem GUI
- Ela pode ser usada para medir desempenho e para execução/avaliação automatizada com vários parâmetros
- As entradas são arquivo de simulação, parâmetros e número de passos de tempo
- As saídas são um arquivo de simulação resultante e um arquivo CSV de estatísticas
- O comando de exemplo
.\\cli.exe -i example.sim -o output.sim -t 1000executaexample.simpor 1000 passos de tempo
Solução de problemas e licença
- Se ocorrer travamento por motivo desconhecido, primeiro é preciso verificar os requisitos
- É necessária uma GPU NVIDIA com compute capability 6.0 ou superior
- O driver gráfico NVIDIA mais recente deve estar instalado
- O diretório de instalação e os diretórios acima dele não devem conter caracteres não ingleses
- No Windows, o nome do usuário do Windows que instalou o ALIEN também não deve conter caracteres não ingleses
- O ALIEN precisa de permissão de escrita em seu próprio diretório
- Se houver várias GPUs, o monitor principal deve estar conectado a uma placa compatível com CUDA
- Ao usar gráficos integrados e dedicados juntos,
alien.exedeve ser configurado para usar a placa gráfica de alto desempenho
- Se os erros persistirem mesmo com os requisitos atendidos, inicie o ALIEN com o parâmetro de linha de comando
-d, reproduza o erro e depois crie uma GitHub issue anexando olog.txt - Contribuições podem ser enviadas por GitHub Issues, Pull requests e Discussion forum
- O ALIEN é distribuído sob a licença BSD 3-Clause
1 comentários
Comentários do Hacker News
O material que eu queria encontrar primeiro não foi tão fácil de achar quanto eu esperava, e os vídeos no GitHub não carregam para mim, então reuni os links aqui:
https://www.youtube.com/@alien-project/videos
https://www.youtube.com/watch?v=qwbMGPkoJmg
https://www.youtube.com/watch?v=w9R6zrdl6jM
Também não está totalmente claro como isso funciona no Linux e, à primeira vista, parece estar limitado a uma configuração Windows + NVidia. Seria bom confirmar que isso está errado
Se você quer criar algo assim, mas não sabe por onde começar, recomendo https://natureofcode.com/
É voltado para iniciantes e usa uma biblioteca JS, mas as ideias centrais que aborda se aplicam de forma geral
Na verdade, The Code of Nature talvez parecesse mais natural
Estou deixando a simulação Alien rodando há meses e ligando e desligando o PC conforme eu o uso
Comecei com o preset de configuração inicial RGB Triad, e o impressionante é que os três tipos de criaturas formam estruturas complexas parecidas com células de maneiras diferentes
Surgem cristais geométricos, fios longos que tentam comer outras coisas e até estruturas espinhosas que formam paredes, o que é realmente fascinante
Ainda tenho boas lembranças de um jogo em Flash em que pequenas partículas tinham cada uma seu próprio comportamento
Cada partícula podia colidir, reagir, se transformar ou destruir materiais de outras partículas. Não me lembro do nome do site ou do jogo, mas brincar com gameplay emergente é sempre divertido
[1] https://dan-ball.jp/en/javagame/dust/
[2] https://powdertoy.co.uk/
Site: https://alien-project.org/
Impressionante. Eu gosto de autômatos celulares e do Game of Life de Conway, e isso parece um jogo interessante
Bem legal. Pelo fato de algumas pessoas estarem tentando rodar, parece que AMD também pode ser uma possibilidade: https://github.com/chrxh/alien/issues/99
Deslumbrante. Assisti a alguns vídeos e isso me lembrou o simulador de evolução de vida alienígena que estou fazendo agora
Meu programa baseado em console está engatinhando, enquanto este projeto está voando alto
Parece legal, mas não faço ideia de como mover a tela nele