valorant сетевая буферизация что это
Что такое Raw Input Buffer в Valorant и как он влияет на игровой процесс?
В соревновательных играх, таких как Valorant, производительность играет решающую роль в определении того, кто получит преимущество в перестрелке и, в конечном итоге, выиграет битву в целом.
Разработчики Valorant упорно трудятся, чтобы предоставить игрокам справедливую и равноправную среду, а также дать им возможность максимально использовать свое оборудование. Они делают это путем внесения любых необходимых изменений в игру, будь то балансировка или улучшение производительности.
Для реализации всех этих изменений в Valorant развертываются обновления патчей, чтобы эти изменения вступили в силу и улучшились игра с течением времени.
В Valorant добавлена бета-версия Raw Input Buffer
Для большинства игроков FPS наличие необработанной информации предпочтительнее отфильтрованного ввода из Windows, вызывающего задержки. Необработанный ввод можно объяснить как ввод, принимаемый непосредственно с помощью мыши, а не проходящий через фильтр Windows, чтобы обеспечить лучшее время реакции для игроков.
В патче 3.07, отправленном на Valorant, Riot Games упоминает новый параметр, называемый «Буфер необработанного ввода» для повышения производительности игры. Согласно Riot Games, новая бета-версия будет использовать интерфейсы прикладного программирования (API) устройств ввода для обработки входящей информации с них.
Raw Input был частью Valorant со дня его выпуска. Новый буфер необработанного ввода добавляется для настройки API с целью обеспечения незначительного улучшения стандартных устройств ввода.
Однако этот патч в основном нацелен на игровых мышей, которые могут достигать частоты опроса 8000 Гц, которая использовалась не поддерживаться до этого обновления. Игровые мыши, такие как Razer Viper 8KHz, выиграют от этого обновления, поскольку Valorant сможет быстрее регистрировать информацию с помощью мыши.
Буфер необработанного ввода, попросту говоря, улучшает производительность мыши в целом. Однако пользователи мышей с более высокой частотой опроса заметят значительное улучшение, в то время как те, кто использует стандартные мыши, не выиграют так сильно.
Однако использование Raw Input имеет свои недостатки. Если у игрока низкий уровень кадров в секунду (FPS), он сильно отстает от движения мыши в игре.
Тем не менее, это еще один способ улучшить взаимодействие с пользователем в такой высококонкурентной игре, как Valorant, и помочь сделать большинство инструментов, доступных игрокам.
Зарегистрируйтесь сейчас на турнире Dell Futurist Gaming: Valorant и получите шанс выиграть захватывающие призы!
Valorant сетевая буферизация что это
Новая неделя – и снова с вами мы! С прошлой недели наше сообщество серьезно выросло в размерах, и мы рады видеть новых игроков из Латинской Америки, Бразилии и Кореи в закрытой бете! Добро пожаловать! И раз уж вы начали играть в VALORANT, значит, у вас, наверное, полным-полно вопросов, и сегодня мы на них ответим.
Постараемся обойтись без длинных преамбул, ведь нам предстоит обсудить три большие темы. Первая тема – преимущество нападающего – очень важна для нас. Речь идет о том моменте, когда противник выбегает на вас из-за угла и, кажется, ведет стрельбу без потерь в точности. Об этом с вами поговорит Дэвид Стрейли, руководитель технического отдела.
Всем привет! Давайте же начнем.
Пока человечество не найдет способ двигаться быстрее скорости света, преимущество нападающего никуда не пропадет. Оно так или иначе присутствует во всех играх. Но наша цель – снизить его значимость в VALORANT. С философской точки зрения, чем меньше преимущество нападающего, тем большую тактическую глубину обретает мета игры.
Как его измерить?
Некоторые из этих переменных постоянны:
ИНТЕРПОЛЯЦИОННАЯ ЗАДЕРЖКА СЕТИ = 7,8125 мс (это «буферизация», которая позволяет сгладить позиционирование противников на экране; данный параметр можно изменить в меню настроек «Сетевая буферизация», если у вас низкая скорость подключения к сети).
ЧАСТОТА ОБНОВЛЕНИЯ СЕРВЕРА = 7,8125мс (1/128 сек. на серверах с тикрейтом 128).
СЕТЕВАЯ ЗАДЕРЖКА ДО СЕРВЕРА В ОДНУ СТОРОНУ зависит от расположения сервера, географического расположения вашего компьютера (или компьютера противника), а также путей маршрутизации Riot Direct. В долгосрочной перспективе, мы надеемся, что она не будет превышать 17,5 мс для 70% игроков. Мы пользуемся закрытой бетой для тестирования и улучшения игры, и хотя мы далеки от целевых показателей, мы видим постепенный прогресс.
ЧАСТОТА КАДРОВ КЛИЕНТА зависит от вычислительной мощности вашего компьютера; наша команда разработчиков, в свою очередь, старается оптимизировать частоту обновления серверов.
Сумма всех вышеуказанных значений равна преимуществу игрока, который нападает на вас из-за угла. Это то время, в течение которого игрок видит вас, пока вы еще не видите его.
Среднестатистическая скорость человеческой реакции – 247 мс, и это не шутка. В среднем преимущество нападающего в VALORANT составляет 40-70 мс, но даже такое время дает игроку значительную фору.
Вы наверняка сталкивались с ситуацией, когда противник убивал вас на бегу. На самом деле, с точки зрения противника и алгоритмов сервера, он стоял на месте.
Мы, разработчики, уже знаем об этой проблеме и ищем способы ее решения.
Для начала немного углубимся в вопрос.
Сетевая интерполяционная задержка (см. мой комментарий в прошлом разделе) вызывает рассинхронизацию между данными о передвижении и данными о получении урона продолжительностью в 7,8125 мс. Другими словами, когда вас убивают, для вас отображается позиция игрока, в которой он находился 7,8125 мс назад, а не та, из которой он действительно выстрелил.
Из-за этого может казаться, будто игрок двигался во время стрельбы, хотя на самом деле он стоял на месте. Эта проблема более распространена в тех случаях, когда игроки эффективно используют контр-стрейф, ведь благодаря развитым рефлексам они могут начать стрельбу спустя всего мгновение после такого выхода.
Как же разработчики собираются решить эту проблему?
А) Мы изучаем все параметры точности стрельбы в движении, пытаясь определить глубинный источник проблемы – возможность слишком быстро начинать точную стрельбу после движения или тот факт, что выстрелы в движении в некоторых случаях могут оказываться более точными, чем нам хотелось бы. Обо всех изменениях вы узнаете из описания нового патча.
B) Мы работаем над обновлением переходной анимации. Когда игроки останавливаются, нам хотелось бы ускорить процесс перехода анимации от «бега» к «статике». В данный момент анимация иногда отстает от совершаемых действий.
C) В момент вашей смерти ваш труп (обычно) заслоняет противника, из-за чего вам не видно, какие действия враг совершает сразу после вашей гибели. Мы собираемся устранить этот «трупный заслон» в ближайших патчах, чтобы вы всегда могли видеть противника. Это поможет вам определить, действительно ли он остановился в процессе движения.
E) Мы также думаем над предоставлением игрокам возможности отключать удаленную интерполяционную задержку – это избавит вас от 7,8125 мс рассинхронизации, но может вызвать появление «скачущих игроков» при потере пакетов. Средняя потеря пакетов бывает разной, но в целом она ограничивается 1-3%. В такой ситуации вы сможете наблюдать скачки в перемещении игроков раз в секунду. Это решение далеко от идеала. Мы протестируем варианты A и B (и, возможно, другие небольшие корректировки), а затем взглянем на результаты и решим, готовы ли пойти на столь радикальные меры.
Как бы нам ненароком целый роман так не написать. Ладно, переходим ко второй теме.
Да. Так, к сожалению, устроен интернет.
Если коротко, то нет. Низкий уровень задержек всегда лучше, так как ваши действия будут попадать на сервер быстрее, чем действия противника.
Единственная хитрость заключается в том, что игрок с высоким пингом усугубляет эффект преимущества нападающего для всех игроков. Но вы, как игрок с низким пингом, получаете точно такое же преимущество нападающего над игроком с высоким пингом, как и он над вами.
В целом условия равны, но удовольствия от такой игры мало. (** См. исключение в примечании ниже)
СОВЕТ: где между вами и врагами большая разница в пинге.
Играть с высоким пингом – далеко не лучший вариант, но таковы текущие обстоятельства, вызванные ограниченной численностью игроков в закрытой бете и еще не оконченным процессом создания инфраструктуры. Разработчики Riot заинтересованы в том, чтобы у всех был хороший пинг. Мы уже начали работать над усовершенствованиями, так что следите за дальнейшими новостями.
Если задержки асимметричны (то есть их уровень высок при передаче данных на сервер, но низок для потока к клиенту), то у игрок получает более ощутимое преимущество нападающего.
Этого наша команда разработчиков допустить не может. Отчасти в такой асимметрии виноваты мы (нам необходимо и дальше оптимизировать маршрутизацию до игровых серверов), а отчасти – сами игроки (те злоумышленники, что используют лаг-свитч). В будущем мы планируем заняться обоими аспектами этого вопроса.
Все еще с нами? Иан Филдинг, продакт-менеджер соревновательной команды VALORANT, обсудит с вами соревновательный режим VALORANT, а также ответит на вопрос, который, возможно, хорошо знаком команде Riot Games.
Почему в VALORANT не ограничен размер примейдов для участия в соревновательном режиме? Почему не сделать режим только для одиночек?
Для нас очень важно, чтобы соревновательный подбор игроков в VALORANT был направлен на стимулирование командной работы, ведь мы верим, что слаженное взаимодействие является важным критерием мастерства. И если у игроков есть группа друзей, с которыми они хорошо играют, то нам не хотелось бы препятствовать им и создавать ощущение, что вы можете по-настоящему испытать свои навыки только при игре в одиночку.
Если мы добавим режим только для одиночек, то он может стать главной проверкой способностей игрока и основным режимом соревновательной игры. Вместо этого мы решили дать игрокам самим определять размер своей команды. Мы также считаем важным то, что игроки уже сейчас начинают искать хороших союзников для соревновательных матчей, поскольку после выхода игры у них уже будут товарищи, на которых можно положиться.
Для тех, кто играет в одиночку или с небольшой группой, мы постарались сделать так, чтобы подбор игроков нашел вам игру со схожим размером примейда. Кроме того, во всех рангах (кроме наивысшего) работает система оценки личного уровня мастерства, которая определяет, насколько быстро должен повышаться или понижаться ваш ранг в зависимости от результативности. Таким образом, если вы играете особенно хорошо и делаете большой вклад в победу команды, то и ваш ранг будет расти быстрее.
Некоторые игроки беспокоятся, что для ускоренного повышения ранга необходимо увеличивать свой показатель KDA (соотношения убийств, смертей и содействий), однако такой подход совершенно не гарантирует победу команды.
Скажу вам прямо: победа или поражение в матче имеет наибольшее значение в определении вашего ранга. Если вы добиваетесь иной цели (к примеру, повышения показателя KDA), но проигрываете матчи, то ваш ранг будет падать.
Соревновательный режим уже в игре, но что же будет дальше?
Мы хотели поскорее запустить соревновательный подбор матчей в закрытой бете VALORANT, чтобы у нас была возможность узнать ваше мнение о режиме и начать его проработку вместе с вами. Мы получили много полезных отзывов и продолжаем активно разрабатывать изменения, которые нам необходимо внести до полноценного запуска соревновательного режима этим летом.
В краткосрочной перспективе наиболее важными пунктами в наших планах является облегчение прохождения калибровочных матчей в группе с друзьями и создание более наглядных значков рангов. В долгосрочной перспективе мы подумываем о добавлении прогресса рангов, а также ряда других предложенных вами функций. Ждите новостей в будущих выпусках!
И наконец, так как Пол Чемберлен, глава разработки античита VALORANT, так любит говорить о Vanguard, мы дали ему возможность поделиться небольшой новостью о том, как команда прислушалась к вашим отзывам.
Мы услышали отзывы игроков о том, что Vanguard слишком усердствует в обеспечении безопасности, поэтому решили несколько изменить подход к вопросу. С прошлой недели мы расширили совместимость Vanguard с другими уязвимыми приложениями. И хотя небольшое количество драйверов все еще блокируется, теперь почти все приложения, которые в прошлом конфликтовали с Vanguard, будут исправно работать, пока действует система защиты.
В будущем мы постараемся выбирать решения, которые бы минимально сказывались на функционале компьютеров, чтобы Vanguard, VALORANT и тот странный RGB-драйвер могли сосуществовать в мире и гармонии. Если же у нас это не получится, то мы скорее отключим саму игру, вместо того чтобы вмешиваться в работу других программ. Только в самых крайних случаях мы можем попытаться заблокировать работу приложения на вашем компьютере.
Мы продолжаем совершенствовать Vanguard и призываем вас делиться с нами отзывами и дальше, чтобы мы могли принимать оптимальные решения. Так что, пожалуйста, не забывайте делиться с нами своим мнением о наших мерах борьбы с читами, а мы постараемся, чтобы все (кроме читеров) остались довольны.
. В этот раз мы обойдемся без описания известных проблем, так как в статье только о них и шла речь (мы все еще активно боремся с просадками производительности клиента!). Увидимся на следующей неделе! 🙂
Анна Донлон и Джо Циглер
Исполнительный продюсер и директор игры
Анна (@RiotSuperCakes) указывает на проблемы, требующие решения, а Джо (@RiotZiegler) ищет способы решения этих проблем. Вместе они команда по. устранению проблем.
Оптимизация настроек Valorant
Valorant, новый мультиплеерный шутер от первого лица от Riot Games, за достаточно короткое время достиг немалой популярности. Несмотря на относительно скромные системные требования, в соревновательных играх важен каждый кадр в секунду. Поэтому в этом руководстве мы разобрали все настройки игры и выяснили, с какими параметрами играют профессионалы.
Мы не гарантируем, что эти настройки помогут вам справиться с такими проблемами, как вылеты игры, но у вас наверняка получится повысить частоту кадров и убрать лишние отвлекающие факторы.
Но для начала вам стоит убедиться, что ваша система удовлетворяет приведенным ниже системным требованиям. Если это не так, то у вас могут возникнуть проблемы с частотой кадров и даже вылеты. В таком случае мы настоятельно рекомендуем сделать апгрейд.
Минимальные системные требования
Рекомендуемые системные требования
Надеемся, ваш ПК удовлетворяет системным требованиям. Valorant не так требовательна к железу, поэтому с ней справится большинство современных машин. Начнем с наиболее очевидной оптимизации.
Обновите драйверы видеокарты
В преддверии выхода важных игр NVIDIA и AMD часто выпускают обновления драйверов, исправляющие проблемы с вылетами, низкой частотой кадров и другими ситуациями. Обязательно проверьте, установлено ли у вас последнее обновление драйверов. Это легко и не отличается от обновления любых других программ.
Откройте приложение AMD Radeon Software (для видеокарт AMD) или NVIDIA GeForce Experience (для видеокарт NVIDIA) и проверьте наличие обновлений. Если они доступны, скачайте и установите их. Выше можно увидеть скриншот NVIDIA GeForce Experience во время обновления.
По завершении загрузки просто кликните по зеленой кнопке Экспресс-установка – когда она закончится, можно приступать к дальнейшей оптимизации.
Лучшие настройки мыши
Большинство профессионалов снижает чувствительность. Последуем их примеру.
Мы рекомендуем пользоваться мышью с чувствительностью 400-800 DPI и установить значение чувствительности в Windows равным 6 (средняя).
Средний показатель eDPI (эффективной чувствительности) среди лучших игроков в Valorant составляет 250-280. Для подсчета своей eDPI вы можете воспользоваться специальным калькулятором.
Лучшие общие настройки
После оптимизации настроек мыши перейдем к остальным общим настройкам. Вот параметры, основанные на опыте профессиональных игроков.
Лучший прицел
Теперь перейдем к настройкам прицела. Конечно, идеального прицела для Valorant нет, но мы поможем сделать его очень хорошим.
Лучшие настройки графики
Перейдем к настройкам графики.
Мы настоятельно рекомендуем вам использовать монитор с частотой обновления 144 Гц или выше. Здесь представлен ряд отличных вариантов:
Оптимизация настроек Панели управления NVIDIA
Если у вас видеокарта NVIDIA, настройки Панели управления NVIDIA можно оптимизировать следующим образом:
Отлично! Теперь давайте установим ряд настроек специально для Valorant:
Если вы играете на ноутбуке, убедитесь, что в качестве предпочтительного графического процессора выбрана дискретная видеокарта NVIDIA.
Оптимизация настроек AMD Radeon
Если у вас видеокарта AMD, настройки можно оптимизировать следующим образом:
Оптимизация обновления Windows
Далее мы можем сделать простой шаг, который освободит немного ресурсов:
Отключение OneDrive
Мы также рекомендуем отключать OneDrive, если вы им не пользуетесь. Щелкните по значку OneDrive на панели задач правой кнопкой мыши и кликните Закрыть OneDrive.
Оптимизация Discord
Если во время игры вы пользуетесь Discord для связи, или он просто запущен, когда вы играете в одиночку, его тоже можно быстро оптимизировать. Вот как это делается:
Оптимизация Google Chrome
Если вы пользуетесь Google Chrome, аппаратное ускорение также стоит отключить:
Оптимизация электропитания
Можно повысить быстродействие, включив схему электропитания, ориентированную на высокую производительность. Вот как это делается:
Включить игровой режим
В Windows 10 есть так называемый Игровой режим, который мы рекомендуем включить:
Не стоит и говорить, что SSD существенно превосходят HDD, когда дело касается игр и быстродействия. Для лучших впечатлений от игры и минимального времени загрузки мы рекомендуем вам установить Valorant на SSD. Если на вашем ПК нет SSD, можно приобрести внешний.
Заключение
При помощи этого гайда по оптимизации вы можете существенно повысить значение и стабильность частоты кадров. Надеемся, что это поможет вам получать от игры в Valorant гораздо больше удовольствия.
Peeking into VALORANT’s Netcode
28 июля 2020 на официальном сайте Riot Games, посвященном технологическим решениям компании, вышла крутая статья «Peeking into VALORANT’s Netcode». Мы решили сделать вольный перевод этого труда. Но в силу того, что исходная статья является технической, мы предпочли оставить часть терминов именно в таком виде, как они звучат на английском. Конечно, в таком случае, мы просто обязаны были подготовить небольшой вводный словарь, который сделает статью более доступной для любого уровня читателей.
Вводные термины
Пики в VALORANT. Взгляд изнутри
На связи Мэтт де Вет, технический лидер игрового процесса в VALORANT, и Дэвид Стрейли, технический лидер проекта. Мы хотели бы рассказать вам некоторые детали задач, решаемых нами при борьбе с такими проблемами жанра FPS, как преимущество пикеров, плохая регистрация попаданий и дивергенция симуляций.
С самого начала разработки VALORANT при принятии решений наша команда старалась отвечать на два вопроса: что именно хотят игроки и как мы можем это реализовать, чтоб оправдать их ожидания?
Шутеры от первого лица – это то, что мы называем «алым океаном» возможностей. В этом жанре есть множество крутых игр. Мы выросли, играя в некоторые из них. Любая попытка создать шутер от Riot должна была отличаться от того, что есть на рынке, чтоб оправдать наши ожидания. Мы сделали огромные ставки на множество аспектов VALORANT, и одна из самых больших ставок сделана на постоянные инвестиции в соревновательную составляющую игры.
Мы понимаем, что основа соревновательной составляющей должна заключаться в понимании игры и умении реализовывать те или иные задумки. Интернет, работа клиента, сервера Riot и производительность компьютера в идеале не должны препятствовать игрокам иметь равные условия в каждом матче. Игра в VALORANT должна быть естественным продолжением навыков игрока.
В этой статье сначала будут рассмотрены цели, которые мы преследовали при написании сетевого кода VALORANT, а затем мы погрузимся в технические проблемы и способы их решения. Если вы хотите узнать больше, у нас есть статьи, рассказывающие о реализации античита и шейдеров.
Цели при проектировании VALORANT
Как и в случае разработки программного обеспечения, создание соревновательного тактического шутера заставляет находить компромиссы между многими и часто в какой-то мере противоположными целями проектирования. Давайте кратко рассмотрим некоторые из наших целей, связанные с сетевым кодом и соревновательной составляющей, а затем рассмотрим технические проблемы, с которыми мы столкнулись, и способы их решения, которые мы нашли.
Честные игры.
Мы хотим, чтоб любой игрок, решивший потратить своё время на освоение VALORANT, не чувствовал, что потратил его впустую. Это означает, что игры с читерами должны быть предотвращены, а несправедливые преимущества лучшего оборудования или сверхскоростного соединения должны быть минимизированы.
Задача: Спроектировать взаимодействие сервера и клиента так, чтобы ограничить возможности читеров.
Примечание: Для ограничения возможных типов читов VALORANT использует сетевую модель, где сервер является авторитетным. Таким образом, наше взаимодействие клиента и сервера спроектировано так, что сервер никогда не должен доверять клиенту, не проверив полученные от него данные.
Плавное и максимально отзывчивое движение.
Плавное, предсказуемое движение необходимо для того, чтоб игроки могли отслеживать своих соперников и максимально быстро давать ответную реакцию на их действия. Сервер отвечает за перемещение игроков, но мы не можем просто отправлять ваши данные на сервер и ждать, пока сервер ответит, где вы находитесь. Вместо этого, клиент локально прогнозирует ответ сервера на ваши отправленные данные и показывает вам результат.
Задача: Прогнозирование вашего движения на стороне клиента позволяют получить четкий отклик с низкой задержкой когда вы управляете своим агентом, но это может вызывать проблемы, если локальный прогноз не совпадет с симуляцией сервера. Если данные, отправленные на сервер, не проходят его проверку, сервер выдает исправления, чтоб вернуть синхронизацию между собой и клиентом. Это может привести к передвижению рывками как самого игрока, так и тех, кого он видит. Наша задача – предотвратить ситуации, когда серверу приходится вносить подобные исправления, а также минимизировать влияние этих ситуаций на игровой процесс в случае, если они неизбежны, например из-за потери пакетов или высокого пинга.
Задача: сервер должен регистрировать все выстрелы, производимые вами, а также давать вам возможность понять, куда именно попали выстрелы в случае промаха.
Преимущество у игроков, удерживающих позиции.
Основным принципом в жанре тактических шутеров является идея того, что игрок, владеющий некоторой территорией, должен в среднем иметь преимущество перед игроком, которому эту территорию необходимо захватить. Это называется преимуществом холдера (holder’s advantage), и оно имеет решающее значение для некоторых ключевых моментов игрового процесса в тактических шутерах. Например, стимулирует правильно собирать информацию о местонахождении соперника или его отсутствии, перемещаться скоординировано, технично проверять углы и своевременно использовать способности. Всё это необходимо, чтоб нивелировать преимущество холдера.
Задача: информация о том, что один игрок заглянул за угол, отправляется с клиента на сервер, а затем с сервера отправляется остальным игрокам. В том числе тем, которые защищаются. По-умолчанию это даёт преимущество во времени для выстрела тому, кто атакует. С этой проблемой сталкивается любой онлайновый шутер. Её обычно называют преимуществом пикера (peeker’s advantage). И она полностью противоречит основной идее тактических шутеров, где преимуществом должен обладать тот, кто защищает территорию.
Поддержка широкого спектра настроек и конфигураций.
Мы хотели бы, чтоб игроки могли соревноваться в умении играть в VALORANT, даже если их интернет или технические характеристики компьютера имеют высокий потенциал для улучшения.
Задача: предоставить каждому игроку наилучшие возможности для реализации своих умений, оптимально используя конфигурацию его компьютера и скорость соединения. Не менее важно, мы стараемся сделать так, чтоб проблемы с сетью и производительностью одного игрока не влияли на девять других игроков. Когда вы играете в VALORANT, вы должны чувствовать, что рядом с вами находятся игроки, использующие самую современную игровую технику.
Технические детали
Давайте теперь обсудим некоторые из подходов к решению задач, обозначенных выше.
Мы рассмотрим четыре проблемных области: уменьшение преимущества пикера, минимизация расхождений между симуляциями сервера и предсказаниями клиента, обработка сражений на сервере, решение проблем на стороне клиента.
Уменьшение преимущества пикера
Преимущество пикера – это артефакт всех сетевых игр, который часто является предметом дискуссий о честной соревновательной составляющей в тактических шутерах. Этот артефкат работает, например, для всех ситуаций, когда один игрок пытается заглянуть за угол. При этом он имеет преимущество перед игроком, который находится в углу уже некоторое время.
Давайте посмотрим картинку, демонстрирующую преимущество пикера в действие (для большей наглядности мы преувеличили расхождение):
Если вы внимательно посмотрите на картинку, вы увидите, что есть несколько временных отрезков, когда игрок слева выходит из-за угла и замечает своего противника, а противник все еще не знает, что его оппонент существует! Эта сетевая рассинхронизация несет негативное влияние на весь игровой процесс и противоречит нашим целям проектирования.
Затрагиваемые цели игрового дизайна: честность игры, плавное движение, преимущество холдера.
Честная игра: преимущество пикера опережает передачу данных в сети
Давайте начнем с того, что происходит за кулисами, когда пикер встречается с холдером и производит выстрел.
Пикающий игрок увидит холдера, как только его клиент обработает входящие данные и предскажет его перемещение за угол.
Холдер не увидит движения пикера, пока не произойдут следующие события:
Прежде чем мы перейдем к математике, давайте поговорим об этих маленьких фиолетовых стрелочках.
Плавное движение: буферизация входящих данных
В контролируемой среде сервер и клиент могут использовать данные для изменения игрового мира сразу же после их получения. К сожалению, интернет – очень ненадежная среда. Пакеты данных часто приходят с большой задержкой, а иногда вообще не приходят. Если симуляция игрового мира выполнялась на основе последних доступных данных, она часто могла ожидать опаздывающие или потерянные данные, и была вынуждена предсказать то, что уже случилось. Неправильные прогнозы, связанные с рассинхронизацией симуляций сервера и клиента, приводят к артефактам, когда персонажи двигаются неестественно до того момента, как произойдет ресинхронизация.
Данный тип артефактов мешает достижению цели, связанной с плавным движением. Он создает сложности при отслеживании игроком своего соперника. Фиолетовые стрелки на рисунке выше иллюстрируют буферизацию – общее решение для проблем сглаживания неравномерного потока входящих данных. Размер буфера может варьироваться по мере поступления входящих данных, обеспечивая при этом плавный поток исходящих данных для любой последующей обработки.
Неинтерактивные приложения, например, стриминговые сервисы, могут делать размер буфера очень большим, чтобы скрыть задержки или даже перебои в работе сети. С играми в реальном времени другая ситуация: буферизация позволяет сгладить проблемы с сетью, но при этом накладывает на игрока задержку во времени перед тем, как он увидит измененное состояние игрового мира. Таким образом, используя буферизацию, нам приходится находить лучшее соотношение плавности изображения и минимального размера задержки для игроков.
Для простоты будем считать, что буферизация включает в себя время от начала действия, полученного из сети, до момента, когда это действие будет обработано (визуализация на экране для клиента или применение данных на сервере для новой симуляции). Длительность буферизации напрямую зависит от тикрейта сервера (или частоты рендеринга на стороне клиента) по следующим причинам:
Это означает, что предоставление серверов с высоким тикрейтом и оптимизация производительности клиента помогают уменьшить буферизацию, а значит, позволяют видеть изменения в игровом мире максимально быстро.
Преимущество холдера: измерение честности через время реакции
Давайте вернемся к рисунку и сосредоточим внимание на факторах, которые приводят к получению преимущества пикером.
Чтобы сделать исход столкновений как можно более справедливым, мы должны минимизировать преимущество во времени реакции пикера перед холдером. Для этого нам необходимо сначала выразить преимущество пикера, установив его зависимость от времени реакции пикера и максимального времени, в течение которого холдер может отреагировать до того, как его персонаж будет убит.
Чтобы игрок выиграл сражение, его выстрел должен быть обработан на сервере раньше, чем выстрел оппонента. Желтая дорожка на картинке показывает, как пикер перемещается, замечает соперника и отправляет информацию о выстреле на сервер. Синяя дорожка показывает отрезок времени между тем, когда холдер замечает пикера, и последним моментом, когда он может сделать выстрел до того, как пикер убьет его персонажа.
Если записать условие «выстрел холдера должен обрабатываться раньше смерти его персонажа» в виде неравенства, оно будет выглядеть следующим образом:
Выразим время реакции холдера (ReactionTime holder) через остальные переменные: