Gamedev
Riot Games
3451

ДЕВБЛОГ // Сетевой код VALORANT

Одна из важнейших целей при создании VALORANT — внимание к соревновательному духу игры. Соревновательный дух для нас означает, что исход каждого матча зависит только от игроков. Интернет-соединение, производительность клиента, серверы Riot и компьютеры пользователей не должны влиять на равенство игроков в каждом матче. Сегодня мы расскажем о том, как эти цели влияли на создание сетевого кода VALORANT!

В закладки
Слушать

// ОГЛАВЛЕНИЕ

// НЕМНОГО О ЦЕЛЯХ РАЗРАБОТКИ

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

Игра должна быть честной.

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

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

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

Передвижение должно быть плавным и очень отзывчивым.

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

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

Положительная обратная связь от стрельбы.

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

Вызов: сервер должен учитывать все ваши попадания и однозначно сообщать, куда попали ваши выстрелы.

Игроки, удерживающие территорию, должны иметь преимущество.

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

Вызов: чтобы информация о том, что нападающий показался из-за угла, проделала путь по сети и достигла обороняющегося игрока, требуется время. Поэтому у нападающего по умолчанию есть больше времени на то, чтобы заметить противника и сделать выстрел. С этой проблемой сталкивается любой соревновательный сетевой шутер, и она называется peeker’s advantage или «преимущество нападающего». Она прямо противоположна нашей цели: обеспечить преимущество обороняющемуся.

Нужно обеспечивать игру при различных настройках.

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

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

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

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

// УМЕНЬШЕНИЕ ПРЕИМУЩЕСТВА НАПАДАЮЩЕГО

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

Давайте посмотрим на преимущество нападающего в действии (преувеличено для наглядности):

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

ЧЕСТНОСТЬ ИГРЫ: НЕТКОД ЗА ПРЕИМУЩЕСТВОМ НАПАДАЮЩЕГО

TTK (time-to-kill — время на убийство) в VALORANT очень маленькое. Большая часть видов оружия убивает с единственного попадания в голову, поэтому когда игрок выглядывает из-за угла, важна каждая миллисекунда!

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

Выглянувший из-за угла игрок увидит обороняющегося игрока, как только его компьютер обработает ввод и предсказуемо переместит его за угол.

Чтобы обороняющийся игрок увидел нападающего, происходят следующие события:

1. Вводные данные о движении передаются от клиента нападающего на сервер игры...

2. Сервер игры их обрабатывает...

3. Сервер передаёт итоговое движение на компьютер обороняющегося...

4. Теперь клиент обороняющегося может применить данные о движении и отобразить нападающего в новом месте.

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

Перед тем, как перейти к математике, давайте поговорим об этих маленьких фиолетовых стрелках.

ПЛАВНОЕ ДВИЖЕНИЕ: БУФЕРИЗАЦИЯ ВХОДЯЩИХ ДАННЫХ

В контролируемом окружении сервер и клиенты могут применять данные о движении сразу, как только получают их. К сожалению, интернет — довольно ненадёжная сеть. Пакеты часто приходят позже или вообще не приходят. Если бы симуляция проводилась на основании последних доступных данных, ей бы часто приходилось ожидать задерживающихся или отсутствующих данных и предсказывать, что произошло вместо них. Неверные предсказания вызывают несогласованность симуляций на стороне клиента и сервера, что приводит к визуальным артефактам, когда персонажи появляются из ниоткуда или скользят. Это происходит из-за попыток восстановить согласованность симуляций.

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

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

Для упрощения скажем, что «буферизация» включает всё время с момента, когда данные о движении получены из сети, до выполнения и отображения этого движения на экране для клиентов или трансляции клиентам для передачи на сервер. Длительность буферизации прямо зависит от тикрейта симуляции (и частоты отображения кадров на стороне клиента), поскольку:

• Кадры данных о движении сохраняются в буфер с частотой, равной частоте синхронизации.

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

• Выполненным движениям может требоваться дополнительный кадр, чтобы они обработались на стороне клиента.

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

ПРЕИМУЩЕСТВО ОБОРОНЯЮЩЕГОСЯ: ИЗМЕРЕНИЕ ЧЕСТНОЙ ИГРЫ ЧЕРЕЗ ВРЕМЯ РЕАКЦИИ

