Как работают Xbox LIVE Parties
Xbox LIVE Parties - это новая функция, добавленная в New Xbox Experience, выпущенный в 2008 году. До этого Xbox LIVE был просто прекрасным местом, чтобы вы могли поиграть в многопользовательские игры со своими друзьями. Однако, если вы вдруг решали переключиться на какой-либо другой вид развлечений, на этом возможности службы LIVE и заканчивались. Как только вы покидаете вашу многопользовательскую сессию, у вас пропадает голосовая связь с другими ее участниками. Это означало, что в этом случае всем необходимо принять решение, какую игру запустить и кто будет организатором новой игровой сессии до того, как вы закончите предыдущую игру. После этого вам приходилось какое-то время сидеть и ждать, пока все сменят игру и вам придет приглашение на вступление в новую игровую сессию. Наконец, когда все подключатся к одной сессии, будет восстановлена голосовая связь.
При разработке Xbox LIVE Parties основной целью нашей команды было сохранение связи между людьми вне зависимости от того, что они делают в Xbox LIVE. Это означало для нас следование следующим принципам:
- Обеспечить поддержку голосового чата между игроками в каждый момент времени
- Сделать процесс перехода от игры к игре с друзьями настолько плавным, насколько это возможно
- Это должно работать для всех игр Xbox 360
- Каждый может подключиться к общению, даже если он или она взаимодействуют с другим видом контента службы Xbox LIVE
Ресурсы
В общем главной сложностью при написании системного программного обеспечения на Xbox 360 является необходимость придерживаться строго ограничения на количество ресурсов, потребляемых системой. Каждый раз, когда система использует CPU, GPU или сеть, они становятся недоступными для игр. Чтобы максимально упростить задачу для создателей игр, системное программное обеспечение Xbox 360 резервирует для своей работы лишь небольшой объем ресурсов. Эти системные ресурсы используют многие приложения и службы, включая:
- Xbox Guide
- Фоновый музыкальный проигрыватель
- Друзья и сообщения
- Windows Live Messenger
- Фоновые загрузки
- Xbox LIVE Parties
Так как в системе выполняется так много различных приложений, мы потратили много времени на оптимизацию уровня использования ресурсов. Каждый бит производительности, который мы можем выжать, помогает нам добавлять новые функции!
Parties - это игра!
Одним из наших походов к пониманию того, чем являются Xbox LIVE Parties - представление их в виде второй многопользовательской игры, запущенной одновременно с традиционной игрой. Поначалу это может показаться странным, но оказывается, что "parties" имеют много общего с традиционными многопользовательскими играми. Они также используют некое подобие игровых данных. Для более традиционных игр, таких как шахматы, игровые данные будут состоять из списка, содержащего информацию о том, на какой клетке игровой доски стоит та или иная фигура. В Forza 3 игровые данные состоят из информации о скорости каждой машины, их местоположении и т.д. Для Xbox LIVE Parties мы храним более простой набор данных, включая список членов команды, действующие настройки, определяющие, например, кто из друзей может подключиться к команде без приглашения, и информацию о текущей активности каждого участника команды.
Еще одной общей чертой Xbox LIVE Parties и игр является система приглашений. Вы можете подключиться к игровой сессии вашего друга либо с помощью пригласительного сообщения, либо выбрав пункт "Join Game In Progress" на его карточке игрока. Такая же функция доступна и для Xbox LIVE Parties. Внутренняя реализация процессов обработки приглашений для игр и для команд в Xbox LIVE во много похожа. Часть приглашения команды является информация, необходимая для вам для подключения к консоли вашего друга. Когда вы принимаете его приглашение в команду, ваша консоль использует эту информацию, чтобы попытаться установить сетевое подключение к его консоли.
Это приводит нас к еще одной общей черте двух технологий. И команды, и традиционные многопользовательские игры запускаются на основе сетевой библиотеки - коллекции кода, который позволяет пересылать данные между консолями. Если у меня запущена игра и я участвую в LIVE Party в одно и то же время, моя консоль поддерживает два набора сетевых подключений. Один набор предназначен для игры и позволяет пересылать данные другим участникам моей игры. Второй набор предназначен для команд и позволяет передавать голосовые данные другим участникам команды. В каждый момент времени моя консоль посылает и принимает данные как для игры, так и для команды.
Распределение голоса
Сетевой трафик для вашей игры и для вашей команды связан с одним из видом ограниченных ресурсов консоли: пропускная способность сети. Одной из самых серьезных оптимизаций, которые мы провели над кодом, касается ограничения объема исходящей пропускной способности, используемой Xbox LIVE Parties. Исходящая пропускная способность - это данные, которые посылаются от вашей консоли (в противоположность входящей пропускной способности, когда данные посылаются на вашу консоль). В большинстве игровых сценариев чаще не хватает исходящей, а не входящей пропускной способности. Когда вы говорите в свой микрофон, система должна отсылать ваши голосовые данные на семь других консолей. Это означает, что разговор требует для себя огромных ресурсов исходящей пропускной способности - одни и те же данные посылаются семь раз, по разу на каждую удаленную консоль.
Чтобы уменьшить подобный расход пропускной способности, система использует один трюк по распределению исходящей пропускной способности. Если в моей команде есть семь участников, моя консоль отсылает данные только трем их них. Это означает, что использование исходящей пропускной способности уменьшается примерно на 60%. Когда эти три консоли получают мои голосовые данные, они действуют как "ретрансляторы". Это означает, что помимо воспроизведения моего голоса, они могут также посылать его на оставшиеся консоли. Благодаря этому алгоритму каждая консоль посылает данные максимум для трех консолей. Это ограничивает общей объем отосланных данных и распределяет пропускную способность между участниками команды.
Тестовая лаборатория
Сценарии сетевого взаимодействия чрезвычайно сложны, потому команда разработчиков уделила очень много времени на проверку качества функционирования Xbox LIVE Parties. Одним из способов такой проверки нашей функции является пользовательский интерфейс Automation. Он позволяет ПК посылать команды Xbox 360 SDK с указаниями нажать определенную клавишу геймпада или запрашивая состояние консоли. Во время выполнения тестов кажется, что у консоли появился собственный разум. Программное обеспечение управляет множеством SDK и запрограммировано на создание команды. Очень интересно смотреть, как восемь SDK автоматически открывают Xbox Guide, посылают друг другу приглашения и затем посылают друг другу фальшивые голосовые сообщения.
Как только у нас появился этот набор тестов Automation, мы смогли использовать его для реализации нескольких весьма сложных сценариев. В нашей корпоративной сети консоли имели очень быстрое сетевое подключение, в котором не терялись пакеты. В реальном мире у большинства людей есть домашнее подключение к интернету, которое немного медленнее, чем корпоративная сеть Microsoft. Нам также нужно учитывать наличие таких вещей, как NAT, потерю сетевых пакетов и задержку в передаче данных между людьми, живущими на противоположных концах планеты. Чтобы протестировать эти сценарии, мы установили инструмент симуляции сети, которые создает эти различные условия и прогоняет систему по тестам Automation. Вы даже проводим тесты для таких экстремальных условий, как сетевое подключение с модемной скоростью.
Заключение
Все эта усилия направлены на то, чтобы упростить процесс связи с вашими друзьями, и на то, чтобы вы прекрасно проводили время в Xbox LIVE. У нас была возможность поработать с такими прекрасными партнерами, как Zune, Netflix, Sky и Canal Plus, чтобы добавить в эти приложения поддержку команд и настроить социальные функций нашей системы. Xbox LIVE Parties работает со всеми вашими любимыми играми Xbox 360 как для одиночной, так и для многопользовательской игры. Мы надеемся, что Xbox LIVE Parties улучшит ваш опыт взаимодействия с Xbox LIVE, и мы постараемся в будущем представить новые прекрасные функции для общения с другими пользователями.
Источник:
Перевод: Dazila
По теме
- Как человек стал контроллером (ч.2)
- Как человек стал контроллером (ч.1)
- NAT и Xbox Live
- Новые элементы для главного меню Xbox 360
- Оставаться защищенным в Xbox Live
- Улучшение безопасности консоли
- Avatar Marketplace: открыт в режиме 24/7
- Как разработчики игр могут настраивать Xbox Live
- Достижение разблокировано
- Технология аватаров Xbox LIVE