Khả năng kết nối mạng với XNA và Xbox 360 là gì?


11

Tôi biết rằng XNA cho Xbox 360 bị hạn chế quyền truy cập vào mạng, được đồn là chỉ cho phép liên lạc qua giao thức Microsoft độc quyền với các đơn vị Xbox 360 khác.

Các khả năng kết nối mạng mà XNA cung cấp là gì? Có bao nhiêu đơn vị Xbox 360 có thể được kết nối với cùng một mạng con? Tối đa 16? Bất kỳ Xbox nào có thể gửi dữ liệu tới bất kỳ Xbox nào khác trên mạng con như giao tiếp ngang hàng không? Xbox có thể giao tiếp với XNA trên Windows PC không? Có thiết bị nào khác mà bạn có thể giao tiếp không?

Còn máy chủ game thì sao? Bạn có thể thiết lập máy chủ trò chơi nhiều người chơi của riêng mình và để Xbox kết nối với nó và liên lạc tự do không? Nền tảng nào bạn sẽ viết mã máy chủ trò chơi? C ++ trên Unix? Có bao nhiêu đơn vị Xbox có thể kết nối với một máy chủ tại một thời điểm? Nếu bạn không thể thiết lập máy chủ trò chơi của riêng mình thì có 'hack' không chính thức cho phép các nhà phát triển độc lập phát triển và chạy máy chủ trò chơi không?

Vì tôi không phải là nhà phát triển Xbox (tức là tôi không sở hữu devkit $ 10000) nên tôi không thể sử dụng các thư viện C ++ như Zoidcom .

Câu trả lời:


10

Truyền dữ liệu qua mạng LAN hoặc Internet

Có hai loại trò chơi nhiều người chơi trực tuyến khả dụng khi bạn tạo trò chơi nối mạng với XNA Game Studio:

  1. Hệ thống phiên trò chơi liên kết (LAN)
  2. Phiên TRỰC TIẾP. (Internet)

Các loại phiên có sẵn:

  1. Sử dụng Liên kết hệ thống để chơi trò chơi Mạng cục bộ
  2. Đăng nhập vào Xbox LIVE và Trò chơi cho Windows - Máy chủ LIVE
  3. Sử dụng LIVE để kết nối với các máy khác qua Internet khi trò chơi đang được phát triển

Truyền dữ liệu giữa các đơn vị Xbox và PC được kết nối được triển khai bằng lớp LocalNetworkGamer (được hỗ trợ trên Xbox 360) và dữ liệu được ghi bằng PacketWriter như sau:

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);

}

Cấu trúc liên kết mạng

Đối với trò chơi liên kết hệ thống, bạn có thể sử dụng bất kỳ cấu hình phần cứng nào sau đây để kiểm tra trò chơi được nối mạng:

  • Một máy tính phát triển và một Xbox 360
    (chạy một phiên bản trò chơi trên máy tính phát triển và một trên Xbox 360). Người tạo cần một Xbox LIVE Silver và một thành viên Câu lạc bộ Người tạo để chạy mã trên Xbox 360.

  • Một máy tính phát triển và một máy tính khách
    (chạy một phiên bản trò chơi trên mỗi máy tính). Người tạo không thể chạy hai trò chơi XNA Framework được nối mạng cùng một lúc trên cùng một máy tính. Người tạo cần một máy thứ hai để chạy phiên bản trò chơi thứ hai cho mục đích thử nghiệm. Không có tư cách thành viên Xbox LIVE hoặc thành viên Câu lạc bộ Người sáng tạo được yêu cầu cho kịch bản này.

  • Một máy tính phát triển và hai máy
    chơi trò chơi Xbox 360 (chạy một phiên bản trò chơi trên mỗi Xbox 360). Tại đây, một nhà sáng tạo triển khai và gỡ lỗi trò chơi trên hai chiếc Xbox 360. Người tạo cần ít nhất hai thành viên Xbox LIVE Silver và hai thành viên Câu lạc bộ Người sáng tạo (một cặp cho mỗi Xbox 360) cho kịch bản này.