Давайте вернемся к диаграмме. В этот раз сосредоточимся на факторах, связанных с преимуществом нападающего.

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

Чтобы один из игроков выиграл поединок, его выстрел должен обработаться на сервере раньше, чем выстрел другого. Желтый путь на изображении показывает, как нападающий движется, выглядывает из-за угла, замечает противника и посылает на сервер данные о выстреле. Синий путь показывает то же самое движение, отправляемое обороняющемуся, и его возможность сделать выстрел до того, как быть убитым.

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

Выразим его через время реакции обороняющегося:

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

ПОДСТАВЛЯЕМ ЧИСЛА

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

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

Для этой упрощенной модели возьмем два кадра буферизации на сервере, которые включают следующее:

• 0,5 кадра – среднее время ожидания входящих данных до их помещения в очередь

• 0,5 кадра – целевое время для настоящей буферизации на сервере, то есть среднее время нахождения входящих данных в очереди до их применения (чтобы смягчить задержки передачи данных)

• 1 кадр – полный кадр, когда движение применяется и выводится (передаётся клиентам)

Для буферизации на стороне клиента возьмем три кадра буферизации. Они распределяются так же, как и буферизация на сервере, за исключением следующего:

• Целевое время клиента, используемое для буферизации, равно одному полному кадру, а не половине кадра.

• Клиенты должны вывести результат на экран, так что нужно учитывать задержку вывода данных видеокартой и задержку цепочки буферов. Это может составлять от 0 до 2 кадров в зависимости от многих факторов, но 0.5 кадра вполне разумное приближение.

Что ж, давайте подставим эти значения:

Получается, что у нападающих на ~141 мс больше времени, чтобы среагировать, чем у обороняющихся. Учитывая, что время реакции человека обычно не превышает 300 мс, это огромное преимущество!

Итак, что мы, разработчики, можем сделать, чтобы минимизировать преимущество нападающего?

Говоря кратко, вот что:

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

2. Мы размещаем серверы VALORANT по всему миру и ставим цель достигнуть пинга в 35 мс для 70% наших игроков.

3. Мы оптимизировали наши серверы, чтобы обеспечить тикрейт 128 для всех игроков.

4. Мы оптимизировали игру VALORANT, чтобы она воспроизводилась с частотой 60 кадров в секунду на большинстве компьютеров этого десятилетия и с большей частотой кадров на мониторах с большой частотой обновления.

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

6. Поддержка NVIDIA Reflex — пакета технологий, снижающих системную задержку в некоторых играх. Уже на GTX 1660 Super Reflex обеспечивает снижение задержки с 30 мс до 24 мс, а на 30-й серии можно обеспечить снижение задержки вплоть до 12 мс! Правда, на мониторах с частотой 360 Гц. Поэтому этот пункт учитывать не будем, так как на данный момент это крайне недоступные технологии.

Подставив в неравенство тикрейт серверов 128, задержку маршрутизации 35 мс, воспроизведение игры в режиме 60 кадров в секунду, получим:

Снижая задержку передачи данных игрокам и оптимизируя наши серверы, мы можем уменьшить наше базовое преимущество нападающего на ~40 мс (28%).

Оптимизируя производительность клиента, мы можем дополнительно уменьшить преимущество нападающего для обладателей мониторов с высокой частотой обновления. Те, кто играет с высокой частотой кадров, быстрее увидят обновление. Например, при игре с частотой 144 кадра в секунду преимущество нападающего противника снизится до 71 мс (уменьшение на 49%)!

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

Разница существенна, но как она влияет на исход боя?

ВЛИЯНИЕ НА ИСХОД БОЯ

На ранней стадии разработки VALORANT нужно было убедиться, что на устранение преимущества нападающего стоит тратить ресурсы. Окажет ли улучшение на 40 мс, ожидаемое от Riot Direct и серверов с тикрейтом 128, существенное влияние на игровой процесс?

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

