Bevy GGRS Rapier example

This is my quest to get GGRS and Rapier to work together in the Bevy engine, using the plugins.

Is it perfect? No. But is well-written? Also no.

Hopefully this will serve as a crash course to getting your fun weekend project going.

Things I have going

  • Deterministic physics and rollbacks (allegedly)
  • Desync detection (1v1 only)
  • Plenty poorly strung-together comments
  • And a whole lot of debug learning

Keys

  • WASD movement
  • R turn on random movement for this window
  • T turn off random movement for this window

Running

This demo has no menus other than the debugging inspector. This demo assumes that you will run it twice, which establishes a connection between the two and runs the simulation.

Native

From the root directory:

cargo run

In VS Code, you can also run two of them with (Ctrl|Cmd)+Shift+B, which will run the demo twice.

WASM

From the root directory (requires wasm-server-runner):

cargo run --target wasm32-unknown-unknown --features web

Or, use the wasm.sh script which runs several commands. This will produce an optimized WASM build and launch a test HTTP server (requires wasm-bindgen-cli, binaryen, and simple-http-server).

You will need to launch the demo in two windows. It is recommended to not use tabs to avoid and auto-sleep behavior from your browser.

Testing

  • You can test rollbacks locally

Contributing

Please do! Pull requests are always welcome; and don't be afraid to checkout the Bevy discord for more help.