Quali sono le possibilità di networking con XNA e Xbox 360?


11

So che XNA per Xbox 360 ha un accesso limitato alla rete, si dice che consenta la comunicazione attraverso un protocollo propiziativo Microsoft con altre unità Xbox 360.

Quali sono le possibilità di networking offerte da XNA? Quante unità Xbox 360 possono essere collegate alla stessa sottorete? 16 massimo? Qualunque Xbox può inviare dati a qualsiasi altra Xbox sulla sottorete come la comunicazione peer-to-peer? Una Xbox può comunicare con XNA anche su PC Windows? Ci sono altri dispositivi con cui puoi comunicare?

E i server di gioco? Puoi configurare il tuo server di gioco multiplayer e far connetterti Xbox e comunicare liberamente? In quale piattaforma scrivere il codice del server di gioco? C ++ su Unix? Quante unità Xbox possono connettersi a un server alla volta? Se non riesci a configurare il tuo server di gioco, esistono "hack" non ufficiali che consentono agli sviluppatori indipendenti di sviluppare ed eseguire un server di gioco?

Dato che non sono uno sviluppatore Xbox (cioè non possiedo un devkit da $ 10000) non posso usare librerie C ++ come Zoidcom .

Risposte:


10

Trasferimento dati su LAN o Internet

Esistono due tipi di giochi multiplayer online quando crei un gioco in rete con XNA Game Studio:

  1. Sessioni di gioco di collegamento di sistema (LAN)
  2. Sessioni LIVE. (Internet)

Tipi di sessione disponibili:

  1. Usa System Link per il gameplay della rete locale
  2. Accedi a Xbox LIVE e Giochi per Windows - Server LIVE
  3. Usa LIVE per connetterti ad altri computer su Internet mentre il gioco è in sviluppo

Il trasferimento di dati tra unità Xbox e PC connesse viene implementato utilizzando la classe LocalNetworkGamer (supportata su Xbox 360) e i dati vengono scritti utilizzando PacketWriter come segue:

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

}

Topologie di rete

Per un gioco con collegamento di sistema, puoi utilizzare una delle seguenti configurazioni hardware per testare un gioco in rete:

  • Un computer di sviluppo e una Xbox 360
    (che esegue un'istanza del gioco sul computer di sviluppo e una su Xbox 360). Il creatore ha bisogno di un abbonamento Xbox LIVE Silver e di un abbonamento al Creators Club per eseguire il codice su Xbox 360.

  • Un computer di sviluppo e un computer client
    (eseguendo un'istanza del gioco su ciascun computer). I creatori non possono eseguire contemporaneamente due giochi XNA Framework in rete sullo stesso computer. I creatori hanno bisogno di una seconda macchina per eseguire una seconda istanza di gioco a scopo di test. Non sono richiesti abbonamenti Xbox LIVE o abbonamenti Creators Club per questo scenario.

  • Un computer di sviluppo e due console Xbox 360
    (che eseguono un'istanza del gioco su ogni Xbox 360). Qui un creatore distribuisce ed esegue il debug del gioco su due Xbox 360. Il creatore ha bisogno di almeno due abbonamenti Xbox LIVE Silver e due abbonamenti Creators Club (una coppia per ogni Xbox 360) per questo scenario.

Trasferimento vocale su rete

I dati vocali vengono automaticamente trasmessi e riprodotti senza alcuno sforzo per il titolo. I titoli possono utilizzarlo per implementare la chat di gruppo o la voce di prossimità.

XNA Framework non espone l'accesso diretto al programma al flusso di dati vocali.

  • Hanno accesso vocale? - NetworkGamer.HasVoice
  • Stanno attualmente parlando? - NetworkGamer.IsTalking
  • Sono silenziati? - NetworkGamer.IsMutedByLocalUser

4

I giochi XNA su 360 utilizzano e sono tenuti a utilizzare Live, il che, come ricordo, significa che il numero massimo di utenti per "gioco" è 32 e non è possibile connettersi a nessun servizio esterno.


Aggiornamento 1: modulo post che conferma il numero massimo di 32 giocatori - http://forums.create.msdn.com/forums/t/27446.aspx


Aggiornamento 2: Va notato che XNA on Windows != (XNA on Xbox | XNA on Windows Phone)ciò significa che su Windows, XNA può fare qualsiasi altra applicazione .NET; su Xbox e WP7 XNA è limitato all'uso dei servizi di gioco Xbox Live.

Documentazione MSDN su Xbox Live e XNA - http://msdn.microsoft.com/en-us/library/bb975642.aspx


Nella stessa pagina del forum: "Per me, uso System.Net come base di costruzione per il mio componente di rete. Mi piace come sia abbastanza di basso livello che può fornirmi cose come" socket "," bind () ", ecc. Ma puoi anche usare qualsiasi altra libreria di rete,
dipende

1
La tua confusione è comprensibile, ma su Windows XNA puoi usare qualsiasi componente di rete perché su Windows XNA c'è solo il codice .NET; tuttavia, su Xbox sei costretto a utilizzare Live perché l'implementazione di .NET Framework di .NET Framework non contiene alcuna implementazione di rete tranne la rete di gioco Live.
Nate

2
XNA Games on 360 use and are required to use Live- Assolutamente sbagliato. MSDN stesso conferma che i giochi Xbox 360 possono utilizzare System Link (che è LAN) o server di gioco LIVE per il gioco multiplayer. Risposta altamente informata. Apri l'articolo MSDN che hai collegato e vai alla sezione "Requisiti per l'iscrizione a XNA Creators Club e Xbox LIVE" e leggi il paragrafo iniziale.
Robinicks,

Ho ipotizzato che la domanda riguardasse un gioco basato su Internet; poiché nella mia esperienza, il collegamento di sistema su LAN è uno scenario molto raro ...
Nate,

Questo è un presupposto curioso poiché lo scopo della mia domanda era quello di chiedere possibilità e la tua risposta ha chiuso un ampio campo di possibilità aperte nel networking. Fortunatamente non ti ho creduto all'istante e ho fatto ricerche per me stesso. Altrimenti, molti di noi rimarrebbero convinti che Xbox 360 non abbia praticamente alcuna capacità di rete oltre alle comunicazioni con i server LIVE.
Robinicks,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.