คำถามติดแท็ก udp

10
UDP ยังดีกว่า TCP สำหรับเกมเรียลไทม์ที่มีข้อมูลมากหรือไม่?
ฉันรู้ว่าโดยปกติแล้ว UDP จะแนะนำสำหรับเกมแบบผู้เล่นหลายคนแบบเรียลไทม์ที่มีการใช้ข้อมูลสูง บทความส่วนใหญ่มีอายุปีเป็น serval และเนื่องจาก ~ 80% ของข้อมูลทั้งหมดที่ส่งบนอินเทอร์เน็ตคือ TCP จึงต้องมีการปรับแต่งให้เหมาะสมสำหรับ TCP นี่ทำให้ฉันสงสัย: UDP ยังเหนือกว่าในแง่ของความเร็วและความล่าช้าหรือไม่? การเพิ่มประสิทธิภาพ TCP ล่าสุดทำให้ TCP ทำงานได้ดีกว่า UDP หรือไม่
71 c++  networking  udp  realtime 

4
รับทราบความน่าเชื่อถือโดยใช้ UDP
ฉันมีคำถามเกี่ยวกับ UDP สำหรับบริบทฉันทำงานในเกมแอ็คชั่นตามเวลาจริง ฉันได้อ่านบ้างเล็กน้อยเกี่ยวกับความแตกต่างระหว่าง UDP และ TCP และฉันรู้สึกว่าเข้าใจค่อนข้างดี แต่มีชิ้นส่วนหนึ่งที่ไม่เคยรู้สึกถูกต้องและน่าเชื่อถือและมีการตอบรับเป็นพิเศษ ฉันเข้าใจว่า UDP ไม่ได้ให้ความน่าเชื่อถือตามค่าเริ่มต้น (เช่นแพ็คเก็ตสามารถถูกทิ้ง เมื่อจำเป็นต้องมีความน่าเชื่อถือโซลูชันที่ฉันเห็น (ซึ่งเหมาะสมตามแนวคิด) คือการใช้ acceptgments (เช่นเซิร์ฟเวอร์ส่งแพ็กเก็ตไปยังไคลเอ็นต์และเมื่อไคลเอ็นต์ได้รับข้อความนั้นจะส่งการตอบกลับไปยังเซิร์ฟเวอร์) . จะเกิดอะไรขึ้นเมื่อการตอบรับลดลง ในตัวอย่างข้างต้น (เซิร์ฟเวอร์หนึ่งกำลังส่งแพ็คเก็ตไปยังไคลเอนต์หนึ่ง) เซิร์ฟเวอร์จัดการการสูญหายของแพ็กเก็ตที่อาจเกิดขึ้นโดยการส่งแพ็กเก็ตใหม่ทุกเฟรมจนกว่าจะได้รับการตอบรับสำหรับแพ็กเก็ตเหล่านั้น คุณยังอาจพบปัญหาเกี่ยวกับแบนด์วิดท์หรือข้อความที่ไม่เป็นไปตามคำสั่ง แต่จากมุมมองการสูญเสียแพ็คเก็ตเซิร์ฟเวอร์ครอบคลุม อย่างไรก็ตามหากลูกค้าส่งการตอบรับที่ไม่เคยมาถึงเซิร์ฟเวอร์จะไม่มีทางเลือกนอกจากต้องหยุดส่งข้อความในที่สุดซึ่งอาจทำลายเกมได้หากจำเป็นต้องมีข้อมูลในแพ็คเก็ตนั้น คุณสามารถใช้วิธีการที่คล้ายกันไปยังเซิร์ฟเวอร์ (เช่นส่งการตอบรับจนกว่าคุณจะได้รับ ack สำหรับ ack?) แต่วิธีการนั้นจะทำให้คุณวนกลับไปกลับมาตลอดไป (เนื่องจากคุณต้องการ ack สำหรับ ack สำหรับ ack และอื่น ๆ ) ฉันรู้สึกว่าตรรกะพื้นฐานของฉันถูกต้องตรงนี้ซึ่งทำให้ฉันมีสองตัวเลือก ส่งแพ็คเก็ตการตอบรับเพียงครั้งเดียวและหวังว่าจะดีที่สุด ส่งแพ็คเก็ตการรับทราบจำนวนหนึ่ง (อาจ 3-4) และหวังว่าจะดีที่สุดโดยสมมติว่าจะไม่ทิ้งทั้งหมด มีคำตอบสำหรับปัญหานี้หรือไม่? ฉันเข้าใจอะไรผิดหรือเปล่า? มีการรับประกันการใช้ …
16 networking  udp 

4
มันสมเหตุสมผลไหมที่จะใช้ทั้ง TCP และ UDP ในครั้งเดียว?
หลังจากอ่านUDP ยังดีกว่า TCP สำหรับเกมเรียลไทม์ที่มีข้อมูลมากหรือไม่? ฉันสงสัยว่ามันสมเหตุสมผลที่จะใช้ทั้ง TCP และ UDP ในเวลาเดียวกัน แต่สำหรับสิ่งต่าง ๆ : TCP สำหรับการส่งข้อมูลที่ส่งไม่บ่อยนัก แต่ควรรับประกันว่าจะมาถึงอย่างน่าเชื่อถือ เช่นการอัพเดทคะแนนชื่อของผู้เล่นหรือแม้แต่สถานะเปิด / ปิดของแสงในโลกของเกม UDP สำหรับการส่งข้อมูลที่อัปเดตอยู่ตลอดเวลาและอาจสูญหายได้ในบางครั้งเนื่องจากข้อมูลที่ใหม่กว่าอยู่ระหว่างทาง เช่นตำแหน่งการหมุน ฯลฯ นี่เป็นความคิดที่สมเหตุสมผลหรือไม่ ข้อเสียที่เป็นไปได้คืออะไร? มีวิธีที่ดีกว่าในการจัดการกับสิ่งนี้หรือไม่?

2
UDP ที่ไม่บล็อกหรือแยกเธรดสำหรับรับ
ฉันกำลังสร้างเกมผู้เล่นหลายคน (สำหรับผู้เล่นอายุต่ำกว่า 64 ปี) ฉันตัดสินใจที่จะมีเธรดแยกต่างหากสำหรับลูปเครือข่าย แต่ฉันสงสัยว่ามันจะดีกว่าถ้าจะสร้างเธรดพิเศษสำหรับรับ UDP หรือตั้งซ็อกเก็ตการรับบนการไม่บล็อก (ไม่มีเธรดพิเศษ) หรือจะเป็นการดีกว่าถ้าใช้วิธีอื่นเช่น Asynchronous Sockets ยินดีต้อนรับวิธีการที่ดีกว่าเสมอ!

3
วิธีการหลีกเลี่ยงการควบคุมปริมาณ?
ฉันกำลังเขียนเกม iOS บนเครือข่าย เมื่อส่งแพ็คเก็ตที่มีGKMatchSendDataReliable(ซึ่งฉันสันนิษฐานว่าเป็น UDP พร้อมรหัสรับแพ็คเก็ตของตัวเองเขียน) ที่ 60 แพ็คเก็ตต่อวินาที (ดังนั้น 16 ms ระหว่างแพ็คเก็ตที่อยู่ติดกัน) เวลา ping เฉลี่ยแย่ลงอย่างรวดเร็ว: ) และเพียงแค่ส่ง "ท่วม" จาก 100 แพ็คเก็ต (ในอัตรา 60 แพ็คเก็ตต่อวินาที) ฉันวัดเวลาไปกลับโดยเฉลี่ยและนี่คือผลลัพธ์: [ 21:16:39 ]: I saw an average roundtrip time of 52.342787 ms, he saw 54.496590 ms [ 21:16:34 ]: I saw an average roundtrip …
9 networking  udp 

