Jakie są możliwości sieciowe w XNA i Xbox 360?

11

Wiem, że XNA na konsolę Xbox 360 ma ograniczony dostęp do sieci, podobno zezwala się na komunikację tylko za pośrednictwem zgodnego protokołu Microsoft z innymi jednostkami Xbox 360.

Jakie możliwości sieci oferuje XNA? Ile jednostek Xbox 360 można podłączyć do tej samej podsieci? 16 maksymalnie? Czy dowolna konsola Xbox może wysyłać dane do dowolnej innej konsoli Xbox w podsieci, np. Komunikacja peer-to-peer? Czy Xbox może komunikować się z XNA również na komputerach z systemem Windows? Czy są jakieś inne urządzenia, z którymi możesz się komunikować?

A co z serwerami gier? Czy możesz skonfigurować własny serwer gier dla wielu graczy, aby Xbox łączył się z nim i swobodnie się komunikował? Na jakiej platformie napisałbyś kod serwera gry? C ++ na Uniksie? Ile jednostek Xbox może połączyć się z serwerem na raz? Jeśli nie możesz skonfigurować własnego serwera gry, czy istnieją nieoficjalne „hacki”, które umożliwiają niezależnym programistom opracowanie i uruchomienie serwera gry?

Ponieważ nie jestem programistą Xbox (tj. Nie posiadam zestawu Devkit o wartości 10000 USD), nie mogę używać bibliotek C ++, takich jak Zoidcom .

Robinicks
źródło

Odpowiedzi:

10

Przesyłanie danych przez sieć LAN lub Internet

Istnieją dwa rodzaje gier online dla wielu graczy, gdy tworzysz grę sieciową za pomocą XNA Game Studio:

  1. Systemowe sesje gier (LAN)
  2. Sesje NA ŻYWO. (Internet)

Dostępne typy sesji :

  1. Użyj System Link do gry w sieci lokalnej
  2. Zaloguj się do Xbox LIVE i Games for Windows - serwerów LIVE
  3. Użyj LIVE, aby połączyć się z innymi komputerami przez Internet, gdy gra jest w fazie rozwoju

Transfer danych między podłączonymi urządzeniami Xbox i PC odbywa się za pomocą klasy LocalNetworkGamer (obsługiwanej na Xbox 360), a dane zapisuje się za pomocą PacketWriter w następujący sposób:

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 sieci

W przypadku gry z połączeniem systemowym możesz użyć dowolnej z następujących konfiguracji sprzętowych do przetestowania gry w sieci:

  • Jeden komputer programistyczny i jeden Xbox 360
    (na jednym komputerze programistycznym i jeden na konsoli Xbox 360). Twórca potrzebuje jednego konta Xbox LIVE Silver i jednego członka Creators Club, aby uruchomić kod na konsoli Xbox 360.

  • Jeden komputer programistyczny i jeden komputer kliencki
    (na jednym komputerze działa jedna instancja gry). Twórcy nie mogą jednocześnie uruchamiać dwóch sieciowych gier XNA Framework na tym samym komputerze. Twórcy potrzebują drugiej maszyny do uruchomienia drugiej instancji gry do celów testowych. W tym scenariuszu nie są wymagane członkostwa w Xbox LIVE ani członkostwo w Klubie twórców.

  • Jeden komputer programistyczny i dwie konsole Xbox 360
    (z jedną instancją gry na każdej konsoli Xbox 360). Tutaj twórca wdraża i debuguje grę na dwóch konsolach Xbox 360. Twórca potrzebuje co najmniej dwóch członków Xbox LIVE Silver i dwóch członków Creators Club (jedna para na każdą konsolę Xbox 360) w tym scenariuszu.

Przesyłanie głosu przez sieć

Dane głosowe są automatycznie przesyłane i odtwarzane bez jakiegokolwiek wysiłku tytułowego. Tytuły mogą to wykorzystać do zaimplementowania czatu zespołowego lub głosu zbliżeniowego.

Struktura XNA nie udostępnia bezpośredniego dostępu programu do strumienia danych głosowych.

  • Czy mają dostęp głosowy? - NetworkGamer.HasVoice
  • Czy obecnie rozmawiają? - NetworkGamer.IsTalking
  • Czy są wyciszone? - NetworkGamer.IsMutedByLocalUser
Robinicks
źródło
4

Gry XNA do użytku 360 i są wymagane do użycia Live- co, jak pamiętam, oznacza, że ​​maksymalna liczba użytkowników na „grę” wynosi 32 i nie można w ogóle połączyć się z żadnymi usługami zewnętrznymi.


Aktualizacja 1: Formularz z potwierdzeniem maksymalnej liczby 32 graczy - http://forums.create.msdn.com/forums/t/27446.aspx


Aktualizacja 2: Należy zauważyć, XNA on Windows != (XNA on Xbox | XNA on Windows Phone)że to znaczy, że w systemie Windows XNA może robić wszystko, co potrafi dowolna aplikacja .NET; na Xbox i WP7 XNA jest ograniczone do korzystania z usług gier Xbox Live.

Dokumentacja MSDN na Xbox Live i XNA - http://msdn.microsoft.com/en-us/library/bb975642.aspx

Nate
źródło
Na tej samej stronie forum: „Dla mnie używam System.Net jako podstawy do budowania mojego komponentu sieciowego. Podoba mi się, jak wystarczający jest poziom niskiego poziomu, który może zapewnić mi takie rzeczy jak„ gniazdo ”,„ bind () ”, itp. Ale możesz także użyć dowolnej innej biblioteki sieciowej, zależy to od indywidualnych upodobań. :) ”
Robinicks
1
Twoje zamieszanie jest zrozumiałe, ale w systemie Windows XNA można użyć dowolnego komponentu sieciowego, ponieważ w systemie Windows XNA jest tylko kod .NET; jednak na konsoli Xbox musisz korzystać z usługi Live, ponieważ implementacja platformy .NET Framework przez konsolę Xbox nie zawiera żadnej implementacji sieci, z wyjątkiem sieci gier na żywo.
Nate
2
XNA Games on 360 use and are required to use Live- Zupełnie źle. Sam MSDN potwierdza, że ​​gry na konsolę Xbox 360 mogą korzystać z System Link (czyli LAN) lub serwerów gier LIVE do rozgrywki wieloosobowej. Bardzo niedoinformowana odpowiedź. Otwórz bardzo powiązany artykuł MSDN, przejdź do sekcji „Wymagania członkostwa XNA Creators Club i Xbox LIVE” i przeczytaj pierwszy akapit.
Robinicks,
Przyjąłem założenie, że pytanie dotyczy gry internetowej; ponieważ z mojego doświadczenia, połączenie systemowe w sieci LAN jest bardzo rzadkim scenariuszem ...
Nate
To dziwne założenie, ponieważ celem mojego pytania było zapytanie o możliwości, a twoja odpowiedź zamknęła całe szerokie pole otwartych możliwości w sieci. Na szczęście nie wierzyłem ci od razu i szukałem dla siebie. W przeciwnym razie wielu z nas byłoby przekonanych, że Xbox 360 nie ma praktycznie żadnych możliwości sieciowych oprócz komunikacji z serwerami LIVE.
Robinicks,