- ALIEN est un environnement de vie artificielle fondé sur un moteur de particules 2D basé sur CUDA, qui simule en temps réel des corps mous, des fluides et des formes de vie numériques de type réseaux cellulaires
- Les corps simulés sont constitués de réseaux de particules ; des fonctions de haut niveau comme des capteurs, des muscles, des armes et des générateurs sont coordonnées par un réseau neuronal, tandis que le plan de conception peut être stocké dans un génome et transmis à la descendance
- Tout le code de simulation est écrit en CUDA, optimisé pour les simulations temps réel à grande échelle manipulant des millions de particules, et le rendu utilise l’interopérabilité CUDA-OpenGL
- L’utilisateur peut interagir avec la simulation en cours et modifier les organismes et l’environnement au moyen d’un éditeur de graphe, d’outils de dessin à main levée/géométriques, d’un éditeur de génome et d’opérations de masse
- L’exécution nécessite un GPU NVIDIA avec une compute capability de 6.0 ou plus, et une CLI permettant d’exécuter et d’évaluer des simulations sans GUI est également incluse
Ce que simule ALIEN
- ALIEN signifie Artificial LIfe ENvironment ; c’est un outil de simulation de vie artificielle
- Il repose sur un moteur de particules 2D spécialisé, écrit en CUDA, conçu pour gérer les corps mous et les fluides
- Chaque corps simulé est constitué d’un réseau de particules
- On peut y ajouter des fonctions de haut niveau, depuis le simple traitement de l’information jusqu’à des équipements physiques comme des capteurs, des muscles, des armes ou des générateurs
- L’exécution de ces fonctions est coordonnée par un réseau neuronal
- Les corps peuvent être vus comme des agents ou des organismes numériques évoluant dans un environnement commun
- Le plan de conception est stocké dans un génome et peut être transmis à la descendance
- L’objectif du développement est de mieux comprendre l’évolution prébiologique et les conditions dans lesquelles la complexité des systèmes biologiques augmente
- Un autre objectif important est de créer un simulateur facile à utiliser, avec une UI moderne, un rendu visuellement agréable et une approche proche du jeu
Moteur physique et graphique
- Les particules servent à simuler notamment les corps mous, la dynamique des corps rigides, les fluides, l’émission de chaleur, les dommages et l’adhérence
- L’interaction utilisateur en temps réel avec la simulation en cours est prise en charge
- La simulation s’exécute entièrement sur le GPU via CUDA
- Le rendu et le post-traitement reposent sur OpenGL avec l’interopérabilité CUDA-OpenGL
Fonctions de vie artificielle
- Les organismes multicellulaires sont simulés sous forme de réseaux de particules
- Le système génétique et la génération de descendants à l’échelle cellulaire sont pris en charge
- Les fonctions de haut niveau, comme les capteurs et les muscles, sont contrôlées par un réseau neuronal
- Différentes couleurs permettent de personnaliser les types de cellules selon des règles définies par l’utilisateur
- Les paramètres de simulation variant selon l’espace sont pris en charge
Outils d’édition et de partage
- Les outils d’édition se concentrent sur la manipulation directe des composants de la simulation
- L’éditeur de graphe permet de manipuler toutes les particules et leurs connexions
- Des outils de dessin à main levée et géométriques sont fournis
- Un éditeur de génome permet de concevoir des organismes personnalisés
- Les opérations de masse et les fonctions de zoom sont prises en charge
- Des fonctions réseau sont également incluses
- Un navigateur de simulations intégré est fourni
- Le téléchargement et l’envoi de fichiers de simulation sont pris en charge
- Il est possible de recommander des simulations en leur attribuant une étoile
Usages possibles
- Lorsque les machines autoréplicatives et les mutations sont activées, la simulation progresse d’elle-même, et l’utilisateur peut observer l’évolution à l’œuvre
- Il peut être utilisé comme un jeu doté d’un moteur physique rapide et réaliste
- Le curseur de la souris peut accélérer ou détruire des centaines de milliers de machines
- Plusieurs styles de rendu et des éditeurs visuels aident à observer les événements
- Des exemples sont disponibles sur la YouTube channel
- Sur le plan académique, c’est un outil pour explorer comment de la complexité ou des structures similaires au vivant peuvent émerger à partir de composants simples
- La manière dont un écosystème s’adapte aux changements environnementaux et trouve un nouvel équilibre
- La recherche des conditions permettant une évolution ouverte
- Il peut aussi servir d’outil d’art génératif, l’évolution agissant comme une force créative qui produit de nouvelles formes et de nouveaux comportements
Documentation et conditions d’exécution
- La documentation de la version majeure précédente se trouve sur alien-project.gitbook.io/docs et présente le simulateur sous forme de tutoriels
- Une grande partie des informations de cette documentation n’est plus à jour
- La version actuelle fournit une documentation simple et un guidage utilisateur via la fenêtre d’aide et les info-bulles intégrées au programme
- Des ressources supplémentaires sont disponibles sur le Website, YouTube, Twitter, Reddit et Discord
- La configuration minimale requise est une carte graphique NVIDIA avec une compute capability de 6.0 ou plus
- Le fichier d’installation pour Windows est alien-installer.msi, et la date de mise à jour indiquée dans le README est le 06/09/2025
Build et CLI
- Le build depuis les sources est largement automatisé grâce à CMake multiplateforme et au gestionnaire de paquets vcpkg inclus comme sous-module Git
- Lors de la récupération des sources, l’option
--recursiveest nécessaire pour checkout aussi le sous-module vcpkg- Un
git pullstandard ne met généralement pas à jour les sous-modules ; il faut donc utilisergit pull --recurse-submodules
- Un
- Windows comme Linux utilisent Ninja et le compilateur CUDA
nvcc- La condition requise est CUDA Toolkit 11.2+
- Sous Windows, les composants “Desktop development with C++” et “C++ CMake tools for Windows” de Visual Studio sont nécessaires
- Sous Linux, GCC,
ninja-buildet les bibliothèques de développement X11/OpenGL sont nécessaires
- Les commandes de build sont
cmake --preset ninjaetcmake --build --preset ninja-release - L’exécutable est généré sous
build-ninja/Release/et doit être lancé directement depuis le dossier de build afin de trouver le dossier de ressources - Le dépôt inclut aussi une CLI pour exécuter des simulations sans GUI
- Elle peut servir aux mesures de performance ainsi qu’à l’exécution et à l’évaluation automatiques sur plusieurs paramètres
- Les entrées sont un fichier de simulation, des paramètres et un nombre de pas de temps
- Les sorties sont un fichier de simulation résultant et un fichier de statistiques CSV
- La commande d’exemple
.\cli.exe -i example.sim -o output.sim -t 1000exécuteexample.simpendant 1 000 pas de temps
Dépannage et licence
- En cas de plantage pour une raison inconnue, il faut d’abord vérifier les prérequis
- Un GPU NVIDIA avec une compute capability de 6.0 ou plus est nécessaire
- Les derniers pilotes graphiques NVIDIA doivent être installés
- Le nom du répertoire d’installation et celui des répertoires parents ne doivent pas contenir de caractères non anglais
- Sous Windows, le nom de l’utilisateur Windows qui a installé ALIEN ne doit pas non plus contenir de caractères non anglais
- ALIEN a besoin de droits d’écriture dans son propre répertoire
- S’il y a plusieurs GPU, le moniteur principal doit être connecté à la carte compatible CUDA
- En cas d’utilisation conjointe d’une carte graphique intégrée et d’une carte dédiée, il faut configurer
alien.exepour qu’il utilise la carte graphique haute performance
- Si l’erreur persiste malgré le respect de ces conditions, il faut lancer ALIEN avec le paramètre de ligne de commande
-d, reproduire l’erreur, puis créer une GitHub issue en joignantlog.txt - Les contributions sont acceptées via GitHub Issues, les Pull requests et le Discussion forum
- ALIEN est distribué sous licence BSD 3-Clause
1 commentaires
Avis sur Hacker News
Les ressources que je voulais trouver au départ n’étaient pas aussi faciles à dénicher que prévu, et les vidéos sur GitHub ne se chargeaient pas chez moi, donc je regroupe les liens ici :
https://www.youtube.com/@alien-project/videos
https://www.youtube.com/watch?v=qwbMGPkoJmg
https://www.youtube.com/watch?v=w9R6zrdl6jM
Par ailleurs, on ne voit pas très clairement comment cela fonctionne sous Linux et, à première vue, ça semble limité à une configuration Windows + NVidia. J’aimerais bien pouvoir vérifier que je me trompe.
Si vous avez envie de créer quelque chose dans ce genre mais ne savez pas par où commencer, je recommande https://natureofcode.com/
C’est destiné aux débutants et ça utilise une bibliothèque JS, mais les idées fondamentales abordées sont généralement applicables ailleurs.
À l’inverse, The Code of Nature aurait probablement semblé plus naturel.
Je fais tourner une simulation Alien depuis plusieurs mois, en l’allumant et l’éteignant selon que j’utilise ou non mon PC.
J’ai commencé avec le préréglage initial RGB Triad, et ce qui est étonnant, c’est que les trois types d’organismes créent chacun, de manière différente, des structures complexes ressemblant à des cellules.
Des cristaux géométriques, de longs filaments qui cherchent à manger les autres, jusqu’à des structures épineuses formant des murs sont apparus ; c’est vraiment fascinant.
Je garde encore un bon souvenir d’un jeu Flash où de petites particules avaient chacune leur propre comportement.
Chaque particule pouvait entrer en collision, réagir, se transformer ou détruire d’autres matériaux de particules. Je ne me souviens plus du site ni du nom du jeu, mais expérimenter du jeu émergent est toujours un plaisir.
[1] https://dan-ball.jp/en/javagame/dust/
[2] https://powdertoy.co.uk/
Site web : https://alien-project.org/
Étonnant. J’aime les automates cellulaires et le Game of Life de Conway, et celui-ci ressemble à un jeu plutôt réussi.
Assez chouette. À voir certaines personnes essayer de le lancer, AMD semble aussi possible : https://github.com/chrxh/alien/issues/99
Incroyablement impressionnant. J’ai regardé quelques vidéos, et ça m’a fait penser au simulateur d’évolution de vie extraterrestre que je suis en train de créer.
Mon programme en console avance à peine, alors que ce projet vole dans les airs.
Ça a l’air sympa, mais je n’arrive absolument pas à comprendre comment on fait un déplacement de l’écran.