bevy_garage - gamelike car simulation playground
Introductory walk-through https://youtu.be/f6PcaTX58J4
Deep Q-Learning car training for 1 hour https://youtu.be/A2JMPIWGXBsf
Wasm demo https://alexi.chepura.space/bevy-garage
- game engine https://bevyengine.org
- rigid body physics https://rapier.rs
- kenney assets https://www.kenney.nl/assets/racing-kit
- neural network https://github.com/coreylowman/dfdx
- api server and client https://github.com/tokio-rs/axum
- db client https://github.com/Brendonovich/prisma-client-rust
- sound https://github.com/harudagondi/bevy_fundsp & https://github.com/SamiPerttu/fundsp
- virtual joystick https://github.com/SergioRibera/virtual_joystick
Run
brew install llvm # macos
sudo apt-get install lld # ubuntu
sudo pacman -S lld # arch
cargo run --release
# or faster compile
cargo run --release --features bevy/dynamic_linking
https://bevyengine.org/learn/book/getting-started/setup/
Neural network
cargo r -r --features="nn"
Api server for neural network (optional)
# generate prisma db client
cargo prisma generate
# push schema to database
cargo prisma db push
# run api server
cd api && cargo r -r
# run app with saving replay buffer
cargo r -r --features="nn,nn_api"
# prisma studio https://github.com/Brendonovich/prisma-client-rust/issues/96
npx prisma studio
Key bindings
- UP, DOWN, LEFT, RIGHT - drive
- 1, 2, 3, 4, 5 - camera views
- 0 - free camera with WASDQE(SHIFT) control and mouse
- R - debug mode
- SHIFT+SPACE - respawn at random position
- N - toggle nn
- H, J, K, L - directed light control
- X - enable sound, Z - decrease volume, C - increase volume
History
- Deep Q learning NN - https://www.youtube.com/watch?v=aN49ZP4PS-c
- First attempts with NN - https://www.youtube.com/watch?v=mVk1otSmySM
License
Bevy Garage is free, open source and permissively licensed! Except where noted (below and/or in individual files), all code in this repository is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option. This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.
Your contributions
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.