ปลั๊กอินเครือข่ายสำหรับเครื่องยนต์ Bevy ที่ทำงานบนไลบรารี naia-socket และ turbulence
การรวมกันของ ซ็อกเก็ต naia และ ความปั่นป่วน ทำให้สามารถแลกเปลี่ยนข้อความดิบผ่านการเชื่อมต่อ UDP หรือ UDP-like (ผ่าน 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
เหมือนกับในโหมด Native
ในการรันเทอร์มินัลหนึ่ง:
$ 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โครงการ มันพัฒนามาจากตัวอย่างลูกบอลสี่เหลี่ยมธรรมดาเล็กน้อยและอาจใช้เป็นพื้นฐานของเกมของคุณ