นี่เป็นคำพูดของ Sam Jansen จากความคิดเห็นในgafferongames.com :
การพูดในฐานะนักวิจัยเครือข่ายและไม่ใช่ผู้พัฒนาเกมข้อสรุปว่าการไม่ใช้ TCP และ UDP ด้วยกันดูเหมือนจะแข็งแกร่ง TCP จะมีการสูญหายของแพ็คเก็ตเท่านั้นหากกำลังส่งข้อมูลมากเกินไป ในบางวิธีเช่นเดียวกับข้อมูล UDP ที่คุณกำลังส่ง ความแตกต่างคือคุณไม่มีการควบคุมโดยตรงกับอัตราการส่ง TCP ที่นี่ถูกซ่อนไว้ให้คุณ
หากคุณเพียงแค่ต้องส่งข้อมูลที่เชื่อถือได้และไม่ต้องการกังวลเกี่ยวกับการส่งสัญญาณซ้ำและการใช้โปรโตคอลที่เชื่อถือได้และคุณรู้ว่าอัตราจะต่ำดังนั้นจะไม่มีปัญหากับการใช้ทั้ง TCP และ UDP
ความสัมพันธ์นั้นไม่ซับซ้อนระหว่างทั้งสองจริง ๆ : TCP เพียงเพิ่มอัตราการส่ง (ถ้ามีข้อมูลที่จะส่ง) จนกว่าจะได้รับแพ็กเก็ตที่หายไปซึ่งในกรณีนี้มันจะหมุนกลับอัตราของมันจากนั้นเริ่มเพิ่มอัตราอีกครั้ง เวลาช้ากว่า) เมื่ออัตราการเพิ่มขึ้นทำให้แพ็คเก็ตสูญเสียมันก็มีแนวโน้มที่จะได้รับกระแสข้อมูลอื่น ๆ เช่นกันรวมถึงแพ็กเก็ต UDP ของคุณ
กระดาษลักษณะของการสูญเสียแพ็คเก็ต UDP: ผลกระทบของการรับส่งข้อมูล TCPได้ผลลัพธ์โดยการเปิดการเชื่อมต่อ TCP หลายรายการในครั้งเดียวและทำให้ข้อมูลเครือข่ายท่วมตัว สิ่งนี้นำไปสู่ความแออัดตามมาด้วยการซิงโครไนซ์ทั่วโลกซึ่งทั้งสองอย่างก่อให้เกิดแพ็กเก็ตที่ถูกทิ้ง เห็นได้ชัดว่าไคลเอนต์เกมจะไม่เปิดการเชื่อมต่อโหลในคราวเดียวและทำให้เครือข่ายท่วมข้อมูลด้วยดังนั้นผลลัพธ์ของคุณจะแตกต่างกัน
ในการตอบคำถามของคุณ:
ฉันสงสัยว่ามันสมเหตุสมผลที่จะใช้ทั้ง TCP และ UDP ในเวลาเดียวกัน แต่สำหรับสิ่งต่าง ๆ [... ]
ใช่นี่เป็นสิ่งที่ยอมรับได้หากคุณอยู่ในขอบเขตแบนด์วิดท์
- TCP สำหรับการส่งข้อมูลที่ส่งไม่บ่อยนัก แต่ควรรับประกันว่าจะมาถึงอย่างน่าเชื่อถือ เช่นการอัพเดทคะแนนชื่อของผู้เล่นหรือแม้แต่สถานะเปิด / ปิดของแสงในโลกของเกม
เมื่อใช้ทั้ง TCP และ UDP คุณควรต้องการส่งให้มากที่สุดผ่าน UDP และน้อยที่สุดเท่าที่จะทำได้ผ่าน TCP
ตอนนี้ฉันถามคุณว่า: จำเป็นหรือไม่ที่จะต้องส่งคะแนนชื่อผู้เล่นและสถานะของแสงเหนือ TCP? ในขณะที่มันเป็นความจริงที่คุณต้องได้รับข้อมูลนี้ในที่สุดมันเป็นความจริงที่คุณต้องได้รับข้อมูลนี้อย่างเคร่งครัดตามลำดับและครั้งเดียว?
อาจจะไม่.
UDP ทำงานได้ดีสำหรับกรณีเหล่านี้และQuake 3เป็นตัวอย่างที่ดีของวิธีการ
ดังนั้นตัวอย่างที่ดีของ TCP ควบคู่กับ UDP คืออะไร ลองนึกถึงกล่องแชทของเกม การอัปเดตของกล่องแชทนี้ (นั่นคือบรรทัดใหม่ของข้อความ) จะต้องส่งทั้งที่เชื่อถือได้และตามลำดับอย่างเคร่งครัด ดังนั้น TCP จึงเหมาะสมอย่างยิ่ง