¿Cuáles son las posibilidades de conexión en red con XNA y Xbox 360?

11

Sé que XNA para Xbox 360 tiene acceso limitado a la red, se rumorea que solo permite la comunicación a través de un protocolo de Microsoft propiciatorio a otras unidades Xbox 360.

¿Cuáles son las posibilidades de red que ofrece XNA? ¿Cuántas unidades Xbox 360 se pueden conectar a la misma subred? 16 máximo? ¿Puede cualquier Xbox enviar datos a cualquier otra Xbox en la subred como la comunicación punto a punto? ¿Puede Xbox también comunicarse con XNA en PC con Windows? ¿Hay otros dispositivos con los que pueda comunicarse?

¿Y qué hay de los servidores de juegos? ¿Puedes configurar tu propio servidor de juego multijugador y hacer que las Xbox se conecten y se comuniquen libremente? ¿En qué plataforma escribirías el código del servidor del juego? C ++ en Unix? ¿Cuántas unidades Xbox se pueden conectar a un servidor a la vez? Si no puede configurar su propio servidor de juegos, ¿existen 'hacks' no oficiales que permitan a los desarrolladores independientes desarrollar y ejecutar un servidor de juegos?

Como no soy desarrollador de Xbox (es decir, no tengo un devkit de $ 10000), no puedo usar bibliotecas de C ++ como Zoidcom .

Robinicks
fuente

Respuestas:

10

Transferencia de datos a través de LAN o Internet

Hay dos tipos de juegos multijugador en línea disponibles cuando creas un juego en red con XNA Game Studio:

  1. Enlace de sistema sesiones de juego (LAN)
  2. Sesiones en vivo. (Internet)

Tipos de sesión disponibles:

  1. Utilice el enlace del sistema para la jugabilidad de la red de área local
  2. Inicie sesión en Xbox LIVE y Juegos para Windows - Servidores LIVE
  3. Use LIVE para conectarse a otras máquinas a través de Internet mientras el juego está en desarrollo

La transferencia de datos entre las unidades Xbox y PC conectadas se implementa usando la clase LocalNetworkGamer (compatible con Xbox 360) y los datos se escriben usando un PacketWriter de la siguiente manera:

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 red

Para un juego de enlace de sistema, puede usar cualquiera de las siguientes configuraciones de hardware para probar un juego en red:

  • Una computadora de desarrollo y una Xbox 360
    (ejecutando una instancia del juego en la computadora de desarrollo y una en la Xbox 360). El creador necesita una membresía de Xbox LIVE Silver y una de Creators Club para ejecutar el código en la Xbox 360.

  • Una computadora de desarrollo y una computadora cliente
    (ejecutando una instancia del juego en cada computadora). Los creadores no pueden ejecutar dos juegos XNA Framework en red al mismo tiempo en la misma computadora. Los creadores necesitan una segunda máquina para ejecutar una segunda instancia de juego con fines de prueba. No se requieren membresías Xbox LIVE o membresías Creators Club para este escenario.

  • Una computadora de desarrollo y dos consolas Xbox 360
    (ejecutando una instancia del juego en cada Xbox 360). Aquí un creador implementa y depura el juego en dos Xbox 360. El creador necesita al menos dos membresías Xbox LIVE Silver y dos membresías Creators Club (un par para cada Xbox 360) para este escenario.

Transferencia de voz a través de la red

Los datos de voz se transmiten y reproducen automáticamente sin ningún esfuerzo de título. Los títulos pueden usar esto para implementar el chat del equipo o la voz de proximidad.

XNA Framework no expone el acceso directo del programa al flujo de datos de voz.

  • ¿Tienen acceso de voz? - NetworkGamer.HasVoice
  • ¿Están hablando actualmente? - NetworkGamer.IsTalking
  • ¿Están silenciados? - NetworkGamer.IsMutedByLocalUser
Robinicks
fuente
4

XNA Games en 360 usa y está obligado a usarlo Live, lo que, según recuerdo, significa que el número máximo de usuarios por "juego" es de 32, y no puede conectarse a ningún servicio externo.


Actualización 1: Publicación del formulario que confirma el máximo de 32 jugadores - http://forums.create.msdn.com/forums/t/27446.aspx


Actualización 2: Cabe señalar que XNA on Windows != (XNA on Xbox | XNA on Windows Phone)eso significa que en Windows, XNA puede hacer cualquier cosa que cualquier otra aplicación .NET pueda hacer; en Xbox y WP7 XNA está restringido al uso de los Servicios de juegos Xbox Live.

Documentación de MSDN en Xbox Live y XNA: http://msdn.microsoft.com/en-us/library/bb975642.aspx

Nate
fuente
En la misma página del foro: "Para mí, uso System.Net como base de construcción para mi componente de red. Me gusta cómo es suficiente de bajo nivel que me puede proporcionar cosas como" socket "," bind () ", etc. Pero también puede usar cualquier otra biblioteca de red, depende de los gustos individuales. :) "
Robinicks
1
Su confusión es comprensible, pero en Windows XNA puede usar cualquier componente de red porque en Windows XNA es solo código .NET; sin embargo, en Xbox se ve obligado a usar Live porque la implementación de Xbox de .NET Framework no contiene ninguna implementación de red, excepto la red de juegos Live.
Nate
2
XNA Games on 360 use and are required to use Live- Absolutamente equivocado. MSDN confirma que los juegos de Xbox 360 pueden usar System Link (que es LAN) o servidores de juegos LIVE para juegos multijugador. Respuesta altamente desinformada. Abra el artículo de MSDN que vinculó y vaya a la sección "Requisitos de membresía de XNA Creators Club y Xbox LIVE" y lea el párrafo inicial.
Robinicks
Supuse que la pregunta era sobre un juego basado en Internet; desde mi experiencia, el enlace del sistema en LAN es un escenario muy raro ...
Nate
Esa es una suposición curiosa ya que el propósito de mi pregunta era pedir posibilidades, y su respuesta cerró un amplio campo de posibilidades abiertas en redes. Por suerte no te creí al instante e investigué por mí mismo. De lo contrario, muchos de nosotros nos quedaríamos creyendo que Xbox 360 prácticamente no tiene capacidades de red, aparte de la comunicación con servidores LIVE.
Robinicks el