XNA ve Xbox 360 ile ağ oluşturma olanakları nelerdir?


11

Xbox 360 için XNA'nın ağa sınırlı erişimi olduğunu biliyorum, sadece Microsoft Xbox protokolleri ile propitiatory Microsoft protokolü üzerinden iletişime izin verdiği söyleniyor.

XNA'nın sunduğu ağ oluşturma olanakları nelerdir? Aynı alt ağa kaç Xbox 360 ünitesi bağlanabilir? 16 maksimum? Herhangi bir Xbox, alt ağdaki Eşler Arası iletişim gibi başka bir Xbox'a veri gönderebilir mi? Xbox, Windows PC'lerde de XNA ile iletişim kurabilir mi? İletişim kurabileceğiniz başka cihazlar var mı?

Peki ya oyun sunucuları? Kendi çok oyunculu oyun sunucunuzu kurabilir ve Xbox'ların ona bağlanmasını ve özgürce iletişim kurmasını sağlayabilir misiniz? Oyun sunucusu kodunu hangi platformda yazardınız? Unix üzerinde C ++? Bir sunucuya aynı anda kaç Xbox birimi bağlanabilir? Kendi oyun sunucunuzu kuramazsanız, bağımsız geliştiricilerin bir oyun sunucusu geliştirip çalıştırmasını sağlayan resmi olmayan 'hack'ler' var mı?

Xbox geliştiricisi olmadığım için (yani 10000 dolarlık bir devkitim yok) Zoidcom gibi C ++ kitaplıklarını kullanamıyorum .

Yanıtlar:


10

LAN veya İnternet üzerinden veri aktarımı

XNA Game Studio ile ağa bağlı bir oyun oluşturduğunuzda iki tür çevrimiçi çok oyunculu oyun vardır:

  1. Sistem bağlantısı oyun oturumları (LAN)
  2. CANLI oturumlar. (İnternet)

Mevcut oturum türleri :

  1. Yerel Alan Ağı oyunu için Sistem Bağlantısını kullanma
  2. Xbox LIVE ve Windows için Oyunlar - LIVE Sunucuları'nda oturum açın
  3. Oyun geliştirilirken İnternet üzerinden diğer makinelere bağlanmak için LIVE'ı kullanın

Bağlı Xbox ve PC birimleri arasındaki veri aktarımı LocalNetworkGamer sınıfı (Xbox 360'ta desteklenir) kullanılarak gerçekleştirilir ve veriler bir PacketWriter kullanılarak aşağıdaki gibi yazılır:

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

}

Ağ topolojileri

Bir sistem bağlantısı oyunu için, ağa bağlı bir oyunu test etmek için aşağıdaki donanım yapılandırmalarından herhangi birini kullanabilirsiniz :

  • Bir geliştirme bilgisayarı ve bir Xbox 360
    (oyunun bir örneğini geliştirme bilgisayarında, diğeri Xbox 360'ta çalışır). İçerik oluşturucunun Xbox 360'ta kod çalıştırmak için bir Xbox LIVE Silver ve bir Creators Club üyeliğine ihtiyacı vardır.

  • Bir geliştirme bilgisayarı ve bir istemci bilgisayar
    (her bilgisayarda oyunun bir örneğini çalıştırır). İçerik oluşturucular aynı bilgisayarda iki ağa bağlı XNA Framework oyununu aynı anda çalıştıramaz. İçerik oluşturucuların test amacıyla ikinci bir oyun örneği çalıştırmak için ikinci bir makineye ihtiyaçları vardır. Bu senaryo için Xbox LIVE üyeliği veya Creators Club üyeliği gerekmez.

  • Bir geliştirme bilgisayarı ve iki Xbox 360 konsolu
    (her Xbox 360'ta oyunun bir örneğini çalıştırır). Burada bir içerik oluşturucu oyunu iki Xbox 360'ta dağıtır ve hatalarını ayıklar. Bu senaryo için içerik oluşturucunun en az iki Xbox LIVE Silver üyeliğine ve iki Creators Club üyeliğine (her Xbox 360 için bir çift) ihtiyacı vardır.

Ağ üzerinden ses aktarımı

Ses verileri , herhangi bir başlık çabası olmadan otomatik olarak iletilir ve yeniden çalınır. Başlıklar bunu ekip sohbeti veya yakınlık sesi uygulamak için kullanabilir.

XNA Framework, ses veri akışına doğrudan program erişimi göstermez.

  • Ses erişimi var mı? - NetworkGamer.HasVoice
  • Şu anda konuşuyorlar mı? - NetworkGamer.IsTalking
  • Susturuldu mu? - NetworkGamer.IsMutedByLocalUser

4

360 üzerinde XNA Oyunları kullanmak ve kullanmak gerekir Live- hatırladığım gibi "oyun" başına maksimum kullanıcı 32 ve hiçbir dış hizmetlere bağlanamaz anlamına gelir.


Güncelleme 1: Maksimum 32 oyuncuyu onaylayan form yayını - http://forums.create.msdn.com/forums/t/27446.aspx


Güncelleme 2: unutulmamalıdır XNA on Windows != (XNA on Xbox | XNA on Windows Phone)ki XNA başka NET uygulama yapabileceği her şeyi yapabilir Windows üzerinde yani; Xbox ve WP7'de XNA, Xbox Live Oyun Hizmetlerini kullanmakla sınırlıdır.

Xbox Live ve XNA'da MSDN Belgeleri - http://msdn.microsoft.com/en-us/library/bb975642.aspx


Aynı forum sayfasında: "Benim için, ağ bileşenim için yapı tabanı olarak System.Net'i kullanıyorum. Bana" soket "," bind () "gibi şeyler sağlayabilecek kadar düşük seviyeli olması gibi, Ama aynı zamanda başka herhangi bir ağ kütüphanesini kullanabilirsiniz, bu bireyin zevkine kalmış. :) "
Robinicks

1
Karışıklıklarınız anlaşılabilir, ancak Windows XNA'da sadece ağ kodu olduğu için Windows XNA'da herhangi bir ağ bileşenini kullanabilirsiniz; ancak Xbox'ta Xbox'ı .NET Framework uygulamasında Live oyun ağı dışında herhangi bir ağ uygulaması bulunmadığından, Live'da Live kullanmak zorunda kalırsınız.
Nate

2
XNA Games on 360 use and are required to use Live- Kesinlikle yanlış. MSDN, Xbox 360 oyunlarının çok oyunculu oyun için System Link (LAN) veya LIVE oyun sunucularını kullanabileceğini onaylar. Çok bilgisiz cevap. Bağladığınız tam MSDN makalesini açın ve "XNA Creators Club ve Xbox LIVE Üyelik Gereksinimleri" bölümüne gidin ve ilk paragrafı okuyun.
Robinicks

Sorunun internet tabanlı bir oyunla ilgili olduğunu varsaydım; deneyimlerime göre, LAN üzerindeki sistem bağlantısı çok nadir bir senaryodur ...
Nate

Sorumun amacı olasılıkları sormak olduğu için bu ilginç bir varsayımdı ve cevabınız ağ oluşturmada geniş bir açık olasılık alanını kapattı. Neyse ki sana anında inanmadım ve kendim için araştırma yaptım. Aksi takdirde, çoğumuz Xbox 360'ın LIVE sunucuları ile iletişim dışında neredeyse hiçbir ağ yeteneğine sahip olmadığına inanıyoruz.
Robinicks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.