Які можливості мереж для XNA та Xbox 360?


11

Я знаю, що XNA для Xbox 360 має обмежений доступ до мереж, за чутками, що дозволяють спілкуватися лише через власний протокол Microsoft з іншими одиницями Xbox 360.

Які можливості мереж пропонує XNA? Скільки одиниць Xbox 360 можна підключити до однієї підмережі? 16 максимум? Чи може будь-який Xbox надсилати дані до будь-якого іншого Xbox у підмережі, наприклад, одноранговий зв’язок? Чи може Xbox спілкуватися з XNA і на ПК з Windows? Чи є інші пристрої, з якими можна спілкуватися?

А як щодо ігрових серверів? Чи можете ви налаштувати власний ігровий сервер для кількох гравців, а Xbox підключитися до нього та вільно спілкуватися? На якій платформі ви б написали код ігрового сервера? C ++ на Unix? Скільки одиниць Xbox можна підключити до сервера одночасно? Якщо ви не можете налаштувати власний ігровий сервер, чи існують неофіційні «хаки», які дозволяють інді-розробникам розробляти та запускати ігровий сервер?

Оскільки я не розробник Xbox (тобто я не маю девкіт $ ​​10000), я не можу використовувати бібліотеки C ++, такі як Zoidcom .

Відповіді:


10

Передача даних через локальну мережу або Інтернет

При створенні мережевої гри за допомогою XNA Game Studio доступні два типи онлайн-ігри для кількох гравців :

  1. Системні ігрові сеанси (LAN)
  2. LIVE сеанси. (Інтернет)

Доступні типи сеансів :

  1. Використовуйте системне посилання для гри в локальну мережу
  2. Увійдіть у Xbox LIVE та ігри для Windows - LIVE-сервери
  3. Використовуйте LIVE для підключення до інших машин через Інтернет, поки гра розвивається

Передача даних між підключеними підрозділами Xbox та ПК здійснюється за допомогою класу LocalNetworkGamer (підтримується на Xbox 360), а дані записуються за допомогою PacketWriter наступним чином:

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

}

Мережеві топології

Для гри в системному посиланні ви можете використовувати будь-яку з наведених нижче конфігурацій обладнання для тестування мережевої гри:

  • Один розробник і один Xbox 360
    (працює один екземпляр гри на розробницькому комп'ютері і один на Xbox 360). Творцю потрібен один Xbox LIVE Silver та одне членство в клубі Creators, щоб запустити код на Xbox 360.

  • Один розробник та один клієнтський комп'ютер
    (на кожному комп'ютері працює один екземпляр гри). Творці не можуть одночасно запускати дві мережеві ігри XNA Framework на одному комп’ютері. Творцям потрібна друга машина для запуску другого ігрового екземпляра з метою тестування. Для цього сценарію не потрібно членства в Xbox LIVE або членства в клубі Creators.

  • Один комп'ютер розробки та дві консолі Xbox 360
    (працює один екземпляр гри на кожному Xbox 360). Тут творець розгортає та налагоджує гру на двох Xbox 360. Творцю потрібні принаймні два членства Xbox LIVE Silver та два членства в клубі Creators (одна пара для кожного Xbox 360) для цього сценарію.

Передача голосу по мережі

Голосові дані автоматично передаються та відтворюються без будь-яких зусиль із заголовком. Заголовки можуть використовувати це для реалізації командного чату чи голосу близькості.

XNA Framework не піддається прямому доступу програми до потоку голосових даних.

  • Чи мають вони голосовий доступ? - NetworkGamer.HasVoice
  • Вони зараз розмовляють? - NetworkGamer.IsTalking
  • Вони відключені? - NetworkGamer.IsMutedByLocalUser

4

Ігри XNA на 360, які потрібно використовувати, Liveі, як я пам'ятаю, означає, що максимум користувачів на "гру" становить 32, і ви взагалі не можете підключатися до будь-яких зовнішніх служб.


Оновлення 1: Повідомлення форми, що підтверджує максимум 32 гравця - http://forums.create.msdn.com/forums/t/27446.aspx


Оновлення 2: Слід зазначити, XNA on Windows != (XNA on Xbox | XNA on Windows Phone)що це означає, що у Windows XNA може робити все, що може зробити будь-яке інше .NET-додаток; на Xbox та WP7 XNA обмежується використанням Xbox Live Gaming Services.

Документація MSDN на Xbox Live та XNA - http://msdn.microsoft.com/en-us/library/bb975642.aspx


На тій же сторінці форуму: "Для мене я використовую System.Net як основу для побудови мого мережевого компонента. Мені подобається, як достатньо низького рівня, який може забезпечити мені такі речі, як" socket "," bind () ", і т. д. Але також можна використовувати будь-яку іншу мережеву бібліотеку, це залежить від індивідуальних смаків. :) "
Robinicks

1
Ваша плутанина зрозуміла, але в Windows XNA можна використовувати будь-який мережевий компонент, оскільки для Windows XNA - це просто .NET-код; однак у Xbox ви змушені використовувати Live, оскільки реалізація Xbox .NET Framework не містить жодної мережевої реалізації, за винятком ігрової мережі Live.
Нейт

2
XNA Games on 360 use and are required to use Live- Абсолютно неправильно. Сама MSDN підтверджує, що ігри Xbox 360 можуть використовувати System Link (це локальна мережа) або LIVE ігрові сервери для багатокористувацького геймплея. Вкрай неінформована відповідь. Відкрийте ту саму статтю MSDN, яку ви пов’язали, і перейдіть до розділу «Клуб творців XNA та членства в Xbox LIVE» та прочитайте початковий абзац.
Робінікс

Я зробив припущення, що питання стосується гри на базі Інтернету; оскільки з мого досвіду, системне посилання в локальній мережі - дуже рідкісний сценарій ...
Нейт

Це цікаве припущення, оскільки метою мого запитання було просити можливості, а ваша відповідь закрила ціле широке поле відкритих можливостей в роботі в мережі. На щастя, я не повірив тобі враз і досліджував на собі. Інакше багато з нас залишиться вірити, що Xbox 360 практично не має мережевих можливостей, крім спілкування з LIVE-серверами.
Робінікс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.