Quais são as possibilidades de rede com o XNA e o Xbox 360?

11

Sei que o XNA para Xbox 360 tem acesso limitado à rede, que, segundo boatos, só permite a comunicação através de um protocolo propiciatório da Microsoft com outras unidades do Xbox 360.

Quais são as possibilidades de rede que o XNA oferece? Quantas unidades do Xbox 360 podem ser conectadas à mesma sub-rede? 16 máximo? Qualquer Xbox pode enviar dados para qualquer outro Xbox na sub-rede, como a comunicação ponto a ponto? Um Xbox também pode se comunicar com o XNA nos PCs com Windows? Existem outros dispositivos com os quais você pode se comunicar?

E quanto aos servidores de jogos? Você pode configurar seu próprio servidor de jogos multiplayer e ter os Xboxs conectados a ele e se comunicar livremente? Em qual plataforma você escreveria o código do servidor do jogo? C ++ no Unix? Quantas unidades Xbox podem se conectar a um servidor por vez? Se você não pode configurar seu próprio servidor de jogos, existem 'hacks' não oficiais que permitem que desenvolvedores independentes desenvolvam e executem um servidor de jogos?

Como não sou desenvolvedor do Xbox (ou seja, não possuo um kit de desenvolvimento de US $ 10000), não posso usar bibliotecas C ++ como a Zoidcom .

Robinicks
fonte

Respostas:

10

Transferência de dados pela LAN ou Internet

Existem dois tipos de jogos multiplayer online disponíveis quando você cria um jogo em rede com o XNA Game Studio:

  1. Sessões de jogos de link do sistema (LAN)
  2. Sessões LIVE. (Internet)

Tipos de sessão disponíveis:

  1. Use o link do sistema para jogar na rede local
  2. Entre no Xbox LIVE e Games for Windows - LIVE Servers
  3. Use o LIVE para conectar-se a outras máquinas pela Internet enquanto o jogo estiver em desenvolvimento

A transferência de dados entre as unidades Xbox e PC conectadas é implementada usando a classe LocalNetworkGamer (suportada no Xbox 360) e os dados são gravados usando um PacketWriter da seguinte maneira:

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

}

Topologias de rede

Para um jogo de link do sistema, você pode usar qualquer uma das seguintes configurações de hardware para testar um jogo em rede:

  • Um computador de desenvolvimento e um Xbox 360
    (executando uma instância do jogo no computador de desenvolvimento e outra no Xbox 360). O criador precisa de uma associação do Xbox LIVE Silver e de um clube do criador para executar o código no Xbox 360.

  • Um computador de desenvolvimento e um computador cliente
    (executando uma instância do jogo em cada computador). Os criadores não podem executar dois jogos do XNA Framework em rede ao mesmo tempo no mesmo computador. Os criadores precisam de uma segunda máquina para executar uma segunda instância do jogo para fins de teste. Não são necessárias associações ao Xbox LIVE ou associações ao Creators Club para este cenário.

  • Um computador de desenvolvimento e dois consoles Xbox 360
    (executando uma instância do jogo em cada Xbox 360). Aqui, um criador implanta e depura o jogo em dois Xbox 360s. O criador precisa de pelo menos duas associações do Xbox LIVE Silver e duas associações do Creators Club (um par para cada Xbox 360) para esse cenário.

Transferência de voz pela rede

Os dados de voz são automaticamente transmitidos e reproduzidos sem nenhum esforço de título. Os títulos podem usar isso para implementar o bate-papo em equipe ou a voz de proximidade.

O XNA Framework não expõe o acesso direto do programa ao fluxo de dados de voz.

  • Eles têm acesso por voz? - NetworkGamer.HasVoice
  • Eles estão conversando no momento? - NetworkGamer.IsTalking
  • Eles estão silenciados? - NetworkGamer.IsMutedByLocalUser
Robinicks
fonte
4

A XNA Games on 360 usa e é obrigada a usar Live- o que, pelo que me lembro, significa que o máximo de usuários por "jogo" é 32 e você não pode se conectar a nenhum serviço externo.


Atualização 1: Postagem de formulário confirmando o máximo de 32 jogadores - http://forums.create.msdn.com/forums/t/27446.aspx


Atualização 2: Note-se XNA on Windows != (XNA on Xbox | XNA on Windows Phone)que, no Windows, o XNA pode fazer qualquer coisa que qualquer outro aplicativo .NET possa fazer; no Xbox e no WP7, o XNA está restrito ao uso dos serviços Xbox Live Gaming.

Documentação da MSDN no Xbox Live e XNA - http://msdn.microsoft.com/en-us/library/bb975642.aspx

Nate
fonte
Na mesma página do fórum: "Para mim, eu uso o System.Net como base de construção para o meu componente de rede. Gosto da quantidade de nível baixo que pode me fornecer coisas como" socket "," bind () ", etc. Mas também você pode usar qualquer outra biblioteca de rede, depende dos gostos dos indivíduos. :) "
Robinicks
1
Sua confusão é compreensível, mas no Windows XNA pode usar qualquer componente de rede, porque no Windows XNA é apenas código .NET; no entanto, no Xbox, você é forçado a usar o Live porque a implementação do .NET Framework pelo Xbox não contém nenhuma implementação de rede, exceto a rede de jogos ao vivo.
Nate
2
XNA Games on 360 use and are required to use LiveAbsolutamente errado. O próprio MSDN confirma que os jogos do Xbox 360 podem usar o System Link (que é LAN) ou servidores de jogos LIVE para jogos com vários jogadores. Resposta altamente desinformada. Abra o artigo do MSDN vinculado e vá para a seção "Requisitos de associação ao XNA Creators Club e Xbox LIVE" e leia o parágrafo inicial.
Robinicks
Eu assumi que a pergunta era sobre um jogo baseado na Internet; pois na minha experiência, o link do sistema na LAN é um cenário muito raro ...
Nate
Essa é uma suposição curiosa, já que o objetivo da minha pergunta era pedir possibilidades, e sua resposta fechou todo um amplo campo de possibilidades abertas nas redes. Felizmente eu não acreditei em você instantaneamente e pesquisei por mim. Caso contrário, muitos de nós ficariam acreditando que o Xbox 360 praticamente não possui recursos de rede além do comm com servidores LIVE.
Robinicks