XNA 및 Xbox 360의 네트워킹 가능성은 무엇입니까?


11

Xbox 360 용 XNA는 네트워킹에 대한 액세스가 제한적이며 독점적 인 Microsoft 프로토콜을 통해 다른 Xbox 360 장치와의 통신 만 허용한다는 소문이 있습니다.

XNA가 제공하는 네트워킹 가능성은 무엇입니까? 동일한 서브넷에 몇 개의 Xbox 360 장치를 연결할 수 있습니까? 최대 16 명? 모든 Xbox가 피어 투 피어 통신과 같은 서브넷의 다른 Xbox로 데이터를 보낼 수 있습니까? Xbox는 Windows PC에서도 XNA와 통신 할 수 있습니까? 통신 할 수있는 다른 장치가 있습니까?

게임 서버는 어떻습니까? 나만의 멀티 플레이어 게임 서버를 설정하고 Xbox와 서버를 연결하고 자유롭게 대화 할 수 있습니까? 게임 서버 코드를 어떤 플랫폼에 작성 하시겠습니까? 유닉스에서 C ++? 한 번에 몇 개의 Xbox 장치를 서버에 연결할 수 있습니까? 자신의 게임 서버를 설정할 수없는 경우 인디 개발자가 게임 서버를 개발하고 실행할 수있는 비공식적 인 '해킹'이 있습니까?

Xbox 개발자가 아니기 때문에 (예 : $ 10000 devkit을 소유하지 않음) Zoidcom 과 같은 C ++ 라이브러리를 사용할 수 없습니다 .

답변:


10

LAN 또는 인터넷을 통한 데이터 전송

XNA Game Studio로 네트워크 게임을 만들 때 사용할 수있는 온라인 멀티 플레이어 게임 에는 두 가지 유형이 있습니다 .

  1. 시스템 링크 게임 세션 (LAN)
  2. 라이브 세션. (인터넷)

사용 가능한 세션 유형 :

  1. 근거리 통신망 게임 플레이에 시스템 링크 사용
  2. Xbox LIVE 및 Games for Windows-LIVE 서버에 로그인
  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);

}

네트워크 토폴로지

시스템 링크 게임의 경우 다음 하드웨어 구성 중 하나를 사용 하여 네트워크 게임을 테스트 할 수 있습니다 .

  • 개발 컴퓨터 1 대와 Xbox 360 1 대 (개발 컴퓨터 및 Xbox 360
    에서 게임 인스턴스 1 개 실행) 제작자는 Xbox 360에서 코드를 실행하려면 Xbox LIVE Silver 1 개와 Creators Club 멤버십 1 개가 필요합니다.

  • 개발 컴퓨터 1 대와 클라이언트 컴퓨터 1 대
    (각 컴퓨터에서 게임 인스턴스 1 개씩 실행) 제작자는 동일한 컴퓨터에서 두 개의 네트워크로 연결된 XNA Framework 게임을 동시에 실행할 수 없습니다. 제작자는 테스트 목적으로 두 번째 게임 인스턴스를 실행하려면 두 번째 컴퓨터가 필요합니다. 이 시나리오에는 Xbox LIVE 멤버십 또는 Creators Club 멤버십이 필요하지 않습니다.

  • 개발 컴퓨터 1 대와 Xbox 360 본체 2 대
    (각 Xbox 360에서 게임 인스턴스 1 개씩 실행) 여기서 제작자는 두 개의 Xbox 360에서 게임을 배포하고 디버깅합니다. 제작자는이 시나리오를 위해 Xbox LIVE Silver 멤버십 2 개 이상과 Creators Club 멤버십 2 개 (Xbox 360 당 한 쌍)가 필요합니다.

네트워크를 통한 음성 전송

음성 데이터 는 타이틀 작업없이 자동으로 전송 및 재생됩니다. 타이틀을 사용하여 팀 채팅 또는 근접 음성을 구현할 수 있습니다.

XNA Framework는 음성 데이터 스트림에 대한 직접 프로그램 액세스를 제공하지 않습니다.

  • 그들은 음성 액세스가 있습니까? -NetworkGamer.HasVoice
  • 그들은 현재 말하고 있습니까? -NetworkGamer.IsTalking
  • 음소거 되었습니까? -NetworkGamer.IsMutedByLocalUser

4

360의 XNA Games는 사용하고 사용해야합니다. Live"게임"당 최대 사용자 수는 32 명이므로 외부 서비스에 전혀 연결할 수 없습니다.


업데이트 1 : 최대 32 명의 선수를 확인하는 양식 게시물-http : //forums.create.msdn.com/forums/t/27446.aspx


업데이트 2 : 주목해야한다 XNA on Windows != (XNA on Xbox | XNA on Windows Phone)즉, XNA 다른 .NET 응용 프로그램이 할 수있는 일을 할 수있는 Windows에서 그런 말을하는 것입니다; Xbox 및 WP7 XNA에서는 Xbox Live 게임 서비스 사용이 제한됩니다.

Xbox Live 및 XNA에 대한 MSDN 설명서-http: //msdn.microsoft.com/en-us/library/bb975642.aspx


같은 포럼 페이지에서 : "저는 System.Net을 네트워크 구성 요소의 기반으로 사용하고 있습니다."socket ","bind () "와 같은 것들을 제공 할 수있는 저수준이 마음에 듭니다. 다른 네트워크 라이브러리도 사용할 수 있습니다. 개인의 취향에
달려

1
혼란은 이해할 만하지 만 Windows XNA는 .NET 코드이므로 Windows XNA에서는 모든 네트워킹 구성 요소를 사용할 수 있습니다. 그러나 Xbox의 .NET Framework 구현에는 라이브 게임 네트워크를 제외한 네트워크 구현이 포함되어 있지 않기 때문에 Xbox에서는 Live를 사용해야합니다.
Nate

2
XNA Games on 360 use and are required to use Live-틀렸어 MSDN 자체는 Xbox 360 게임이 시스템 링크 (LAN) 또는 라이브 게임 서버를 멀티 플레이어 게임 플레이에 사용할 수 있음을 확인합니다. 잘 모르는 대답. 링크 한 MSDN 기사를 열고 "XNA Creators Club 및 Xbox LIVE 멤버십 요구 사항"섹션으로 이동하여 초기 단락을 읽으십시오.
Robinicks

나는 인터넷 기반 게임에 관한 질문이라고 가정했다. 내 경험상 LAN의 시스템 링크는 매우 드문 시나리오입니다.
Nate

내 질문의 목적은 가능성을 요구하는 것이기 때문에 호기심이 많은 가정이며, 귀하의 답변은 네트워킹에서 광범위한 가능성을 열어 놓았습니다. 운 좋게도 나는 당신을 즉시 믿지 않고 스스로 연구했습니다. 그렇지 않으면 Xbox 360에는 LIVE 서버와의 통신 외에 네트워킹 기능이 거의 없다고 믿게 될 것입니다.
Robinicks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.