Fortnite

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

30.10.2017
Мы старательно улучшаем каждый аспект игры, но должны признать, что немного отстали в работе над производительностью, и здесь нам ещё многое предстоит сделать.

Проблемы с производительностью, которые больше всего беспокоят игроков

Клиент
  • Низкая частота кадров -> возросшая задержка ввода, большой промежуток между кадрами.
  • Задержка отображения -> возросшая задержка ввода.
  • Рывки (неестественно долгие кадры) -> замирание картинки с последующим ускорением.
  • Нестабильная частота кадров -> трудности с прицеливанием.

Сервер
  • Медленное обновление данных о соединении, низкая частоты кадров -> увеличенный пинг.
  • Рывки (неестественно долгие кадры) -> «эффект резинки».

Сеть
  • Потеря пакетов -> «эффект резинки».
  • Перегруженный канал связи -> «эффект резинки».
  • Высокий пинг -> «эффект резинки».
  • Переизбыток пакетов (особенно при игре через 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 и можете перейти на кабельное подключение, лучше так и сделать. Это уменьшит задержку и потерю пакетов, а заодно сделает более равномерными промежутки между ними.

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

Пользователи ПК могут почитать статьи вроде этой и узнать, не работают ли у вас ненужные фоновые программы, которые оттягивают на себя ресурсы.