Мы тестировали этот сценарий при множестве различных значений тикрейта сервера, задержки передачи данных, частоты кадров в секунду на стороне клиента, а также с различным оружием. Вот что мы выяснили:

  • На профессиональном уровне соревновательной игры разница между временем реакции игроков становится очень мала. Разница между победой и поражением в поединке в наших экспериментах часто уменьшалась до 20 – 50 мс.
  • Даже в слепых тестах (игрокам не сообщались параметры, при которых проводится матч) опытные игроки могли точно определить небольшие изменения (~10 мс) в преимуществе нападающего. Различие в 20 мс для этих игроков было очень значительным.
  • Для игроков с одинаковым уровнем мастерства изменение преимущества нападающего на 10 мс приводило к изменению частоты побед от 90% для игрока, удерживающего угол и вооружённого Operator, до 90% для наступающего противника, вооружённого винтовкой.

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

СТРЕМЯСЬ К НУЛЮ

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

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

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

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

3. Стрельба движущегося игрока менее точная, что вынуждает нападающего либо остановиться перед выстрелом, либо менее точно стрелять на ходу (и надеяться на лучшее). Чтобы полностью остановиться, нужно некоторое время, в течение которого обороняющийся может среагировать.

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

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

Давайте перейдем к другой интересной проблеме.

// МИНИМИЗАЦИЯ РАСХОЖДЕНИЙ СИМУЛЯЦИИ

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

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

ПЛАВНОЕ ДВИЖЕНИЕ: ФИКСИРОВАННАЯ ЧАСТОТА ОБНОВЛЕНИЯ

Сперва нужно убедиться, что различия в частоте кадров на стороне клиента и сервера не приводят к несогласованности симуляции. Два физических обновления по 5 мс, следующие друг за другом, дают иной результат, чем одно обновление на 10 мс. Это происходит из-за того, как данные численно интегрируются (собираются и применяются) при каждом обновлении.

Это означает, что клиент, выполняющий симуляцию физики с частотой 30 Гц, будет постепенно отклоняться от сервера, симулирующего физику с частотой 128 Гц, и потребуется частая коррекция клиента. Чтобы предотвратить такую ситуацию, мы отделяем наши обновления симуляции от тактов игры (частоты кадров воспроизведения вашей игры). Независимо от частоты воспроизведения игры, клиенты и серверы всегда обновляют движение, физику и другие данные с фиксированной частотой: ровно 128 раз в секунду.

