ความเป็นไปได้ในการเชื่อมต่อเครือข่ายของ XNA และ Xbox 360 คืออะไร?


11

ฉันรู้ว่า XNA สำหรับ Xbox 360 มีการ จำกัด การเข้าถึงเครือข่ายมีข่าวลือว่าอนุญาตเฉพาะการสื่อสารผ่านโพรโทคอล Microsoft propitiatory ไปยังหน่วย Xbox 360 อื่น ๆ

XNA มีความเป็นไปได้ในการเชื่อมต่อเครือข่ายอะไรบ้าง? สามารถเชื่อมต่อยูนิต Xbox 360 จำนวนเท่าใดกับเครือข่ายย่อยเดียวกัน สูงสุด 16 Xbox ใดสามารถส่งข้อมูลไปยัง Xbox อื่น ๆ บนเครือข่ายย่อยเช่นการสื่อสารแบบ Peer-to-peer ได้หรือไม่ Xbox สามารถสื่อสารกับ XNA บน Windows PC ได้หรือไม่ มีอุปกรณ์อื่นที่คุณสามารถสื่อสารด้วยได้หรือไม่?

แล้วเซิร์ฟเวอร์เกมล่ะ? คุณสามารถตั้งค่าเซิร์ฟเวอร์เกมแบบผู้เล่นหลายคนของคุณเองและให้ Xbox เชื่อมต่อกับมันและสื่อสารได้อย่างอิสระหรือไม่? แพลตฟอร์มใดที่คุณจะเขียนรหัสเซิร์ฟเวอร์เกม C ++ บน Unix? หน่วย Xbox แต่ละเครื่องสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ครั้งละกี่เครื่อง หากคุณไม่สามารถตั้งค่าเซิร์ฟเวอร์เกมของคุณเองจะมี 'แฮ็ก' ที่ไม่เป็นทางการซึ่งทำให้นักพัฒนาอินดี้สามารถพัฒนาและรันเซิร์ฟเวอร์เกมได้หรือไม่?

เนื่องจากฉันไม่ใช่นักพัฒนา Xbox (เช่นฉันไม่ได้เป็นเจ้าของ $ 10,000 devkit) ฉันไม่สามารถใช้ไลบรารี C ++ อย่างZoidcomได้

คำตอบ:


10

การถ่ายโอนข้อมูลผ่าน LAN หรืออินเทอร์เน็ต

เกมมัลติเพลเยอร์ออนไลน์มีสองประเภทเมื่อคุณสร้างเกมเครือข่ายด้วย XNA Game Studio:

  1. เซสชันเกมลิงค์ระบบ (LAN)
  2. เซสชันสด (อินเทอร์เน็ต)

มีประเภทเซสชันให้บริการ:

  1. ใช้ System Link สำหรับการเล่นเกม Local Area Network
  2. ลงชื่อเข้าใช้ Xbox สดและเกมสำหรับ Windows - เซิร์ฟเวอร์สด
  3. ใช้ LIVE เพื่อเชื่อมต่อกับเครื่องอื่น ๆ ผ่านอินเทอร์เน็ตในขณะที่เกมกำลังพัฒนา

การถ่ายโอนข้อมูลระหว่างหน่วย Xbox และ PC ที่เชื่อมต่อมีการใช้งานโดยใช้คลาส LocalNetworkGamer (รองรับบน Xbox 360) และข้อมูลถูกเขียนโดยใช้ PacketWriter ดังนี้:

foreach (LocalNetworkGamer gamer in session.LocalGamers)
{
    // Get the tank associated with this player.
    Tank myTank = gamer.Tag as Tank;
    // Write the data.
    packetWriter.Write(myTank.Position);
    packetWriter.Write(myTank.TankRotation);
    packetWriter.Write(myTank.TurretRotation);
    packetWriter.Write(myTank.IsFiring);
    packetWriter.Write(myTank.Health);

    // Send it to everyone.
    gamer.SendData(packetWriter, SendDataOptions.None);

}

โทโพโลยีเครือข่าย

สำหรับเกมลิงค์ของระบบคุณสามารถใช้หนึ่งในการกำหนดค่าฮาร์ดแวร์ต่อไปนี้เพื่อทดสอบเกมบนเครือข่าย:

  • คอมพิวเตอร์พัฒนาหนึ่งเครื่องและ Xbox 360 หนึ่งเครื่อง
    (ใช้งานหนึ่งอินสแตนซ์ของเกมบนคอมพิวเตอร์พัฒนาและอีกหนึ่งบน Xbox 360) ผู้สร้างต้องการหนึ่ง Xbox LIVE Silver และสมาชิกชมรมผู้สร้างหนึ่งคนเพื่อเรียกใช้โค้ดบน Xbox 360

  • คอมพิวเตอร์สำหรับการพัฒนาหนึ่งเครื่องและคอมพิวเตอร์ไคลเอนต์หนึ่งเครื่อง
    (ใช้งานหนึ่งอินสแตนซ์ของเกมบนคอมพิวเตอร์แต่ละเครื่อง) ผู้สร้างไม่สามารถรันเกม XNA Framework บนเครือข่ายสองเกมได้ในเวลาเดียวกันบนคอมพิวเตอร์เครื่องเดียวกัน ผู้สร้างต้องการเครื่องที่สองเพื่อเรียกใช้อินสแตนซ์เกมที่สองเพื่อการทดสอบ ไม่จำเป็นต้องมีสมาชิก Xbox LIVE หรือสมาชิกผู้สร้างคลับสำหรับสถานการณ์นี้

  • คอมพิวเตอร์สำหรับการพัฒนาหนึ่งเครื่องและคอนโซล Xbox 360 สองเครื่อง
    (ใช้งานอินสแตนซ์ของเกมหนึ่งตัวในแต่ละ Xbox 360) ที่นี่ผู้สร้างปรับใช้และ debugs เกมในสอง Xbox 360s ผู้สร้างต้องการสมาชิก Xbox LIVE Silver อย่างน้อยสองคนและสมาชิกชมรมผู้สร้างสองคน (หนึ่งคู่สำหรับแต่ละ Xbox 360) สำหรับสถานการณ์นี้

