Каковы сетевые возможности с 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 DevKit а) Я не могу использовать C ++ библиотеки как Zoidcom .

Robinicks
источник

Ответы:

10

Передача данных через локальную сеть или Интернет

Существует два типа многопользовательских онлайн-игр при создании сетевой игры с XNA Game Studio:

  1. Системные ссылки игровых сессий (LAN)
  2. ЖИВЫЕ сессий. (Интернет)

Типы сессий доступны:

  1. Используйте System Link для локальной игры
  2. Войдите в Xbox LIVE и Игры для Windows - LIVE Servers
  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 и одно членство в Клубе авторов, чтобы запустить код на Xbox 360.

  • Один компьютер разработчика и один клиентский компьютер
    (один экземпляр игры на каждом компьютере). Создатели не могут запускать две сетевые игры XNA Framework одновременно на одном компьютере. Создателям нужна вторая машина для запуска второго игрового экземпляра в целях тестирования. Для этого сценария не требуется членство в Xbox LIVE или членство в Клубе создателей.

  • Один компьютер для разработки и две консоли Xbox 360
    (по одному экземпляру игры на каждом Xbox 360). Здесь создатель развертывает и отлаживает игру на двух Xbox 360. Для этого сценария создателю необходимо как минимум два членства в Xbox LIVE Silver и два членства в Клубе создателей (по одной паре на каждый Xbox 360).

Передача голоса по сети

Голосовые данные автоматически передаются и воспроизводятся без каких-либо усилий по названию. Названия могут использовать это, чтобы реализовать командный чат или голос близости.

Платформа XNA Framework не предоставляет прямого доступа программы к потоку голосовых данных.

  • Есть ли у них голосовой доступ? - NetworkGamer.HasVoice
  • Они сейчас разговаривают? - NetworkGamer.IsTalking
  • Они приглушены? - NetworkGamer.IsMutedByLocalUser
Robinicks
источник
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

Nate
источник
На той же странице форума: «Для меня я использую System.Net в качестве основы для своего сетевого компонента. Мне нравится, как достаточно низкоуровневого уровня, который может обеспечить меня такими вещами, как« socket »,« bind () », и т. д. Но также вы можете использовать любую другую сетевую библиотеку, это зависит от индивидуальных
предпочтений
1
Ваша путаница понятна, но в Windows XNA можно использовать любой сетевой компонент, потому что в Windows XNA это просто код .NET; однако в Xbox вы вынуждены использовать Live, потому что реализация .NET Framework для Xbox не содержит никакой сетевой реализации, кроме игровой сети Live.
Nate
2
XNA Games on 360 use and are required to use Live- Абсолютно неправильно. Сам MSDN подтверждает, что игры Xbox 360 могут использовать System Link (т.е. LAN) или LIVE игровые серверы для многопользовательского игрового процесса. Сильно неосведомленный ответ. Откройте саму статью MSDN, которую вы связали, и перейдите в раздел «Требования к членству в XNA Creators Club и Xbox LIVE» и прочитайте начальный абзац.
Robinicks
Я сделал предположение, что вопрос касался интернет-игры; так как по моему опыту, системное соединение в локальной сети является очень редким сценарием ...
Nate
Это странное предположение, поскольку цель моего вопроса состояла в том, чтобы спросить о возможностях, а ваш ответ закрыл целую широкую область открытых возможностей в области сетевых технологий. К счастью, я не поверил тебе сразу и занялся исследованиями для себя. В противном случае многие из нас остались бы не верить , что Xbox 360 практически не сетевые возможности , кроме комм с РЕАЛЬНЫМИ серверами.
Robinicks