Выше показано, как клиент, работающий при 60 кадрах в секунду, будет симулировать по несколько движений за кадр, в то время, как клиент с большей частотой кадров может выполнять одно обновление симуляции за несколько кадров. Наша симуляция происходит в недалеком будущем (например, движение #408), чтобы точно знать, где будет клиент на границе кадров. Затем мы линейно интерполируем состояние игры и обновление движения, чтобы отобразить все точно так, как должно быть при отрисовке кадра.

Теперь, с фиксированным шагом движения, клиент и сервер могут сопоставить результаты своих симуляций. Когда клиент сообщает серверу игры: «Я только что симулировал движение #408» – сервер игры точно знает, о каком движении сообщает клиент.

ОЧЕРЕДЬ И РАСПИСАНИЕ ДВИЖЕНИЙ

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

Когда сервер начинает принимать данные от клиента, он устанавливает расписание соответствия обновлений клиента и своих собственных (обновление #239 от клиента A соответствует обновлению сервера #400). Принимая каждое обновление от клиента, сервер помещает это обновление в соответствующее место в очереди.

Помните буферизацию сети, о которой мы говорили, обсуждая преимущество нападающего? Здесь она и применяется. Сервер выделяет часть памяти (и регулирует её размер по необходимости) для хранения очереди входящих движений, ожидающих исполнения. Как мы упоминали выше, мы поддерживаем как можно меньший размер очереди, чтобы минимизировать задержку передачи данных, но оставляем его достаточным для сглаживания непостоянной частоты поступления обновлений.

Выполняя собственную симуляцию, сервер выполняет движения из очереди, поступившие от каждого клиента, и возвращает всем клиентам итоговое состояние симуляции. Однако, как показано выше при движении #401 для клиента B, иногда сервер не получает необходимое обновление от клиента вовремя. В таких случаях сервер предсказывает, что сделал бы клиент. Обычно мы предполагаем, что игрок продолжает удерживать клавиши, которые удерживались при последнем полученном обновлении несколько миллисекунд назад.

Но да, иногда предсказание неверно. Периодические несовпадения данных клиента и сервера неизбежны.

ПОДДЕРЖКА ИГРЫ ПРИ РАЗЛИЧНЫХ НАСТРОЙКАХ: КАК СПРАВИТЬСЯ С НЕСОВПАДЕНИЕМ ДАННЫХ

Что мы делаем при рассинхронизации сервера и клиента?

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

// ОПРЕДЕЛЕНИЕ РЕЗУЛЬТАТА БОЯ НА СЕРВЕРЕ

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

ПООЩРЯЮЩИЙ ГАНПЛЕЙ: ПОДТВЕРЖДЕНИЕ ПОПАДАНИЯ

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

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

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

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

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

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

// РЕШЕНИЕ ПРОБЛЕМ НА СТОРОНЕ КЛИЕНТА

Мы уже говорили, что хотим избежать влияния низкого качества соединения или устаревшего оборудования одного игрока на других, но это не значит, что мы оставим этого игрока в беде!

ПОДДЕРЖКА РАЗЛИЧНЫХ НАСТРОЕК: МОНИТОРИНГ ПРОИЗВОДИТЕЛЬНОСТИ

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

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

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

// ЧТО ГОТОВИТ БУДУЩЕЕ?

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

Мэтт деВет
Руководитель отдела обеспечения игрового процесса
Дэвид Стрейли
Руководитель технического отдела

VALORANT — командный тактический шутер от первого лица, выпущенный Riot Games. 4 августа в игре начался Акт 2, вместе с которым в игре вышла новый Агент Killjoy, добавился новый режим «Бой насмерть», а также свежий боевой пропуск. А если вам интересно узнать больше о разработке VALORANT, то можете ознакомиться с нашими статьями:

Кстати, сейчас мы проводим креативную коллаборацию с Покрасом Лампасом, в рамках которой художник создал наборный шрифт Г Ӆ Ѻ ƃ Å Л И Ʒ Å Џ И Я 1.0. Онлайн-активности в VK-сообществах игры и художника скоро подойдут к концу, успейте поучаствовать!

Riot Games была основана в 2006 году Брэндоном Беком и Марком Мерриллом, которые хотели изменить принцип создания видеоигр, сделав основной упор на игроков и их желания. В 2009 году вышла их первая игра – League of Legends. С тех пор LoL стала самой популярной компьютерной игрой в мире и поспособствовала взрывному росту киберспорта. Сейчас среди игр Riot Games также доступны шутер VALORANT, автобаттлер Teamfight Tactics, карточная игру Legends of Runeterra и другие проекты.
{ "author_name": "Riot Games", "author_type": "editor", "tags": ["valorant","408","401","400","239"], "comments": 92, "likes": 41, "favorites": 86, "is_advertisement": false, "subsite_label": "gamedev", "id": 202024, "is_wide": false, "is_ugc": false, "date": "Wed, 23 Sep 2020 16:28:52 +0300", "is_special": false }
0
92 комментария
Популярные
По порядку
Написать комментарий...

Роскошный танк88

2

Вы лучше расскажите про ваш ебо-античит, который запускается с дровами, ломает кривую вентилятора и при этом не ловит читеров.

Ответить
3

Уже обсуждали в другой ветке комментариев https://dtf.ru/gameindustry/210823-ya-blagodaren-za-vtoroy-shans-v-zhizni-borec-s-chiterami-gamerdoc-soobshchil-chto-poluchil-rabotu-v-riot-games

По-моему, у вас немножко предвзятое отношение.

Ответить

Роскошный танк88

Riot
4

Меня напрягает сама идея влезание игры за рамки своих файлов.

Ответить
–2

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

Ответить

Роскошный танк88

Riot
0

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

Ответить
0

А какой смысл делать античит, который НЕ работает?

Ответить
1

Тут вопрос был в другом. О том что он работает тогда когда игра не запущена

Ответить
9

Потому что он работает как драйвер, в фоне. Драйвер вашего принтера тоже работает, когда вы не печатаете. И тоже имеет доступ ко многим закрытым областям памяти.

PS Vanguard можно остановить и удалить - VALORANT его включит и установит сам при следующем запуске.

Ответить
0

Нет, я это понимаю) Просто вы ответили человеку который не понимает, совершенно про другое :)

Я как раз именно это уже и говорил :)

Ответить
1

А, ок, сорян.

Ответить
1

Но он же отключаем. Проблемы нема.

Ответить
0

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

Ответить
1

