Plugin réseau pour le moteur Bevy fonctionnant sur les bibliothèques naia-socket et turbulence.
La combinaison du socket naia et de la turbulence permet l'échange de messages bruts via une connexion de type UDP ou UDP (via WebRTC), ou la création de canaux peu fiables/fiables de messages structurés sur de tels messages de type UDP/UDP.
Ce plugin fonctionne à la fois en natif (Linux, Windows, MacOS) sur les paquets UDP et en navigateur/WASM sur les messages de type UDP dans le canal WebRTC.
Encore inachevé, mais les principales fonctionnalités fonctionnent. Pour plus de détails, voir Jalons.
Sur un terminal, exécutez :
$ env RUST_LOG=debug cargo run --example simple -- --server
Sur un autre terminal, exécutez :
$ env RUST_LOG=debug cargo run --example simple -- --client
Observez les échanges PING
/ PONG
entre serveur et client. Vous pouvez exécuter plus de clients dans plus de terminaux.
Sur un terminal, exécutez :
$ env RUST_LOG=debug cargo run --example simple --no-default-features --features use-webrtc -- --server
Modifiez l'adresse IP dans la fonction examples/simple.rs
/ startup()
pour pointer vers votre machine locale et exécutez :
$ cargo build --example simple --target wasm32-unknown-unknown --no-default-features --features use-webrtc
$ wasm-bindgen --out-dir target --target web target/wasm32-unknown-unknown/debug/examples/simple.wasm
Servir le répertoire du projet via HTTP. Par exemple ( cargo install basic-http-server
) :
$ basic-http-server .
Ouvrez http://127.0.0.1:4000 et regardez la console du navigateur dans les outils de développement. Vous verrez le même échange PING
/ PONG
qu’en mode Natif.
Sur un terminal, exécutez :
$ env RUST_LOG=debug cargo run --example channels --features use-udp,bevy/default -- --server
Lors de l'exécution du deuxième terminal :
$ env RUST_LOG=warn cargo run --example channels --features use-udp,bevy/default -- --client
Sur la troisième (et quatrième, et plus...) exécution du terminal :
$ env RUST_LOG=warn cargo run --example channels --features use-udp,bevy/default -- --client
Vous pouvez focaliser n'importe quelle fenêtre client et utiliser les touches fléchées Arrow-Left
/ Arrow-Right
pour modifier la trajectoire de la "balle". Observez que votre balle contrôlée est synchronisée avec tous les autres clients.
En raison des dépendances supplémentaires requises, nous avons décidé de conserver l'exemple de canaux graphiques basés sur un navigateur dans un référentiel séparé. Voir le projet https://github.com/ostwilkens/arugio. Il a un peu évolué par rapport à l'exemple des simples boules carrées et peut servir de base à votre jeu.