18.10.2017

Блог разработчиков: использование задержки, преимущество наблюдателя и дальнейшая работа

Мы изучаем отзывы сообщества о ситуации с задержкой, стабильности сигнала и преимуществах наблюдателя. Из этой статьи вы узнаете о влиянии этих аспектов на игровой процесс и работах по исправлению недочетов.

Сперва хотелось бы уточнить: дизайн Rainbow Six Осада предполагает, что при регистрации попаданий и имитации действий игрока приоритет отдается пользователям с более стабильным соединением. В связи с этим мы продолжаем совершенствовать наши системы, чтобы пользователи с различным уровнем сигнала находились в относительно равном положении.

Высокая задержка и преимущества наблюдателя

Имитация — процесс воспроизведения удаленным компьютером (игровым сервером) движений и действий, совершаемых игроком. Представьте, что за персонажем следует «тень». Она олицетворяет положение оперативника, созданное сервером. Например, если задержка составляет 200 мс, «тень» окажется там, где для вас персонаж был 100 мс назад (так как на подтверждение сигнала требуется некоторое время). Чем выше показатель задержки, тем больше «тень» будет отставать.

Однако в ситуации, когда игрок (которого впредь будем называть «наблюдателем») выглядывает из-за укрытия, высокий показатель не дает больше времени на реагирование перед тем, как персонажа увидят другие игроки. Это происходит потому, что все выстрелы должны быть подтверждены сервером: пока сигнал его не достигнет, попадание не будет зарегистрировано.

Преимущество наблюдателя есть следствие эффекта «тени». Избавиться от него нельзя, иначе перед воспроизведением всех движений в игровом клиенте они также должны будут получать предварительное подтверждение на сервере. Это приведет к увеличению задержки ввода (равной задержке сигнала), что противоречит изначальному замыслу — оперативной имитации движений. Однако следует понимать, что преимущество зависит не от скорости соединения наблюдателя, совершающего выстрел, а от скорости соединения его «жертвы».

Рассмотрим понятие «окно возможностей» — максимальное время, которое есть у оппонента, увидевшего наблюдателя, на совершение выстрела или других успешных действий. Преимущество возникает потому, что окно возможностей всегда меньше, чем скорость реагирования наблюдателя.

Окно возможностей = время реагирования наблюдателя - показатель задержки оппонента (включая время на обработку)

В следующем ролике мы продемонстрируем ситуацию, в которой у оппонента (игрок 2) время реагирования меньше (150 мс), чем у наблюдателя (300 мс). Обратите внимание, что увеличенное время задержки наблюдателя не влияет на то, кто выйдет из боя победителем, ведь его окно возможностей остается прежним. Хоть наблюдатель и нажал на спусковой крючок, оппонент успел совершить выстрел в голову, подтвержденный на сервере: выстрел наблюдателя был отменен, и его персонаж погиб.

Теперь покажем, как время задержки противника влияет на регистрацию попаданий. Время реагирования осталось прежним (150 мс у оппонента и 300 мс — у наблюдателя), но мы будем постепенно увеличивать время задержки «жертвы». Время задержки наблюдателя останется неизменным и намеренно высоким: 400 мс. Увеличение времени задержки оппонента приводит к уменьшению окна возможностей. При низком показателе (50–100 мс) оппонент может победить, а при высоком (200 мс) начинает проигрывать.

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

Peek1

На изображении выше показано, как время реагирования наблюдателя сохраняется на сервере и затем реализуется в симуляции оппонента, даже если время задержки наблюдателя высокое.

Peek2

На изображении выше показано, как время задержки наблюдателя влияет на шансы выжить. Оппоненту требуется начать стрельбу до того, как выстрел наблюдателя будет зафиксирован на сервере, то есть совершить удачное действие в рамках окна возможностей. Время задержки наблюдателя не влияет на окно возможностей. Если сервер зарегистрировал смерть персонажа, дальнейшие действия игрока отменяются. Все это соответствует тезису, приведенному в начале статьи: чем быстрее и стабильнее соединение, тем больше преимуществ получает игрок.

