30 окт. 2017 г.
Производительность в «Королевской битве»

Мы старательно улучшаем каждый аспект игры, но должны признать, что немного отстали в работе над производительностью, и здесь нам ещё многое предстоит сделать.
Проблемы с производительностью, которые больше всего беспокоят игроков
Клиент
Сервер
Сеть
«Эффект резинки» возникает, если данные на сторонах сервера и клиента не совпадают и подвергаются коррекции. Из-за этого персонажи перемещаются рывками (как натянутые и отпущенные резинки— отсюда и название), взаимодействие с дверьми выглядит странно ит.п.
Этот эффект появляется по разным причинам, и не все из них можно устранить. Например, подтормаживать могут наши серверы — из-за плохо оптимизированного кода, других серверов, которые запущены на том же оборудовании и создают помехи, или технических проблем с аппаратурой или операционной системой, не приводящих к отказу оборудования, но снижающих производительность (так называемые «серые отказы»).
Качество связи с нашими центрами обработки данных в первую очередь зависит от выбранного региона и времени отклика сервера (пинга). Следует учесть, что пинг зависит от маршрута, которым направляются ваши пакеты. Дополнительную задержку и потерю пакетов может вызвать использование Wi-Fi.
Основные наши задачи при мониторинге
Задачи, стоящие перед разработчиками
А вот что можете сделать вы
Убедитесь, что у вас установлены актуальные драйверы видеокарты. Если они устарели, обновите их до актуальной версии.
Сейчас мы используем серверы в центрах обработки данных Amazon Web Services по всему миру. Вы можете зайти на сайт http://www.cloudping.info/ и узнать свой пинг до этих серверов.
У Riot Games есть сайт www.lagreport.com. Это отличный источник информации об интернет-провайдерах. Впрочем, эта информация может быть менее полезна для игры в Fortnite.
Если вы пользуетесь Wi-Fi и можете перейти на кабельное подключение, лучше так и сделать. Это уменьшит задержку и потерю пакетов, а заодно сделает более равномерными промежутки между ними.
На соединение могут влиять и телевизионные настройки. В сети есть различные руководства о том, как настроить необходимые параметры. Вот вам один пример.
Пользователи ПК могут почитать статьи вроде этой и узнать, не работают ли у вас ненужные фоновые программы, которые оттягивают на себя ресурсы.
Проблемы с производительностью, которые больше всего беспокоят игроков
Клиент
- Низкая частота кадров-> возросшая задержка ввода, большой промежуток между кадрами.
- Задержка отображения-> возросшая задержка ввода.
- Рывки (неестественно долгие кадры)-> замирание картинки с последующим ускорением.
- Нестабильная частота кадров-> трудности с прицеливанием.
Сервер
- Медленное обновление данных о соединении, низкая частоты кадров-> увеличенный пинг.
- Рывки (неестественно долгие кадры)-> «эффект резинки».
Сеть
- Потеря пакетов-> «эффект резинки».
- Перегруженный канал связи-> «эффект резинки».
- Высокий пинг-> «эффект резинки».
- Переизбыток пакетов (особенно при игре через Wi-Fi)-> «эффект резинки».
«Эффект резинки» возникает, если данные на сторонах сервера и клиента не совпадают и подвергаются коррекции. Из-за этого персонажи перемещаются рывками (как натянутые и отпущенные резинки— отсюда и название), взаимодействие с дверьми выглядит странно ит.п.
Этот эффект появляется по разным причинам, и не все из них можно устранить. Например, подтормаживать могут наши серверы — из-за плохо оптимизированного кода, других серверов, которые запущены на том же оборудовании и создают помехи, или технических проблем с аппаратурой или операционной системой, не приводящих к отказу оборудования, но снижающих производительность (так называемые «серые отказы»).
Качество связи с нашими центрами обработки данных в первую очередь зависит от выбранного региона и времени отклика сервера (пинга). Следует учесть, что пинг зависит от маршрута, которым направляются ваши пакеты. Дополнительную задержку и потерю пакетов может вызвать использование Wi-Fi.
Основные наши задачи при мониторинге
- Отслеживать работу клиента с разными видеокартами; разбивать данные на сегменты в зависимости от параметров графики. Так мы выясняем, какое воздействие оказывают вводимые изменения.
- Отслеживать рывки на стороне клиента и анализировать, насколько сильно они сказываются на игровом процессе.
- Отслеживать сетевые пакеты, принимаемые клиентом от сервера и наоборот (а также время между передачами).
- Отслеживать производительность сервера и оценивать количество потерянных кадров. Первостепенная цель— устойчивая производительность в 20Гц.
- Отслеживать производительность серверов для каждой виртуальной машины, чтобы выявить и отключить ВМ, которые работают плохо.
- Отслеживать пинг и потерю пакетов для каждого региона и провайдера, чтобы оперативно реагировать на ухудшение работы.
- Отслеживать ситуации, в которых сочетание нескольких факторов приводит к каскадному ухудшению обслуживания. Пример такой ситуации: ограниченная полоса пропускания вкупе с потерей пакетов заставляет наше оборудование отправлять ещё больше данных— это дополнительно нагружает канал и ухудшает положение.
Задачи, стоящие перед разработчиками
- Улучшить производительность на ПК с минимальной рекомендуемой конфигурацией (Nvidia GTX 460, Radeon HD 5570, Intel HD 4000). Именно здесь мы недавно сели в лужу, но уже начали исправлять положение в версии 1.8.
- Справиться с «тормозами» на видеокартах для ПК; продолжить работу над оптимизацией вместе с производителями видеокарт (NVIDIA, AMD и Intel).
- Уменьшить задержку ввода данных на консолях. Мы уже добились определённых результатов в версии 1.8. Пожалуйста, поделитесь с нами своими наблюдениями.
- Продолжить улучшать работу игры на консолях. Мы отслеживаем потери кадров при вертикальной синхронизации и хотим свести их к минимуму (не больше 2% кадров).
- Уменьшить количество рывков во время игры. За рывок мы принимаем кадр, который передавался с задержкой более 60мс и в результате оказался полностью пропущен. Мы хотим, чтобы такие пропуски возникали реже раза в минуту, и нацеливаемся на полное устранение рывков длиннее 100мс.
- Исправить оставшиеся проблемы с выделенными серверами. Например, если много игроков тянут с высадкой, то игроки, прыгнувшие раньше, могут столкну ться с «эффектом резинки».
- Оптимизировать производительность серверов при обычных действиях— например, обсчёте урона.
- Определить источник рывков, появляющихся в первый час после выхода обновления.
- Оптимизировать серверный и сетевой код для отправки данных о состоянии игроков по всем 100 подключениям с каждым кадром. Сейчас мы обновляем данные для 25 подключений за кадр в лобби и для 50— в игре. Это значит, что вы не получаете задуманных нами впечатлений от игры, пока в бою не остается 50 человек. Мы планируем серьёзные изменения и работаем над ними параллельно с другими задачами по оптимизации.
- Улучшить реагирование на экстремальные случаи, приводящие к каскадным отказам.
- Улучшить систему подбора игроков, чтобы динамически распределять трафик по центрам обработки данных в зависимости от местонахождения игроков. Наша цель—оптимизировать передачу с учётом пинга и при этом не лишать вас возможности играть с друзьями.
- Нанять побольше светлых голов, которые любят подобные технические головоломки.
А вот что можете сделать вы
Убедитесь, что у вас установлены актуальные драйверы видеокарты. Если они устарели, обновите их до актуальной версии.
Сейчас мы используем серверы в центрах обработки данных Amazon Web Services по всему миру. Вы можете зайти на сайт http://www.cloudping.info/ и узнать свой пинг до этих серверов.
- Сев. Америка— Вирджиния, Огайо
- Европа— Франкфурт, Лондон
- Австралия— Сидней
- Бразилия— Сан-Паулу
- Азия— Токио
У Riot Games есть сайт www.lagreport.com. Это отличный источник информации об интернет-провайдерах. Впрочем, эта информация может быть менее полезна для игры в Fortnite.
Если вы пользуетесь Wi-Fi и можете перейти на кабельное подключение, лучше так и сделать. Это уменьшит задержку и потерю пакетов, а заодно сделает более равномерными промежутки между ними.
На соединение могут влиять и телевизионные настройки. В сети есть различные руководства о том, как настроить необходимые параметры. Вот вам один пример.
Пользователи ПК могут почитать статьи вроде этой и узнать, не работают ли у вас ненужные фоновые программы, которые оттягивают на себя ресурсы.