Quelles sont les possibilités de mise en réseau avec XNA et Xbox 360?

11

Je sais que XNA pour Xbox 360 a un accès limité au réseau, selon la rumeur, pour autoriser uniquement la communication via un protocole Microsoft propitiatoire avec d'autres unités Xbox 360.

Quelles sont les possibilités de mise en réseau offertes par XNA? Combien d'unités Xbox 360 peuvent être connectées au même sous-réseau? 16 maximum? Une Xbox peut-elle envoyer des données à n'importe quelle autre Xbox sur le sous-réseau, comme la communication poste à poste? Une Xbox peut-elle également communiquer avec XNA sur des PC Windows? Y a-t-il d'autres appareils avec lesquels vous pouvez communiquer?

Et qu'en est-il des serveurs de jeux? Pouvez-vous configurer votre propre serveur de jeu multijoueur et faire en sorte que la Xbox s'y connecte et communique librement? Sur quelle plateforme écririez-vous le code du serveur de jeu? C ++ sur Unix? Combien d'unités Xbox peuvent se connecter à un serveur à la fois? Si vous ne pouvez pas configurer votre propre serveur de jeux, y a-t-il des «hacks» non officiels qui permettent aux développeurs indépendants de développer et d'exécuter un serveur de jeux?

Comme je ne suis pas un développeur Xbox (c'est-à-dire que je ne possède pas de kit de développement de 10000 $), je ne peux pas utiliser les bibliothèques C ++ comme Zoidcom .

Robinicks
la source

Réponses:

10

Transfert de données sur LAN ou Internet

Il existe deux types de jeux multijoueurs en ligne disponibles lorsque vous créez un jeu en réseau avec XNA Game Studio:

  1. Sessions de jeu de liaison système (LAN)
  2. Séances EN DIRECT. (L'Internet)

Types de sessions disponibles:

  1. Utiliser le lien système pour le gameplay du réseau local
  2. Connectez-vous à Xbox LIVE et à Games for Windows - Serveurs LIVE
  3. Utilisez LIVE pour vous connecter à d'autres machines via Internet pendant le développement du jeu

Le transfert de données entre les unités Xbox et PC connectées est implémenté à l'aide de la classe LocalNetworkGamer (pris en charge sur Xbox 360) et les données sont écrites à l'aide d'un PacketWriter comme suit:

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

}

Topologies de réseau

Pour un jeu de liaison système, vous pouvez utiliser l'une des configurations matérielles suivantes pour tester un jeu en réseau:

  • Un ordinateur de développement et une Xbox 360
    (exécutant une instance du jeu sur l'ordinateur de développement et une sur la Xbox 360). Le créateur a besoin d'un abonnement Xbox LIVE Silver et d'un abonnement Creators Club pour exécuter le code sur la Xbox 360.

  • Un ordinateur de développement et un ordinateur client
    (exécutant une instance du jeu sur chaque ordinateur). Les créateurs ne peuvent pas exécuter deux jeux XNA Framework en réseau en même temps sur le même ordinateur. Les créateurs ont besoin d'une deuxième machine pour exécuter une deuxième instance de jeu à des fins de test. Aucune adhésion Xbox LIVE ou adhésion au Creators Club n'est requise pour ce scénario.

  • Un ordinateur de développement et deux consoles Xbox 360
    (exécutant une instance du jeu sur chaque Xbox 360). Ici, un créateur déploie et débogue le jeu sur deux Xbox 360. Le créateur a besoin d'au moins deux abonnements Xbox LIVE Silver et deux abonnements Creators Club (une paire pour chaque Xbox 360) pour ce scénario.

Transfert vocal sur réseau

Les données vocales sont automatiquement transmises et rejouées sans aucun effort de titre. Les titres peuvent l'utiliser pour implémenter le chat d'équipe ou la voix de proximité.

XNA Framework n'expose pas l'accès direct au programme au flux de données vocales.

  • Ont-ils un accès vocal? - NetworkGamer.HasVoice
  • Parlent-ils actuellement? - NetworkGamer.IsTalking
  • Sont-ils muets? - NetworkGamer.IsMutedByLocalUser
Robinicks
la source
4

Les jeux XNA sur 360 utilisent et doivent être utilisés Live- ce qui, si je me souviens bien, signifie que le nombre maximum d'utilisateurs par "jeu" est de 32, et vous ne pouvez pas vous connecter à des services externes.


Mise à jour 1: formulaire post confirmant le maximum de 32 joueurs - http://forums.create.msdn.com/forums/t/27446.aspx


Mise à jour 2: Il convient de noter que XNA on Windows != (XNA on Xbox | XNA on Windows Phone)c'est-à-dire que sous Windows, XNA peut faire tout ce que n'importe quelle autre application .NET peut faire; sur Xbox et WP7 XNA est limité à l'utilisation des services de jeux Xbox Live.

Documentation MSDN sur Xbox Live et XNA - http://msdn.microsoft.com/en-us/library/bb975642.aspx

Nate
la source
Sur la même page de forum: "Pour moi, j'utilise System.Net comme base de construction pour mon composant réseau. J'aime à quel point son niveau bas peut me fournir des choses comme" socket "," bind () ", etc. Mais vous pouvez également utiliser n'importe quelle autre bibliothèque réseau, selon les goûts de
chacun
1
Votre confusion est compréhensible, mais sous Windows XNA, vous pouvez utiliser n'importe quel composant réseau car sous Windows XNA, il n'y a que du code .NET; cependant, sur Xbox, vous êtes obligé d'utiliser Live car l'implémentation Xbox du .NET Framework ne contient aucune implémentation réseau à l'exception du réseau de jeux Live.
Nate
2
XNA Games on 360 use and are required to use Live- Absolument faux. MSDN lui-même confirme que les jeux Xbox 360 peuvent utiliser System Link (qui est LAN) ou des serveurs de jeu LIVE pour un jeu multijoueur. Réponse très mal informée. Ouvrez l'article MSDN que vous avez lié et accédez à la section «Conditions d'adhésion au Club XNA Creators et Xbox LIVE» et lisez le paragraphe initial.
Robinicks
J'ai supposé que la question concernait un jeu sur Internet; car d'après mon expérience, la liaison système sur LAN est un scénario très rare ...
Nate
C'est une hypothèse curieuse puisque le but de ma question était de demander des possibilités, et votre réponse a fermé un large éventail de possibilités ouvertes dans le réseautage. Heureusement, je ne vous ai pas cru instantanément et j'ai fait des recherches par moi-même. Sinon, nous serions nombreux à croire que la Xbox 360 n'a pratiquement aucune capacité de mise en réseau en dehors de la communication avec les serveurs LIVE.
Robinicks