Дальнейшая работа

В середине 3-го сезона 2-го года игры мы начнем внедрять изменения, касающиеся систем задержки, обработки и регистрации попаданий. Работы в этом направлении продолжатся и в последующих сезонах.

Регулировка задержки

Регулировка задержки позволит серверу четче воспроизводить время реагирование игрока с нестабильным соединением, совершающего выстрел. Если данные о местоположении его персонажа не будут поступать последовательно, сервер адаптирует поток информации о выстреле, чтобы точнее отразить команды, отправляемые игроком. Хотя расчет и идет в миллисекундах, это изменение позволит увеличить окно возможностей в бою против оппонентов с колеблющимся временем задержки.

Взаимодействие моделей персонажей

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

Улучшение регистрации попаданий

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

Улучшение процесса имитации действий

Мы оптимизируем процесс имитации игровых действий. Это изменение приведет к улучшению времени реагирования и снижению задержки.

Процесс обработки и задержка

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

Значки соединения

Мы внесем несколько изменений, позволяющих отслеживать статус клиента, сервера и сетевого соединения.

Теперь в правом верхнем углу экрана периодически будут возникать четыре значка, отражающие аспекты, которые влияют на качество игрового процесса: задержку, стабильность соединения, частоту обновления и стабильность сервера — слева направо в указанном порядке.

Peek1

Значок появится, когда качество соответствующего аспекта станет негативно влиять на производительность игры. Игроки больше не будут полагаться только на показатель задержки и смогут получать больше информации о статусе соединения. Мы введем два типа маркировки значков — желтый цвет и красный. Разработчики смогут обновить порог смены маркировки в любое время: ниже будут представлены лишь средние значения, базирующиеся на текущих настройках.

  • Значок задержки: отобразится, когда этот показатель будет высоким. Желтый цвет означает, что значение задержки (100–140 мс) еще позволяет серверу активировать дополнительные функции. Они будут использоваться для обработки выстрелов и регистрации попадания. В этом случае вы заметите, что не все выстрелы достигнут цели. При высокой задержке возможны и другие неприятные ситуации — например, смерть персонажа, находящегося в укрытии. Красный цвет означает, что показатель задержки слишком высокий (400–500 мс). Если ситуация не изменится, игрока могут исключить из игры. Когда отобразится значок красного цвета, сервер перестанет регистрировать практически все попадания. Это сделано намеренно.
  • Значок соединения: отобразится при периодической потере пакетов данных и колеблющемся показателе задержки (например, при перенаправлении пакетов данных). В этом случае могут возникнуть проблемы с передвижением персонажей и регистрацией попаданий, а также будет введено вынужденное изменение показателя задержки. Вероятность такого хода событий увеличивается, если отображается значок красного цвета.
  • Значок частоты обновления: отобразится, если поток пакетов данных от игрового клиента к серверу нарушится или количество кадров в секунду станет снижаться или будет нестабильным. В этом случае некоторые попадания могут не регистрироваться, а также будет введено вынужденное изменение показателя задержки (что позволит игровому серверу исключить случаи некорректного отображения персонажей для других игроков). Если цвет значка изменится на красный, могут возникнуть проблемы с передвижением персонажей.
  • Значок стабильности сервера: отобразится при возникновении неполадок и отсутствии возможности корректного воспроизведения симуляции. Значок увидят все игроки, подключенные к игровому серверу. В этом случае могут возникнуть проблемы с передвижением персонажей и регистрацией попаданий, а также будет введено вынужденное изменение показателя задержки. Если цвет значка изменится на красный, неполадки станут заметнее.

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

Делитесь своими мыслями по поводу изменений на странице Rainbow Six в Reddit!

Посетите наши соцсети

twitter iconyoutube icontwitch icon