หมายเหตุ:นี่เป็นคำถามเกี่ยวกับเครือข่ายไม่ใช่การเล่นเกม ฉันใช้สตาร์คราฟต์เป็นเพียงตัวอย่างเท่านั้น
เกมสตาร์คราฟต์ (ไม่ใช่สตาร์คราฟต์ 2) รองรับการเล่นออนไลน์ โฮสต์หนึ่งคนและบุคคลอื่นเข้าร่วม หากโฮสต์ออกระหว่างเกมเกมสามารถดำเนินต่อไปเรื่อย ๆ โดยไม่มีโฮสต์ มันทำงานอย่างไร
พิจารณาสถานการณ์สมมติต่อไปนี้:
- ฉันโฮสต์ 3 ต่อ 3 โปรดทราบว่าสำหรับคนที่จะเข้าร่วมได้เราเตอร์ของฉันจะต้องได้รับการกำหนดค่าให้พอร์ตไปข้างหน้า 6112, TCP และ UDP (ดูBlizzard Support )
- ห้าคนเข้าร่วม ทุกคน (รวมตัวเอง) อยู่หลังเราเตอร์ ฉันเริ่มเกม
- สามนาทีในเกมประมาณยี่สิบ zealots เทลงในฐานของฉัน ไม่มีใครช่วยฉัน
- ฐานของฉันถูกกำจัดดังนั้นฉันจึงไป (เกมไม่ได้ให้คุณเลือก)
- เกมดำเนินต่อไปโดยไม่มีโฮสต์ (ทีมเหย้าเหลือผู้เล่นสองคน)
ลูกค้าที่เหลือห้าราย (ที่ไม่ต้องการการส่งต่อ 6112) ยังคงเชื่อมต่อได้อย่างไร
ถ้าฉันเข้าใจถูกต้อง: หากสองโปรแกรมต้องการคุยกันโปรแกรมใดโปรแกรมหนึ่งจะต้องเป็น "เซิร์ฟเวอร์" และฟังการเชื่อมต่อบนพอร์ตในขณะที่อีกโปรแกรมหนึ่งจะต้องเป็น "ไคลเอนต์" และเริ่มต้นคำขอการเชื่อมต่อนั้น ท่าเรือ. พวกเขาไม่สามารถเริ่มส่งแพ็กเก็ตให้กันและกันได้ (และฉันไม่รู้ด้วยซ้ำว่าพวกเขาจะทำอย่างไรหากทั้งคู่อยู่หลังเราเตอร์)
บางคนโฮสต์เกมเป็นเซิร์ฟเวอร์ในขณะที่ผู้ที่เข้าร่วมเป็นลูกค้า มันง่ายที่จะดูว่าลูกค้าสามารถเริ่มสื่อสารกับเซิร์ฟเวอร์ได้อย่างไร สิ่งที่ฉันไม่ได้รับคือลูกค้าจะเริ่มสื่อสารกันได้อย่างไรโดยไม่ต้องผ่านเซิร์ฟเวอร์ Internet Protocol อนุญาตให้เซิร์ฟเวอร์เริ่มต้นการเชื่อมต่อระหว่างไคลเอ็นต์หรือไม่
เป็นไปได้อย่างสิ้นเชิงว่าในกรณีของสตาร์คราฟต์ปริมาณการใช้เกมจะต้องผ่านเซิร์ฟเวอร์ Battle.net StarCraft ทำการเชื่อมต่อกับ Battle.net ระหว่างเกม (สำหรับข้อความจากเพื่อน ฯลฯ ) อย่างไรก็ตามฉันสงสัยว่าการรับส่งข้อมูลของเกมจะผ่านไปเพราะถ้าเป็นเช่นนั้นเหตุใดโฮสต์จึงต้องส่งต่อ 6112
คำถามของฉันคือเซิร์ฟเวอร์สามารถเชื่อมต่อกับไคลเอนต์หลายคนเพื่อเริ่มต้นการเชื่อมต่อระหว่างพวกเขา?
I host a 3 versus 3. Note that, for people to be able to join, my router has to be configured to port forward 6112, TCP and UDP (see Blizzard Support).
เห็นได้ชัดว่าสิ่งนี้จำเป็นสำหรับการเริ่มเกมเพื่อให้ผู้ใช้สามารถค้นหาคุณ แต่ไม่จำเป็นต้องเชื่อมต่อ