Сетевой плагин для движка Bevy, работающий на библиотеках naia-socket и turbulence.
Комбинация naia-socket и турбулентности позволяет обмениваться необработанными сообщениями через UDP или UDP-подобное соединение (через WebRTC) или строить ненадежные/надежные каналы структурированных сообщений поверх таких UDP/UDP-подобных сообщений.
Этот плагин работает как в собственном (Linux, Windows, MacOS) с пакетами UDP, так и в браузере/WASM с UDP-подобными сообщениями в канале WebRTC.
Еще не закончен, но основные функции работают. Подробности см. в разделе «Вехи».
На одном терминале запустите:
$ env RUST_LOG=debug cargo run --example simple -- --server
На другом терминале запустите:
$ env RUST_LOG=debug cargo run --example simple -- --client
Наблюдайте за обменом PING
/ PONG
между сервером и клиентом. Вы можете запускать больше клиентов на большем количестве терминалов.
На одном терминале запустите:
$ env RUST_LOG=debug cargo run --example simple --no-default-features --features use-webrtc -- --server
Измените IP-адрес в функции examples/simple.rs
/ startup()
, чтобы он указывал на ваш локальный компьютер, и запустите:
$ 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
Обслуживание каталога проекта через HTTP. Например ( cargo install basic-http-server
):
$ basic-http-server .
Откройте http://127.0.0.1:4000 и посмотрите консоль браузера в инструментах разработчика. Вы увидите тот же обмен PING
/ PONG
, что и в Нативном режиме.
На одном терминале запустите:
$ env RUST_LOG=debug cargo run --example channels --features use-udp,bevy/default -- --server
При втором запуске терминала:
$ env RUST_LOG=warn cargo run --example channels --features use-udp,bevy/default -- --client
При третьем (и четвертом, и более...) запуске терминала:
$ env RUST_LOG=warn cargo run --example channels --features use-udp,bevy/default -- --client
Вы можете сфокусировать любое из окон клиента и использовать клавиши курсора Arrow-Left
/ Arrow-Right
для изменения траектории «шара». Наблюдайте, как ваш управляемый мяч синхронизируется со всеми другими клиентами.
Из-за необходимости дополнительных зависимостей мы решили сохранить пример графических каналов на основе браузера в отдельном репозитории. См. проект https://github.com/ostwilkens/arugio. Он немного развился из примера с простыми квадратными шарами и может послужить основой вашей игры.