Отключаем - вы можете через меню остановить службу вполне легально.

Если хотите удалить - тоже ваша воля. Просто для игры в VALORANT он потребуется в работающем виде, тут уж просим прощения - без этого не можем обещать борьбу с читерами.

Ответить
0

Нет, чуть не так. Он  не отключаем. Он выключаем. То есть вы можете вырубить его совсем до перезапуска компа. И по другому его не включить

Ответить
1

Я немного запутался уже.
Короче говоря, вы вполне легально можете его снести, если страшно - мы ок с этим. Можете остановить, если страшно, но не так сильно. А можете не переживать и жить с ним, мы не планируем какие-то гадости делать с компьютером - для нас репутация важнее.

Ответить
1

Да, верно :) Вполне согласен.

Ответить
0

Рито за шо тут минус когда я с вами сгласился? Шо за дикие мисклики?  :DDD

Ответить
0

Это правда миссклик! Теперь вы знаете мой ранг в VALORANT с такой точностью попаданий.

Ответить
1

О вы со мной в одной лиге ?!

Ответить
0

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

Ответить
1

Вы не сможете играть при отключённом Vanguard. Это проверяется в том числе в ходе матча серверно.

Ответить
0

Там описано как раз что он ничего не делает. А систему он не нагружает. Так что все норм. Любой античит сидит на уровне ядра. тот же панкбастер

Ответить
0

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

Ответить

Роскошный танк88

Arseniy
0

Вопросов не было бы, если бы они не нахваливали античит и не совпали его вместе с дровами.

Ответить
0

А в чём проблема то? о_О

Ну дрова и дрова. У каждого дровов с десятку наберётся. Не собираешься играть — отруби (есть такая опция). Захотел играть — вруби и перезагрузись (вопрос 10-20 секунд). В чём, собственно, затык то?

Ответить
1

затык то?

Сейчас-сейчас... РЯЯЯКИТАЙЦЫВОРУЮТНАШИДАННЫЕМЕРЗКИЕАЗИАТЫВНЕДРЯЮТСЯСЛИШКОМГЛУБОКОНЕЗАБУДЕМНЕПРОСТИМБОЙКОТ.

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

Ответить
0

Вот только так почти все делают. И я как программист не вижу как искать читеров надежнее если оно будет не там

Ответить

Роскошный танк88

Виктор
0

Если куча хороших примеров.

Ответить
0

например?

Ответить
0

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

Ответить
5

Спасибо за статью!

Ответить
2

Это всё очень хорошо, но играть в игру без голосового чата почти невозможно. Когда в валорант его всё же добавят и позволят российским игрокам нормально общаться в том числе для поддержания того самого соревновательного духа?

Всем известно, что огромное количество разработчиков позволяет российским пользователям использовать голосовой чат и никаких даже предупреждений им не поступает (потому что это бред). Зачем же Riot без каких бы на то ни было причин следует глупому неработающему закону?

Ответить
2

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

Ответить
0

Играй в заранее собраной командой друзей и общайтесь в дискорде , если его антияит не прикроет.

Ответить
1

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

Ответить
1

Тоже казалось, что одну статью читал уже

Ответить
0

лучше бы поддержку ultrawide добавили.

Ответить
0

Мы не будем менять FOV - это противоречит соревновательности игры. Грубо говоря, больший FOV -> больше информации.

Ответить
0

а вариант с апскейлом, как овервотч (обрезать верх/низ)? В csgo есть поддержка, в лиге легенд есть... 

Ответить
0

Обрезать контент, который должен быть - по-моему ещё хуже. Уж лучше банальные черные поля.

Ответить

Процентный ихтиандр

Riot
0

Кста, раньше в лолке можно было на 5120x1440 запускать с черными полями 2560x1440, а теперь - нет. Зашо? У меня 49 дюмов и шея болит крутить головой...

Ответить
1

Кайф, наконец то годный лонг на дтф!

Ответить
1

Отличный материал, ждем от вас еще статеек)

Ответить
1

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

Ответить
0

2. Мы размещаем серверы VALORANT по всему миру и ставим цель достигнуть пинга в 35 мс для 70% наших игроков.

В Москве-то есть именно сервера ? А то многие из производителей игр просто заказывают сервера у i3d.net который видимо игровые сервера в Москве не располагают просто ретранслируя траффик в Франкфурт или Варшаву, в итоге сидишь с пингом 80+

