https://github.com/georgik/esp32-conways-game-of-life-rs
Rust Bare Metal implementation of Conway's Game of Life
https://github.com/georgik/esp32-conways-game-of-life-rs
bevy-ecs conways-game-of-life embedded-systems esp32 esp32c3 esp32c6 esp32s3 nostd rust
Last synced: 28 days ago
JSON representation
Rust Bare Metal implementation of Conway's Game of Life
- Host: GitHub
- URL: https://github.com/georgik/esp32-conways-game-of-life-rs
- Owner: georgik
- License: apache-2.0
- Created: 2023-11-03T08:39:45.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-07T11:18:12.000Z (about 1 month ago)
- Last Synced: 2025-04-07T12:26:42.084Z (about 1 month ago)
- Topics: bevy-ecs, conways-game-of-life, embedded-systems, esp32, esp32c3, esp32c6, esp32s3, nostd, rust
- Language: Rust
- Homepage:
- Size: 533 KB
- Stars: 14
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: docs/README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
- awesome-esp-rust - esp32-conways-game-of-life-rs - Conway's Game of Life in Bare metal Rust for different ESP32 based boards. (Projects / `no_std`)
README
# ESP32 Conway's Game of Life in Rust
Implementation of Conway's Game of Life Rust Bare Metal.
[](https://wokwi.com/projects/380370193649185793)

## Supported boards
### ESP32-S3-BOX-3 Minimal Implementation
- https://github.com/espressif/esp-box
The implementation is based on Rust no\_std, using mipidsi crate.
```
cd esp32-s3-box-3-minimal
cargo run --release
```### ESP32-C6-LCD-1.47 Waveshare
[Rust Bare Metal no_std](https://developer.espressif.com/blog/2025/02/rust-esp-hal-beta/) with [Bevy ECS no_std](https://github.com/bevyengine/bevy/issues/15460) on 1.47 inch [ESP32-C6 LCD Waheshare](https://www.waveshare.com/esp32-c6-lcd-1.47.htm) with DMA and framebuffer - [Conway's Game of Life](https://github.com/georgik/esp32-conways-game-of-life-rs/tree/main/esp32-c6-waveshare-1_47):
View the video [here](https://github.com/user-attachments/assets/e9d48ff7-b14c-4874-9521-fe59e915bc76).
The implementation is based on Rust no\_std and Bevy 0.15 no\_std, plus mipidsi crate
```
cd esp32-c6-waveshare-1_47
cargo run --release
```### M5Stack Atom-S3

- https://docs.m5stack.com/en/core/AtomS3
Controls: Press button under display to reset the game state (GPIO 41).
The implementation is based on Rust no\_std, using mipidsi crate and Bevy ECS.
It requires es-rs toolchain for ESP32-S3 version at [least 1.85](https://github.com/esp-rs/rust-build/releases/tag/v1.85.0.0), because of edition 2024.Installation of the toolchain:
```
cargo install espup
espup install --toolchain-version 1.85.0.0
source ~/export-esp.sh
```Build:
```
cd m5stack-atom-s3
cargo run --release
```### ESP32-S3-BOX-3

- https://github.com/espressif/esp-box
The implementation is based on Rust no\_std, using mipidsi crate and Bevy ECS.
It requires es-rs toolchain for ESP32-S3 version at [least 1.85](https://github.com/esp-rs/rust-build/releases/tag/v1.85.0.0), because of edition 2024.Installation of the toolchain:
```
cargo install espup
espup install --toolchain-version 1.85.0.0
source ~/export-esp.sh
```Build:
```
cd esp32-s3-box-3
cargo run --release
```### ESP32-C3-LCDKit

```
cd esp32-c3-lcdkit
cargo run --release
```### WASM
This is experimental implementation for WASM.
```
cd wasm
wasm-pack build --target web
wasm-bindgen --target web --out-dir pkg target/wasm32-unknown-unknown/release/conways_wasm.wasm
python3 -m http.server
```### ESP32-WROVER-KIT
This board is no longer in production, yet it's still used by many developers.

The implementation is based on Rust no\_std, using mipidsi crate and Bevy ECS.
It requires es-rs toolchain for ESP32-S3 version at [least 1.85](https://github.com/esp-rs/rust-build/releases/tag/v1.85.0.0), because of edition 2024.Installation of the toolchain:
```
cargo install espup
espup install --toolchain-version 1.85.0.0
source ~/export-esp.sh
```Build:
```
cd esp32-wrover-kit
cargo run --release
```