Le Jeu de la Vie est une simulation cellulaire automatisée conçue par le mathématicien John Conway. Ce projet est une implémentation en Rust du célèbre algorithme, avec une interface graphique utilisant Bevy et une version WebAssembly (WASM) pour une exécution dans le navigateur.
Bonne question ! En réalité je l'ai fait en Java déjà et j'aime pas le fait qur la JVM consomme 3 GB de RAM donc je la tente en Rust.
- Simulation du Jeu de la Vie : Implémentation de l'algorithme classique de Conway.
- Interface graphique : Utilisation de Bevy pour une interface 2D interactive.
- Version WebAssembly : Exécution dans un navigateur web avec une interface simple.
Pour utiliser ce projet, vous aurez besoin des outils suivants :
- Un cerveau 🧠
- Une connexion internet
- Et une vrai liste de prérequis que voici :
- Rust Toolchain :
rustc(compilateur Rust)cargo(gestionnaire de paquets Rust)rustup(gestionnaire de versions Rust)
- Outils supplémentaires pour WASM :
wasm32-unknown-unknown(cible pour la compilation WebAssembly)wasm-bindgen-cli(pour générer les bindings JavaScript)wasm-server-runner(pour exécuter le projet en local)
- Clonez ce dépôt :
git clone https://github.com/Tonguechaude/GOL.rs.git
cd GOL.rs- Installez les dépendances Rust :
rustup target add wasm32-unknown-unknown
cargo install wasm-bindgen-cli wasm-server-runnerPour compiler et exécuter le projet en mode release :
cargo run --releasePour exécuter le projet dans un navigateur web en local :
cargo run --target wasm32-unknown-unknownou
cargo serveurPour compiler le projet en WebAssembly et générer les fichiers JavaScript :
cargo build --release --target wasm32-unknown-unknown
wasm-bindgen --no-typescript --out-dir ./webapp/ --target web ./target/wasm32-unknown-unknown/release/jeu_de_la_vie.wasm
wasm-opt -Oz -o ./webapp/jeu_de_la_vie_bg.wasm ./webapp/jeu_de_la_vie_bg.wasm # Optimize WASM file sizeTesting WASM in webserver environment : (You can't access from file:// cause Browsers dont allow import module to prevent malicious malware to access to your filesystem so you have to do this)
cd webapp
python3 -m http.server 8080Ce projet utilise les dépendances suivantes :
Bevy : Moteur de jeu pour l'interface graphique.
egui : Interface utilisateur pour la version Rust.
rand : Génération de nombres aléatoires pour l'initialisation de la grille.
getrandom : génération de nombre aléatoir compatible avbec la cible wasm32
wasm-bindgen : Pour la compatibilité WebAssembly.
Actually I exposed a docker image here : tonguechaude/rust-wasm-builder
This image exist just because my runner CPU is so bad :(, so I need to optimize compute time in CI.
Les contributions sont les bienvenues ! Si vous souhaitez améliorer ce projet, voici comment procéder :
- Forkez ce dépôt.
- Créez une branche pour votre fonctionnalité (git checkout -b feature/nouvelle-fonctionnalite).
- Committez vos changements (git commit -am 'Ajouter une nouvelle fonctionnalité').
- Poussez vers la branche (git push origin feature/nouvelle-fonctionnalite).
- Ouvrez une Pull Request.
On fait que du Logiciel Libre ici !! Blague à part le code est sous licence GNU GPL v3
Amusez-vous bien avec le Jeu de la Vie en Rust ! 🚀