Netzwerk-Plugin für die Bevy-Engine, die auf Naia-Socket- und Turbulence-Bibliotheken läuft.
Die Kombination von Naia-Socket und Turbulence ermöglicht den Austausch von Rohnachrichten über UDP oder UDP-ähnliche Verbindungen (über WebRTC) oder den Aufbau unzuverlässiger/zuverlässiger Kanäle strukturierter Nachrichten über solche UDP/UDP-ähnlichen Nachrichten.
Dieses Plugin funktioniert sowohl in nativen (Linux, Windows, MacOS) über UDP-Paketen als auch in Browser/WASM über UDP-ähnliche Nachrichten im WebRTC-Kanal.
Noch unvollendet, aber die Hauptfunktionen funktionieren. Einzelheiten finden Sie unter Meilensteine.
Auf einem Terminallauf:
$ env RUST_LOG=debug cargo run --example simple -- --server
Auf einem anderen Terminal ausführen:
$ env RUST_LOG=debug cargo run --example simple -- --client
Beobachten Sie PING
/ PONG
-Austausch zwischen Server und Client. Sie können mehr Clients in mehr Terminals betreiben.
Auf einem Terminallauf:
$ env RUST_LOG=debug cargo run --example simple --no-default-features --features use-webrtc -- --server
Ändern Sie die IP-Adresse in der Funktion „ examples/simple.rs
/ startup()
so, dass sie auf Ihren lokalen Computer verweist, und führen Sie Folgendes aus:
$ 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
Projektverzeichnis über HTTP bereitstellen. Zum Beispiel ( cargo install basic-http-server
):
$ basic-http-server .
Öffnen Sie http://127.0.0.1:4000 und sehen Sie sich die Browser-Konsole in den Entwicklertools an. Sie sehen den gleichen PING
/ PONG
Austausch wie im nativen Modus.
Auf einem Terminallauf:
$ env RUST_LOG=debug cargo run --example channels --features use-udp,bevy/default -- --server
Beim zweiten Terminallauf:
$ env RUST_LOG=warn cargo run --example channels --features use-udp,bevy/default -- --client
Beim dritten (und vierten und mehr...) Terminallauf:
$ env RUST_LOG=warn cargo run --example channels --features use-udp,bevy/default -- --client
Sie können jedes Client-Fenster fokussieren und mit den Cursortasten Arrow-Left
/ Arrow-Right
die Flugbahn des „Balls“ ändern. Beobachten Sie, wie Ihr kontrollierter Ball mit allen anderen Clients synchronisiert wird.
Aufgrund zusätzlicher erforderlicher Abhängigkeiten haben wir uns entschieden, das Beispiel für browserbasierte grafische Kanäle in einem separaten Repository aufzubewahren. Siehe https://github.com/ostwilkens/arugio-Projekt. Es ist eine Weiterentwicklung des einfachen Beispiels mit quadratischen Bällen und kann als Grundlage für Ihr Spiel dienen.