2
อินพุตฝั่งเซิร์ฟเวอร์
ขณะนี้ในเกมของฉันลูกค้าไม่มีอะไรนอกจากเป็น renderer เมื่อมีการเปลี่ยนแปลงสถานะอินพุตไคลเอนต์จะส่งแพ็กเก็ตไปยังเซิร์ฟเวอร์และย้ายผู้เล่นราวกับว่ากำลังประมวลผลอินพุต แต่เซิร์ฟเวอร์มีตำแหน่งสุดท้ายที่บอกตำแหน่ง วิธีนี้ใช้งานได้ดีโดยทั่วไปยกเว้นปัญหาที่สำคัญอย่างหนึ่ง: การหลุดจากขอบ โดยทั่วไปหากผู้เล่นเดินไปที่ขอบพูดหน้าผาและหยุดทันทีก่อนที่จะออกจากขอบบางครั้งในวินาทีต่อมาเขาจะหายตัวไปจากขอบ นี่เป็นเพราะแพ็คเก็ต "ฉันหยุดกด W" ถูกส่งหลังจากเซิร์ฟเวอร์ประมวลผลข้อมูล นี่คือแผนภาพความล่าช้าเพื่อช่วยให้คุณเข้าใจสิ่งที่ฉันหมายถึง: http://i.imgur.com/Prr8K.png ฉันสามารถส่งแพ็กเก็ต "W Pressed" แต่ละเฟรมเพื่อให้เซิร์ฟเวอร์ประมวลผล แต่ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาแบนด์วิดท์ที่มีราคาแพง ความช่วยเหลือใด ๆ ที่ชื่นชม!

3
ฉันจะป้องกันการปลอมแปลงตัวตนในเกมที่มีผู้เล่นหลายคนได้อย่างไร
ฉันกำลังคิดเกี่ยวกับลูกค้าที่แอบอ้างที่อยู่ IP หลอกลูกค้ารายอื่นว่าเป็นเซิร์ฟเวอร์ สิ่งนั้น (ฉันไม่ค่อยรู้เรื่องนี้มากนักดังนั้นถ้านี่ผิดทั้งหมดโปรดแก้ไขให้ฉันด้วย) ฉันควรทำอย่างไรเพื่อป้องกันปัญหานี้ เพราะมันเป็นเกมเรียลไทม์ถ้าฉันต้องใช้การเข้ารหัสฉันจะใช้สิ่งที่รวดเร็วและปลอดภัยเหมือน RC4 ฉันควรเข้ารหัสข้อมูลแพ็คเก็ตด้วยคีย์ที่เซิร์ฟเวอร์มอบให้กับลูกค้าหรือไม่ ถ้ามันสร้างความแตกต่างฉันใช้ UDP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.