สมมติว่า ...
- คุณกำลังพูดถึงการแปลงเป็นบัฟเฟอร์ไบต์
- คุณกำลังใช้ UDP และประสิทธิภาพเป็นข้อกังวล
พยายามหลีกเลี่ยงการสิ้นเปลืองพื้นที่ในแพ็คเก็ตของคุณเพื่อกำหนดโครงสร้าง IE ส่งอย่างน้อยหนึ่งไบต์เพื่อแสดงประเภทของแพ็คเก็ตจากนั้นให้สันนิษฐานว่าแต่ละแพ็กเก็ตที่ได้รับจะเป็นไปตามโครงสร้างที่กำหนดไว้ล่วงหน้าสำหรับประเภทของแพ็กเก็ตนั้น
ฉันควรจะอ่าน structs ลงในซ็อกเก็ตหรือไม่? ใช้บัฟเฟอร์โปรติคอล / เจริญเติบโตอย่างรวดเร็ว?
- ใช่อ่านโครงสร้างทั้งหมดถ้าคุณต้องการโครงสร้างทั้งหมด
- ไม่สร้างโครงสร้างแพ็กเก็ตด้วยตัวคุณเองซึ่งจะเล็กกว่าการจัดลำดับโดยใช้วิธีการเหล่านี้ คุณควรรู้ว่าข้อมูลที่แพคเก็ตควรรวมถึง
ฉันควรแสดงอาร์เรย์ของข้อมูลอย่างไร
- เป็นอาร์เรย์ของข้อมูล เมื่อได้รับการอ่านบัฟเฟอร์ต่อไปจนถึงจุดสิ้นสุดของข้อมูลเพื่อหลีกเลี่ยงการส่งจำนวนองค์ประกอบของอาร์เรย์
อินเตอร์เฟสควรมีลักษณะอย่างไรสำหรับการบรรจุ / เปิดออกข้อมูล
- คุณสามารถตั้งค่าวิธีการมากมายในการแปลงชนิดพื้นฐานเป็นไบต์จากนั้นสร้างวิธีการเหล่านี้เพื่อแปลงประเภทที่กำหนดเองเช่นกัน ข้อมูลเฉพาะเกี่ยวกับวิธีการทำสามารถพบได้เกือบทุกที่ฉันแน่ใจ (ฉันใช้ C # เป็นการส่วนตัว)
สิ่งสุดท้ายที่ขนาดแพ็คเก็ตเป็นข้อกังวลโดยเฉพาะอย่างยิ่งสำหรับ snapshot: size = packetSize x เอนทิตี x connectedPlayers ดังนั้นคุณอาจมี 60 x 10 x 16 = 9,600 ไบต์ต่อแพ็คเก็ตจากนั้นส่ง 20 ครั้งต่อวินาที: = 192,000 bps = 187 KBps เห็นได้ชัดว่านี่เป็นความเร็วสูงที่อัปโหลด ดังนั้นความจำเป็นในการลดปัจจัยแต่ละอย่างที่ทำให้ขนาดแพ็คเก็ตน้อยที่สุดเท่าที่จะทำได้
บทความนี้ช่วยฉันได้มาก:
ระบบเครือข่ายผู้เล่นหลายคนของวาล์ว