Ответить
1

i3d.net

Это PoP'ы, а не сервера. Кстати, полезная штука тоже - для стабильности соединения в первую очередь.

В Москве-то есть именно сервера

Пока нет, но мы будем работать в этом направлении. Пинг в Москве - 40мс, если вас матчит в Стокгольме, или 60мс, если Франкфурт.

Ответить
2

Планируете голосовой чат сделать? Только Riot Games не делают голосовой чат на основании закона РФ.

Ответить
3

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

Ответить
0

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

Ответить
0

Комментарий удален по просьбе пользователя

Ответить

Великолепный ГОСТ

Синие
0

Только регистрация один хрен хуже, чем во многих играх с 64.
Играл на релизе если шо так что хз, мб поправили. Но 128 тогда тоже был.

Ответить
0

Попробуйте сейчас, у нас в начале был очень неудачный патч, который сломал регистрацию.

Ответить
0

у них даже на турнирах бывает не регает урон. видел на трансляциях.
еще киберкотлеты скидывали видео.

Ответить

Великолепный ГОСТ

0

А куда писать нытьё про 200 лет в лол?

Ответить
0

Можете сюда!

Ответить

Великолепный ГОСТ

Riot
0

Там у вас вуконг поломался и всех на топе насилует с 52.3%вр в п+. По данным u.gg ну его 3 чемпиона, которые имеют против него винрейт 51.5+%. Для чемпов S+ тира их в среднем 6.
В д+ вуконг топ-1 топлейнер по винрейту. Д2+ - третье место по вр. МТ+ - 8, Челленжер - 2.

Субъективно у него слишком много инструментов для безнаказанного изнасилования оппонента, особенно оппонента-брузера. 
Кухан, который мало того что обладает неадекватным ренжом, ещё и режет армор, ресетит аа, накидывает онхит эффекты и ресетит кулдаун тем же механизмом, каким стакается пассивка.
Вешка - ладно, прикольный спелл, никаких претензий особо нет, кроме может быть того что он стакает пассивку(и опять же перезаряжает кухан), из-за чего если оппонент имел неосторожность постоять под клоном(а немобильный чемпион не может не словить 2-3 хита от клона), вуконг отхиливает всё, чем просел по трейду, ещё и получает миллион армора, если идёт длинный трейд или олл-ин.
Ешка даёт миллон ас, из-за чего в сочетании с пассивкой он физически неспособен проиграть лвл1 трейды. 

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

Ответить
1

Попробуйте вот этого парня против него.

Что касается сломанности - думаю, вы знаете как мы на это смотрим. Не думаю, что дольше патча его сломанность продлится. Надеемся, 200 лет опыта помогут нашей команде баланса принять верные решения.

Ответить
0

ну я на п+ с ним проблем не имею. Главное на 1 и 3 лвле с ним не трейдится и держать дистанцию а дальше и с первого предмета уже все ок. Просто держи в уме примерный кд его ульты. Зная это ты можешь видеть его агресивное поведение и  скорее всего приближение лесника

Ответить

Великолепный ГОСТ

Виктор
0

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

Ну, я отп фиора так что это в основном с её колокольни. 

Ответить
0

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

Ответить

Великолепный

Виктор
0

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

Ответить
0

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

Ответить

Великолепный

Виктор
0

Ну. Фиора в принципе про сплипуш, а не про тимфайты, кроме случаев когда есть варик дать очень хороший фланк. Я о том, что у него всё ещё есть достаточно опций дуэлить тебя. Типа +1 слот за счёт унижения на линии и, вероятнее всего, фрагов с роумов/тф.

Ну и путём экспериментов, пришёл к выводу что завоеватель профитнее граспа против него. Потому что на лайне грасп тебе не помогает. Ты не можешь безнаказанно поукать его кушкой из-за его крайне низких кулдаунов и хороших опций навязать трейд. 
А завоеватель замечательно скейлится, поэтому с прицелом на мид-лейт лучше его. Позволяет взрывать вуконга после 3-го слота, если он не оверфед.

Ответить
0

Это не для поука. А для того чтобы когда он влетел ты мог восстановить себе здоровье двумя рунами. Одним вкусом крови и граспом. То есть ты его ипользуешь не как обычно для поука а дефенсив

