О стабильности игрового процесса VALORANT (часть 2)

Команда разработки игрового процесса VALORANT делится новыми подробностями о своем расследовании причин, из-за которых у игроков возникают проблемы в матчах.

Еще раз привет! C вами команда разработки игрового процесса VALORANT. Сегодня мы продолжим беседу о работе над стабильностью игрового процесса. 

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

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

Если кратко, то в патче 4.10 вас ждет следующее:

  • Мы выявили и исправили ряд неполадок, которые возникали из-за нестабильного подключения к сети, низкой частоты кадров клиента, переключения между окнами или длительной неравномерности сигналов.
    • Из-за этих неполадок игрокам могло казаться, что сервер медленно обрабатывает их действия или перемещения врагов.
  • Патч 4.10 должен улучшить поведение сетевой буферизации в подобные моменты. Кроме того, вы получите доступ к графикам, которые помогут увидеть, что именно происходит "под капотом" игры.
  • Эти изменения затрагивают основные причины нестабильности игрового процесса, которые мы нашли, но мы продолжим следить за ситуацией и вносить дополнительные улучшения.
    • Если вы все еще замечаете неполадки, измерить и проанализировать их помогут новые графики.
  • Пожалуйста, продолжайте делиться с нами своими впечатлениями и видеороликами с помощью нашего канала поддержки игроков.

ЗАДЕРЖКА И БУФЕРИЗАЦИЯ

В предыдущей статье мы говорили, что изучаем влияние задержки и сетевой буферизации на игровой процесс VALORANT. За это время мы успели закончить расследование и найти некоторые проблемы, которые будут исправлены в патче 4.10.

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

В сетевых играх вроде VALORANT вы отправляете информацию о своих действиях серверу, чтобы он выполнил их, так как только он обладает "правильным" представлением о текущем матче. В идеале при каждом обновлении игровой симуляции (а это происходит 128 раз в секунду) сервер должен получать сигнал о действиях агента от клиента игры. Если сигнал задержался при отправке по интернету, сервер не будет ждать его – ему придется совершить действие за вас.

Предугаданные сервером действия часто не совпадают с теми, которые еще не дошли до него. Эти расхождения приводят к корректировкам движений: для вас они выглядят как небольшие скачки персонажей на нужное место. Чрезмерное количество корректировок делает персонажей "дерганными" – и в игру становится невозможно играть.

Чтобы избежать подобного, сервер копит действия в своем буфере, чтобы обработать их в случае задержки. Это распространенный прием при передаче данных по интернету, который позволяет серверу плавно воспроизводить действия агентов. Однако подобная буферизация создает задержку обработки ваших действий. При высоких уровнях буферизации может казаться, будто вы играете с гораздо большим пингом, чем показывает датчик круговой задержки сети.

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

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

Что мы выяснили

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

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

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

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

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

Исправления и улучшения

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

Это позволит серверу быстрее справляться с огромной очередью данных. Приведем пример: если раньше в буфере оставалось 5 лишних действий, он возвращался к нужному объему только через 5 секунд. Теперь же этот процесс занимает менее секунды. Значит, нестабильное подключение к сети и другие неполадки, приводящие к дополнительной буферизации, будут не так долго влиять на пинг игроков.

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

Мы решили, что в крайних случаях (при сильных скачках частоты кадров или скорости подключения), корректировка движений будет предпочтительнее необходимости ждать даже пару секунд, пока размер буфера вернется к норме. Этот компромисс обычно доставляет меньше неудобств, чем продолжительная задержка, которую испытывали игроки до внесенных нами изменений. Вы можете заметить подобную корректировку при разворачивании игры после переключения окон, если частота кадров в фоновом режиме значительно ограничена. Это приведет к резкому приросту FPS и проблемам с буферизацией, которые теперь будут решаться гораздо быстрее.

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

Что дальше

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

Измеряемое графиком время будет примерно равно задержке, которую можно заметить во время старого доброго "теста с ножом". Нормальное значение этого графика должно быть примерно на 20֪–30 миллисекунд выше значения круговой задержки сети. Однако идеальное значение будет зависеть от конкретных условий сети и частоты кадров.

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

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

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

СЛЕДУЮЩЕЕ ОБНОВЛЕНИЕ

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

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

Следите за новостями – чуть позже мы расскажем о последней теме нашего расследования: выборе серверов и как это влияет на игроков с высоким пингом.