Truyền giọng nói qua mạng

Dữ liệu giọng nói được tự động truyền và phát lại mà không cần bất kỳ nỗ lực tiêu đề nào. Các tiêu đề có thể sử dụng điều này để thực hiện trò chuyện nhóm hoặc giọng nói gần.

Khung XNA không cho phép truy cập chương trình trực tiếp vào luồng dữ liệu thoại.

  • Họ có quyền truy cập bằng giọng nói? - NetworkGamer.HasVoice
  • Họ đang nói chuyện? - NetworkGamer.IsTalking
  • Họ có bị tắt tiếng không? - NetworkGamer.IsMutingByLocalUser

4

Trò chơi XNA trên 360 sử dụng và được yêu cầu sử dụng Live- như tôi nhớ có nghĩa là người dùng tối đa trên mỗi "trò chơi" là 32 và bạn hoàn toàn không thể kết nối với bất kỳ dịch vụ bên ngoài nào.


Cập nhật 1: Bài đăng mẫu xác nhận tối đa 32 người chơi - http://forums.create.msdn.com/forums/t/27446.aspx


Cập nhật 2: Cần lưu ý rằngXNA on Windows != (XNA on Xbox | XNA on Windows Phone) nghĩa là trên Windows, XNA có thể làm bất cứ điều gì mà bất kỳ ứng dụng .NET nào khác có thể làm; trên Xbox và WP7 XNA bị hạn chế sử dụng Dịch vụ chơi trò chơi Xbox Live.

Tài liệu MSDN trên Xbox Live và XNA - http://msdn.microsoft.com/en-us/l Library / bb975642.aspx


Trên cùng một trang diễn đàn: "Đối với tôi, tôi sử dụng System.Net làm cơ sở xây dựng cho thành phần mạng của mình. Tôi thích mức độ đủ thấp có thể cung cấp cho tôi những thứ như" socket "," bind () ", v.v. Nhưng bạn cũng có thể sử dụng bất kỳ thư viện mạng nào khác, tùy theo sở thích của từng cá nhân. :) "
Robinicks

1
Bạn có thể hiểu nhầm, nhưng trên Windows XNA có thể sử dụng bất kỳ thành phần mạng nào vì trên Windows XNA chỉ là mã .NET; tuy nhiên, trên Xbox, bạn buộc phải sử dụng Live vì việc triển khai .NET Framework của Xbox không chứa bất kỳ triển khai mạng nào ngoại trừ mạng chơi trò chơi Live.
Nate

2
XNA Games on 360 use and are required to use Live- Hoàn toàn sai. Chính MSDN xác nhận rằng các trò chơi Xbox 360 có thể sử dụng System Link (là LAN) hoặc các máy chủ trò chơi LIVE để chơi trò chơi nhiều người chơi. Câu trả lời không rõ ràng cao. Mở bài viết rất MSDN mà bạn đã liên kết và xem phần "Yêu cầu thành viên Câu lạc bộ XNA và Yêu cầu thành viên Xbox LIVE" và đọc đoạn ban đầu.
Robinicks

Tôi đã đưa ra giả định rằng câu hỏi liên quan đến một trò chơi dựa trên Internet; vì theo kinh nghiệm của tôi, liên kết hệ thống trên mạng LAN là một tình huống rất hiếm gặp ...
Nate

Đó là một giả định tò mò vì mục đích của câu hỏi của tôi là hỏi về các khả năng và câu trả lời của bạn đã đóng cửa cả một lĩnh vực rộng lớn về các khả năng mở trong mạng. May mắn thay, tôi đã không tin bạn ngay lập tức và tự nghiên cứu. Nếu không, rất nhiều người trong chúng ta sẽ tin rằng Xbox 360 hầu như không có khả năng kết nối mạng ngoài giao tiếp với máy chủ LIVE.
Robinicks
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.