ESP32 Spooky Maze Game is a technical demo game built using Bevy ECS 0.16.1 with no_std support via esp-hal 1.0.0-beta.1. The game demonstrates how to build cross-platform applications that run on both embedded hardware and desktop environments using a shared core.
In this game, a ghost navigates through a maze collecting coins while avoiding obstacles. Special artifacts such as dynamite and the "walker" power-up introduce additional gameplay mechanics. On collision with various objects, events are dispatched to decouple hardware-specific logic from game rules.
spooky-maze-esp32-s3-box-3.mp4For now, the project supports three primary targets:
Desktop Rust Standard Version Use keyboard controls to move the ghost and trigger actions.
WebAssembly (WASM) Version Play the game directly in your browser using WebAssembly. Features the same gameplay as the desktop version with both keyboard and mouse controls.
ESP32-S3-BOX-3 Embedded Version Uses an ICM42670 accelerometer for input (tilt the board to move the ghost).
M5Stack-Atom-S3 Embedded Version Uses an MPU6886 accelerometer for input (tilt the board to move the ghost).
Note: For older targets (e.g., ESP32-C3, ESP32-S2, etc.), please refer to the v0.10.0 tag.
Prerequisites:
Build:
cd spooky-maze-desktop cargo run
Controls:
Movement: Arrow keys
WebAssembly (WASM) VersionPrerequisites:
Build and run:
cd spooky-maze-wasm ./build.sh # Then serve with any HTTP server: python3 -m http.server 8000 # Open http://localhost:8000 in your browser
Controls:
These instructions are valid for boards based on ESP32-S3:
Prerequisites:
espflash installed:
Rust Xtensa toolchain installed:
cargo install espup espup install
Compiler toolchain from ESP-IDF v5.5 (required only for Xtensa targets):
git clone git@github.com:espressif/esp-idf.git --depth 10 --recursive --shallow-submodules source esp-idf/export.sh
Properly configured ESP32-S3-BOX-3 hardware
Build and run:
cd spooky-maze-esp32-s3-box-3 cargo run --release
cd spooky-maze-m5stack-atom-s3 cargo run --release
Controls:
Movement: Tilt the board accelerometer
Differences of Embedded Bevy no_std from Classical Bevy stdContributions are welcome! If you'd like to help improve the game, add new features, or adapt the project to additional hardware targets, please feel free to submit a pull request. We especially welcome contributions that help improve the no_std integration with Bevy ECS or enhance the embedded graphics rendering.
For more information on embedded development with ESP32, visit the Espressif Developer Portal.
Recommendation: Open whole project and attach to particular Cargo.toml for specific target.
This project is licensed under the MIT License. See LICENSE for details.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4