โอนเสียงผ่านเครือข่าย

ข้อมูลเสียงจะถูกส่งและเล่นซ้ำโดยอัตโนมัติโดยไม่ต้องพยายามใช้ชื่อเรื่องใด ๆ ชื่อสามารถใช้สิ่งนี้เพื่อใช้การแชทเป็นทีมหรือเสียงใกล้เคียง

XNA Framework ไม่เปิดเผยการเข้าถึงโดยตรงไปยังโปรแกรมสตรีมข้อมูลเสียง

  • พวกเขามีการเข้าถึงด้วยเสียงหรือไม่ - NetworkGamer.HasVoice
  • พวกเขากำลังพูดอยู่? - NetworkGamer.IsTalking
  • พวกเขาปิดเสียงไหม - NetworkGamer.IsMutedByLocalUser

4

XNA Games ในการใช้งาน 360 และจำเป็นต้องใช้Live- ซึ่งฉันจำได้ว่าผู้ใช้สูงสุดต่อ "เกม" คือ 32 และคุณไม่สามารถเชื่อมต่อกับบริการภายนอกใด ๆ เลย


อัปเดต 1:โพสต์แบบฟอร์มยืนยันจำนวนผู้เล่นสูงสุด 32 คน - http://forums.create.msdn.com/forums/t/27446.aspx


อัปเดต 2:ควรสังเกตว่าXNA on Windows != (XNA on Xbox | XNA on Windows Phone)ใน Windows, XNA สามารถทำสิ่งใดก็ได้ที่แอปพลิเคชั่น. NET อื่น ๆ สามารถทำได้ บน Xbox และ WP7 XNA ถูก จำกัด ให้ใช้ Xbox Live Gaming Services

เอกสาร MSDN บน Xbox Live และ XNA - http://msdn.microsoft.com/en-us/library/bb975642.aspx


ในหน้าฟอรัมเดียวกัน: "สำหรับฉันฉันใช้ System.Net เป็นฐานการสร้างสำหรับส่วนประกอบเครือข่ายของฉันฉันชอบความเพียงพอระดับต่ำที่สามารถให้สิ่งต่าง ๆ เช่น" ซ็อกเก็ต "," ผูก () ", เป็นต้น แต่คุณสามารถใช้ไลบรารีเครือข่ายอื่น ๆ ได้ตามความต้องการของแต่ละคน :) "
Robinicks

1
ความสับสนของคุณเป็นที่เข้าใจ แต่ใน Windows XNA สามารถใช้องค์ประกอบเครือข่ายใด ๆ เพราะใน Windows XNA เป็นเพียงรหัส. NET อย่างไรก็ตามบน Xbox คุณถูกบังคับให้ใช้งาน Live เนื่องจากการใช้งาน. NET Framework ของ Xbox ไม่ได้มีการติดตั้งเครือข่ายใด ๆ ยกเว้นเครือข่ายเกมสด
เนท

2
XNA Games on 360 use and are required to use Live- ผิดอย่างแน่นอน MSDN เองยืนยันว่าเกม Xbox 360 สามารถใช้ System Link (ซึ่งเป็น LAN) หรือเซิร์ฟเวอร์เกมสดสำหรับการเล่นเกมแบบผู้เล่นหลายคน คำตอบที่ไม่รู้มาก เปิดบทความ MSDN ที่คุณเชื่อมโยงและไปที่ส่วน "XNA Builders Club และ Xbox LIVE Membership Requirement" และอ่านย่อหน้าแรก
Robinicks

ฉันตั้งสมมติฐานว่าคำถามนั้นเกี่ยวกับเกมบนอินเทอร์เน็ต เนื่องจากในประสบการณ์ของฉันการเชื่อมโยงระบบบน LAN เป็นสถานการณ์ที่หายากมาก ...
เนท

นั่นเป็นข้อสันนิษฐานที่แปลกประหลาดเนื่องจากจุดประสงค์ของคำถามของฉันคือการขอความเป็นไปได้และคำตอบของคุณได้ปิดช่องทางที่เปิดกว้างทั้งหมดในระบบเครือข่าย โชคดีที่ฉันไม่เชื่อคุณทันทีและค้นคว้าด้วยตัวเอง ไม่อย่างนั้นพวกเราหลายคนคงจะเชื่อว่า Xbox 360 ไม่มีความสามารถในการเชื่อมต่อเครือข่ายนอกเหนือจากการสื่อสารกับเซิร์ฟเวอร์สด
Robinicks
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.