Ответить

Великолепный

Виктор
0

Грасп нужно сначала настакать на крипах. Для отхила лучше вампирксикй скипетр первым слотом + легенда родословная). 

Ответить
0

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

Ответить
0

То есть тебе не придется получать даже золото ради этих бонусов плюс ты получаешь  также пластину от рун что даст тебе пережить лучше короткие трейды его

Ответить

Великолепный

Виктор
0

Ну вот насчёт пластины тру.

Ответить

Великолепный

Виктор
0

Но энивей, мне проще терпеть и перескейливать как можно сильнее. Я типа не говорю что эно анвинабл не контрится. Я говорю что это слишком сильно. Это слишком мерзкая линия. Субъективно, даже против танкомальфа, который первыми слотами билдит таби и шиповку, с теми же рунами стоять проще. Потому что хоть ты его и не убьёшь никогда в жизни, он тоже заебётся тебя убивать, если его не олл-инить. Ещё и его ульт проще запаррировать)

Ответить
0

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

Ответить

Великолепный

Виктор
0

Ооо. Грасп тимо это ужасно мерзко)

Ответить
0

Согласен. Но более мерзко что в текущей мете роляет только грасп тимо и  птк ( Раньше куча сборок работала отлично теперь у тебя 2 максимум 3 варианта и то третий вариант для мегя скиловых(с фазовым рывком)

Ответить

Великолепный

Виктор
0

Да, буквально вчера об этом думал. Раньше мета как-то посвободнее была. Сейчас если ты играешь не в мету, ты сосёшь.

Ответить
0

Соглащусь. грустно как-то( Подниматься стало тяжелее и душнее. Раньше добегал до п2. Сейчас с трудом пробираюсь

Ответить

Великолепный

Виктор
0

Субъективно, самым сбалансированным временем был конец 6 сезона. Потом был очень весёлый седьмой с леталити, когда все ваншотили всех, а потом всё пошло по той самой.

Ответить
0

Ну мне нравился прошлый и позапрошлый) Довольно веселые)

Ответить

Великолепный

Виктор
0

Мбмб, я последние 2 сезона мало играл, только в этом вернулся.

Ответить

Великолепный

Виктор
0

А, нет, вру. В 8-м нормально играл. Да, норм было.

Ответить
0

А куда понять чтобы придвинули сервера поближе к челябинску? Что бы пинг ниже 90.

Ответить
0

Естить катить, какой лонг то знатный. Спасибки,)

Ответить
0

Интересно было почитать

Ответить
0

что я понял из статьи:
1. заного изобрели unlag
2. клиенту дали расширенные настройки, решайте сами.

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

Ответить
0

Почему меня всегда телепортирует во время матча ? Пинг, интернет соединение и фпс в норме. Есть решение? Из-за такого дискомфорта не хочется заходить в него

Ответить
0

А какой у вас пинг и потеря пакетов?

Ответить
0

110-130

Ответить
0

А потеря пакетов? То, что вы описываете - оно самое, очень похоже.

Ответить
0

Вы когда уже эту хуйню пофиксите? 

Ответить
0

Сложно по кусочку скриншота понять причину. Пробовали менять размер клиента? Ctrl++ и Ctrl+-

Ответить
0

Отсутствие серверов в РФ и пинг 90+ в Сибири (что делает невозможным толковое противостояние на высоких рангах, против любых игроков из Европы) - check
Отсутствие голосового чата в командном шутере - check
Оверфорс платного контента (надо же бабло инвесторов отбивать) при довольно тухлом разнообразии бесплатного контента - check
Абсолютно неадекватная ценовая политика, да даже в сравнении с вашей же лигой - check

На стадии концепта я хайпил и ждал эту игру, думал, "Ну, может Райот разорятся на бедную страну третьего мира и поставят нормальные сервера?" Поиграв с пингом 90+ и поев сами знаете чего, вкусив СОЧНОГО peekers advantage, понял что русские игроки как всегда назад. 

Ну ок чё, поиграем в детище другой конторы. Спасибо Рито, сами ешьте.

Ответить
0

Пофиксится ли телепортация которая пришла с патчем 1.08?

Ответить
0

Будут ли в скором времени сервера в Казахстане?

Ответить

Комментарии

{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }
null