Как сделать рассинхрон интернета в игре

Добавил пользователь Skiper
Обновлено: 19.09.2024

Гугл не помог
Решил написать для тренировки танчики онлайн.
Сервер на Java клиент на AS3.

Смысл клиента:
При нажатии кнопки в флаг танка устанавливается определённый бит. Езда, поворот, стрельба.
Есть функция получение следующей координаты используя текущую скорость и положение + флаг движения.
В функции Update раз в 40 мс вычисляется следующая координата и спрайт двигается в неё.

Сервер хранит пинг каждого игрока и максимальный пинг к игрокам.
Сервер каждую секунду проверяет пинг и синхронизирует время сервера и клиента.
После установки или снятия флага информация отправляется на сервер.
Информация: флаг, положение танка через n шагов с текущими координатами и флагом, для устранения сетевой задержки. Вычисляется путём сложения времени прохода пакета до сервера и от сервера клиенту с максимальным пингом.
Дальше сервер шлёт всем клиентам информацию о танке и время отправки пакета.
Клиенты проверяют как только время + максимальный пинг настало — применяют новый флаг и выставляют просчитанные вперёд координаты.

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

Как вообще добиваются синхронизации в онлайн играх?

да есть и много я ваще

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

P.S.Пробовали наоборот,теперь я лагал а у него все норм.

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

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

  • правой кнопкой мыши по рабочему столу
  • разрешение экрана
  • дополнительные параметры
  • монитор

У всех должно стоять 60 кадров.

В Семерке это делается так:

  • правой кнопкой мыши по рабочему столу
  • разрешение экрана
  • дополнительные параметры
  • монитор

У всех должно стоять 60 кадров.

У друга отключена.Проверили,60гц у обоих

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

С интернетом все в порядке(загрузка в стиме or торренте

10мб/c),компьютеры тоже достаточно мощные для террарии,играем на лицензии в стиме

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

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

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

А как это можно сделать.

Но 4-5днями ранее было все отлично,а сейчас вот такая ересь

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

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

Эх. жаль,но все равно спасибо за то,что попытались помочь мне 😉

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

Если Вы еще тут, то могу предложить еще один способ решения этой проблемы. Дайте знать, если Вы все еще тут, пожалуйста.

Супер-пупер школа программирования

Исследование идеального UI Framework’а, программирование игр, веб-программирование, задачи и решения

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

Реальное и игровое время

Будем различать понятия реального времени и игрового времени. Реальное время — это время в формате h:m:s.ms, в котором мы живем и которое сейчас у нас на часах. Игровое время — это количество прошедших итераций игры. То есть у каждой игры в реальном времени есть свой внутренний таймер, который отмеряет игровые итерации. Ускорение и замедление игры вызывает увеличение и уменьшение частоты таймера игрового времени соответственно.

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

Реальное время 15:00:00.000. Игровое время — 0. Начинается игра.
Реальное время 15:00:10.000. Игровое время — 1000. Игрок нажимает на паузу.
Реальное время 15:00:30.000. Игровое время не изменилось — 1000. Игрок продолжает игру.
Реальное время 15:00:40.000. Игровое время — 2000. Игрок ускоряет игру в 2 раза.
Реальное время 15:00:50.000. Игровое время идет быстрее — 4000.

Варианты синхронизации

Пусть имеется игра с частотой таймера игрового времени 100 раз в секунду. Пусть имеется сервер С и 2 клиента А и Б со скоростями доступа 20 мс и 200 мс соответственно (2 итерации и 20 итераций игрового времени). Протокол соединения поддерживает возможность передачи пакетов как от клиента к серверу, так и обратно.

Простейшая схема, которая приходит в голову: в один и тот же момент реального времени игровое время на разных хостах совпадает. То есть хосты идут синхронно, параллельно друг другу.

Если клиент А отдает команду, что персонаж хочет идти вперед, то на сервер посылается запрос. Проходит (t) итераций игрового времени. В момент получения запроса (t0) сервер может пойти тремя путями:

Рассмотрим эти схемы более подробно.

Синхронный вариант с предсказанием

Игровое время — 0. Клиент А отдает команду. Посылается запрос на сервер. Клиент А сразу начинает двигать персонаж, не дожидаясь ответа от сервера.
Игровое время — 2. Сервер принимает пакет. Сервер представляет, что в момент 0 выполнилась данная команда и воспроизводит историю до текущего момента. Сервер отправляет пакет на клиент Б.
Игровое время — 22. Клиент Б принимает пакет. Он пытается воспроизвести историю событий до текущего момента и показывает ее на экране.

  • Клиент А выполняет действие сразу, безо всякой задержки
  • История воспроизводится дважды, что может привести к рассинхронизации и багам
  • На клиенте Б в момент приема пакета проявляется жестокий лаг, как персонаж А прыгает
  • Система поддается взлому. Достаточно клиенту А послать запрос с указанием очень давнего момента времени, как вся история игры пересчитывается, как вам угодно. И сервер ничего не может с этим поделать. Он всего лишь воспроизводит команды по просьбе клиента. А в реальности игровым процессом управляет клиент

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

Простой синхронный вариант

Игровое время — 0. Клиент А отдает команду. Посылается запрос на сервер. Клиент А ждет ответа от сервера.
Игровое время — 2. Сервер принимает пакет. Сервер выполняет команду в момент 2 и рассылает клиентам сигнал о событии.
Игровое время — 4. Клиент А принимает пакет. Он пытается воспроизвести историю событий до текущего момента и показывает ее на экране.
Игровое время — 22. Клиент Б принимает пакет. Он пытается воспроизвести историю событий до текущего момента и показывает ее на экране.

  • Система устойчива к взлому. Все действия изначально порождаются на сервере и запросы от клиента к серверу не содержат информации об игровом времени
  • Лаги уменьшаются в 2 раза по размеру
  • История все еще воспроизводится на клиентах, что может привести к рассинхронизации и багам
  • Лаги проявляются на всех клиентах, даже на клиенте А, несмотря на то, что он спровоцировал событие

Синхронный вариант с перестраховкой

Игровое время — 0. Клиент А отдает команду. Посылается запрос на сервер. Клиент А ждет ответа от сервера.
Игровое время — 2. Сервер принимает пакет. Сервер, зная наибольшее время доставки пакета — 20 итераций, рассылает клиентам информацию о том, что в момент 22 происходит событие.
Игровое время — 4. Клиент А принимает пакет. Он запоминает, что в момент 22 персонаж двинется вперед.
Игровое время — 22. Клиент Б принимает пакет. Везде синхронно обрабатывается событие, как на сервере, так и на клиентах.

  • Система устойчива к взлому. Все действия изначально порождаются на сервере и запросы от клиента к серверу не содержат информации об игровом времени
  • Лагов нет, история не воспроизводится
  • Приходится постоянно держать свежую информацию о пинге всех клиентов
  • Наличие всего лишь одного клиента с большой задержкой дает задержку на всех клиентах — даже клиент А с хорошей сетью вынужден ждать 220 мс до совершения действия
  • Система слабо устойчива к вариациям пинга. Что, если пакет идет до клиента Б не 20 итераций, а 25? Прийдется как-то исхитряться, воспроизводя историю этих 5 итераций

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

Асинхронная синхронизация

Ядром такого типа синхронизации является тезис о том, что игровое время в один и тот же момент реального времени на разных хостах разное. При этом сервер всегда впереди, а клиенты отстают от него на время доставки к ним пакета от сервера.

Как такое возможно? Очень просто! Достаточно периодически отмерять пинг каждого клиента и отодвигать клиенты в игровом времени на то самое время передачи пакета от сервера к клиенту. Представьте, что перед вами рядом стоят клиенты А и Б. И вы ясно видите, что все действия на клиенте А совершаются на 180 мс раньше, чем на клиенте Б. Это сыграет ключевую роль в протоколе. Сразу обратимся к примеру и все станет ясно.

Игровое время: С/А/Б — 100/98/80. Клиент А отдает приказ о движении вперед. Отправляется запрос на сервер и ожидается ответ.
Игровое время: С/А/Б — 102/100/82. Сервер принял пакет. Сервер выполняет команду и начинает двигать персонаж вперед в 102 момент времени. Сервер рассылает информацию об этом клиентам.
Игровое время: С/А/Б — 104/102/84. Как раз в 102 момент игрового времени клиент А принял пакет о том, что в 102 момент времени персонаж начинает идти вперед . Клиент сразу реагирует на событие и воспроизводит команду.
Игровое время: С/А/Б — 122/120/102. Как раз в 102 момент игрового времени клиент Б принял пакет о том, что в 102 момент времени персонаж начинает идти вперед. Клиент сразу реагирует на событие и воспроизводит команду.

Задержка на клиенте А от момента нажатия на кнопку до выполнения действия составила 4 итерации, то есть как раз пинг — то самое время, которое пакет идет от клиента к серверу и обратно.

Игровое время: С/А/Б — 100/98/80. Клиент Б отдает приказ о движении вперед. Отправляется запрос на сервер и ожидается ответ.
Игровое время: С/А/Б — 120/118/100. Сервер принял пакет. Сервер выполняет команду и начинает двигать персонаж вперед в 120 момент времени. Сервер рассылает информацию об этом клиентам.
Игровое время: С/А/Б — 122/120/102. Как раз в 120 момент игрового времени клиент А принял пакет о том, что в 120 момент времени персонаж начинает идти вперед. Клиент сразу реагирует на событие и воспроизводит команду.
Игровое время: С/А/Б — 140/138/120. Как раз в 120 момент игрового времени клиент Б принял пакет о том, что в 120 момент времени персонаж начинает идти вперед. Клиент сразу реагирует на событие и воспроизводит команду.

Задержка на клиенте Б от момента нажатия на кнопку до выполнения действия составила 40 итераций, то есть как раз пинг — то самое время, которое пакет идет от клиентак серверу и обратно.

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

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

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

Добрый день %USERNAME%.

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

Ах да, жанр пусть будет платформер.

  • Вопрос задан более трёх лет назад
  • 7192 просмотра

Если брать CounterStrike, то там работает следующая логика

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

Ситуация на сервере и в клиенте немного асинхронная, игрок может изменить свое местоположение в клиенте, но сервер узнает про это только через время.

В первую очередь специалисты указали оптимальное значение пинга для онлайн-игр. Отличный показатель здесь — менее 20 мс. От 20 до 50 мс считается хорошим результатом. При пинге выше 50 мс можно обнаружить лаги.

В первую очередь TechSpot советует использовать для подключения всё-таки кабель Ethernet. Нужно убедиться, что порт поддерживает скорость до 1000 Мбит/сек, а сами кабели принадлежат категории Cat 5e или Cat 6.

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

Также для Wi-Fi рекомендуют настроить правильный канал. Диапазон 2,4 ГГц часто является самым переполненным. Поэтому можно перейти на 5 ГГц. Впрочем, лучше протестировать в обоих диапазонах.

Также можно воспользоваться функцией Quality of Service (QoS). Она позволяет предоставить различные приоритеты различным классам трафика. Можно выбрать определённые игры или устройства.

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


Steam Link от Valve — это простой и удобный способ передавать игры с компьютера на телевизор в любой точке вашего дома. Вы подключаете Steam Link к своему ПК через HDMI, подключаете контроллер и играете. Он использует потоковую передачу Steam In-Home , которую вы можете использовать с любым ПК, но Steam Link предлагает дешевый оптимизированный потоковый приемник, который вы можете подключить к телевизору.

Как настроить ссылку на Steam

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

Во-вторых, подключите Steam Link к источнику питания с помощью прилагаемого адаптера питания, а затем подключите его к телевизору с помощью прилагаемого кабеля HDMI.

В-третьих, подключите контроллер Steam , любую USB-клавиатуру и мышь, проводной или беспроводной контроллер Xbox 360, проводной контроллер Xbox One или беспроводной геймпад Logitech F710 к порту USB на Steam Link для управления им. Steam Link имеет три порта USB, поэтому вы можете подключить до трех устройств. Вы также можете подключить беспроводные устройства к Steam Link через Bluetooth позже.

Когда вы закончите с этими основами, включите телевизор и переключите его на вход HDMI, к которому подключен Steam Link.


Используйте инструкции на экране, чтобы настроить Steam Link и подключиться к ПК, на котором запущен Steam. Процесс быстрый и простой и включает в себя подключение к сети Wi-Fi (если вы не используете Ethernet), настройку некоторых основных настроек изображения и выбор ПК в сети, на котором работает Steam. Вам будет предложено ввести код, отображаемый на вашем телевизоре, в Steam на вашем ПК, чтобы подтвердить процесс сопряжения.




Как улучшить вашу потоковую производительность

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

Если вы не можете использовать проводные кабели Ethernet, Valve рекомендует использовать Wi-Fi 5 ГГц . Это означает, что вы должны подключить как игровой компьютер, так и Steam Link к сети Wi-Fi 5 ГГц вместо сети 2,4 ГГц. Если ваш маршрутизатор не поддерживает Wi-Fi 5 ГГц, вам следует серьезно подумать об обновлении. Беспроводное соединение будет немного более нестабильным и медленным, чем проводное, но оно все еще может работать. Это действительно зависит от вашей общей настройки и игр, в которые вы играете.

Steam Link поддерживает беспроводную связь 802.11ac , хотя 802.11n также работает. Однако использование беспроводной сети 802.11ac с частотой 5 ГГц идеально, если вам необходимо использовать беспроводную сеть.




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

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



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

Как играть в не-Steam игру на Steam Link

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


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

Как быстро убрать рассинхрон в игре - искусственно уравнять связь с серваками

Почему происходит рассинхрон? Из -за расстояния игрока до сервера, из-за мощностей самого сервера, компа, провайдера и много еще чего. Из-за этого разница связи у игроков огромная. У некоторых 5 мс, у других 200. А так как всех обеспечить 5 мс невозможно, зато можно обеспечить 200 мс всех, искусственно занижая скорость всем игрокам, которые имеют лучшую связь. Тогда прощай рассинхрон, не будет иметь значения на каком серваке люди играют, у всех будут равные условия для игры. (200 мс - это условно, думаю 100 -130 мс это приемлемо)

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


Почему происходит рассинхрон? Из -за расстояния игрока до сервера, из-за мощностей самого сервера, компа, провайдера и много еще чего. Из-за этого разница связи у игроков огромная. У некоторых 5 мс, у других 200. А так как всех обеспечить 5 мс невозможно, зато можно обеспечить 200 мс всех, искусственно занижая скорость всем игрокам, которые имеют лучшую связь. Тогда прощай рассинхрон, не будет иметь значения на каком серваке люди играют, у всех будут равные условия для игры. (200 мс - это условно, думаю 100 -130 мс это приемлемо)

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

Поставить "затычку", режущую пинг, несложно. А как быть с теми у кого плавающий пинг? "Затычка" - это не регулятивный самонастраивающийся клапан и не сможет всем сделать на постоянку равнозначный пинг. Делать высокотехнологичное решение наш Локализатор не способен. Даже при наличии такого бреда побеждать будет тот у кого более адекватный маршрут до сервера ВФ. У меня был один провайдер. Результаты tracert поражали. До 25 узлов начиная с Мухосранска, проходили даже через Гамбург (Или Люксембург, хз зачем) и это всего лишь 2,5 тыщи от Златоглавой.

Вчера на мясе "стрелялся" с одним и тем же игроком (спауны они такие). Занимал несколько раз 2 место, а на первом один и тот же. При встрече с ним я отлетал в 80% случаев. Его не брал ФН Фал. Ни в голову ни в тушку. А он бегал с Хани Баджером и распиливал меня даже на стредне-дальней дистанции. Сначала было подозрение что он играет с овном (у них независимо от кривизны кода урон идёт всегда), а потом после одной из стычек где я стрелял ему точно в шишку, а он в это время стрелялся с другими двумя - реги не было. Я пострелял ему в шишку, в тушку, в шишку. А он преспокойно завалил тех двоих, повернулся ко мне и спилил меня в тушку. После катки я спросил его - МСК? Он подтвердил. Это к вопросу о том, что есть МСК игроки по которым регает через задницу.

Как избавиться от разрывов изображения в играх: о вертикальной синхронизации V-sync

Tearing

Разрывы кадров (известные также как тиринг, от англ. Tearing), словно некто порезал картинку в игре на части и неровно склеил, могут серьезно попортить нервы геймеру. Не дав вам возможности, не то что с головой погрузиться в игру, но и просто нормально ее пройти. Выглядит это так:


Чтобы понять, как бороться с разрывами изображения, нужно знать причину их появления. Тут все предельно просто — тиринг вызван отсутствием синхронизации работы видеокарты и монитора. То есть видеокарта генерирует кадры с непостоянной частотой (это называется FPS, фреймрейт). Скорость создания новых кадров зависит от сложности 3D-сцены в видеоигре. Монитор же способен выводить кадры только с фиксированной частотой. Вот из этого несоответствия и рождаются разрывы изображения.

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


Для плавной картинки, которую способно воспринимать человеческое зрение нужно минимум 25 к/с, иначе задержки становятся видны невооруженным глазом. Например, у вас монитор с частотой обновления 60 Гц (60 к/с). И слабенькая видеокарта, которая не справляется с генерацией кадров. Она не поспевает за монитором — тот обновляет картинку быстрее, чем видеокарта обрабатывает новые сцены. Поэтому, вместо нового целого кадра, который видеочип не успел создать полностью, монитору приходится показывать половину нового и половину старого кадра. Это и есть разрыв изображения.

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

Частота обновления монитора

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


Еще лучше разницу частоты обновления в мониторах демонстрирует данное видео.

V-Sync — вертикальная синхронизация


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

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

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

Казалось бы, все прекрасно. Врубай V-Sync и наслаждайся игрой. Но не тут то было. Подводные камни вертикальной синхронизации куда больше айсберга, потопившего легендарный Титаник. Большинство геймеров V-Sync выключают и терпят разрывы кадров. Почему?

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


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

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


Чем это хуже разрыва изображения? Тем, что в динамичной игре (особенно онлайн) а-ля CS Go или Doom Eternal вас просто подстрелят во время такого фриза. Или вы не сможете нормально прицелиться и совершить выстрел. Уж лучше разрыв кадра, чем пуля или в лоб или удар энергетическим топором по голове во время фриза. Мародер не даст соврать.



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

G-Sync — синхронизация от Nvidia


Плавность изображения – результат работы G-Synk. Кадры поступают на монитор сразу же после их полной отрисовки


Технология G-Sync избавляет геймера от разрывов изображения, зависаний картинки, рывков и артефактов, связанных с выводом кадров на монитор. Плавная быстрая цельная картинка — предел мечтаний true-геймера, но…

Во-первых, G-Sync имеет ограниченный диапазон использования, выраженный в FPS: от 30 к/с до 240 к/с. Максимальная планка зависит от вашего монитора. Например, 30–60 к/с для стандартного 60 Гц экрана. И если FPS упадет ниже границы и станет 25 к/с, то толку от G-Sync будет не больше, чем от обычной вертикальной синхронизации.

Во-вторых, воспользоваться G-Sync смогут только те пользователи, у которых и видеокарта, и монитор поддерживают данную технологию. И к тому же, оснащены популярным интерфейсом DisplayPort 1.2. И если с видеочипом все просто (G-Sync поддерживают все видеокарты, начиная с GeForce GTX 650 Ti Boost и выше), то монитор, возможно, придется сменить. А модели, поддерживающие данную технологию, стоят дороже, чем устройства без нее. Но и тут у нас есть альтернатива…

FreeSync — синхронизация от AMD


FreeSync — это аналог и ответ компании AMD на технологию Nvidia G-Sync. Она обеспечивает все те же прелести, что и ее предшественник, но за меньшую стоимость. Это объясняется тем, что G-Sync это запатентованная технология от Nvidia, использование которой требует лицензии (то есть дополнительных трат от производителей мониторов). FreeSync от AMD распространяется бесплатно.

Для ее использования вам понадобятся: подходящая видеокарта, монитор и интерфейс DisplayPort. Здесь подойдет видюха, начиная с серии Radeon HD 7000, выпущенной в 2012 году и любые новые экземпляры. Мониторов, поддерживающих данную технологию, тоже немало. И стоят они значительно дешевле, чем их G-Synk конкуренты. Еще один плюс FreeSync — увеличенный диапазон использования от 9 к/с до 240 к/с.

Отметим, что FreeSync можно запустить, даже имея на борту связку — видеокарта Nvidia+FreeSync монитор. Нужна лишь любая видеокарта Nvidia Geforce серии 10 (с архитектурой Pascal) и более новые, поддерживающие DisplayPort Adaptive-Sync. И немного сноровки для включения FreeSync в настройках NVidia.

Существует несколько уровней технологии FreeSync. На скриншоте хороша видна разница между ними.


Оценить разницу в ощущениях от изображения без вертикальной синхронизации, с ней, а также с G-Sync (на FreeSync будет аналогично) можно на видео ниже.

Когда целесообразно использовать G-Sync или FreeSync? Если у вас частота монитора существенно выше FPS. Например, у вас топовый 144 Гц монитор и устаревшая видеокарта выдающая, например, 30 к/с. В таком случае использование этих технологий эффективно и оправдано. Если ситуация обратная — современная видеокарта последних серий и монитор 60 Гц — читаем дальше.

FastSync и Enhanced Sync


Чтобы окончательно вас запутать в ворохе всех этих технологий, добавим, что существуют еще два вида синхронизаций — FastSync (быстрая синхронизация) от Nvidia и Enhanced Sync (улучшенная синхронизация) от AMD. Это две аналогичные технологии, которые условно можно назвать промежуточным звеном между V-Sync и G-Sync (FreeSync).

Преимущества быстрой/улучшенной синхронизаций налицо: они убирают разрывы и задержки изображения и при этом не требуют покупки нового монитора. Только наличие подходящей видеокарты. Для Fast Sync это видеокарты с архитектурой Pascal и Maxwell, включая Geforce GTX 1080, GeForce GTX 1070 и GeForce GTX 1060. Enhanced Sync поддерживается любыми графическими процессорами и их комбинациями на основе архитектуры GCN и (или) дисплеями с поддержкой технологии AMD Eyefinity.

Но и здесь есть свои ограничения. Чтобы вышеупомянутые технологии приносили толк, нужно чтобы FPS был значительно выше, чем частота монитора. Например, при FPS 120 к/с и частоте монитора 60 Гц использовать быструю/улучшенную синхронизацию имеет смысл.

Кому это нужно? Обладателям мощных видеокарт и стандартных мониторов 60 Гц. Если монитор 144 Гц, а видеокарта устаревшая и выдает FPS в 75 к/с, то FastSync и Enhanced Sync вам не нужны. Здесь необходимо использовать G-Sync или FreeSync.

Важный момент! Технологии синхронизации могут работать в связке, выдавая максимальную плавность картинки и отсутствие задержки.FastSync+G-Sync, Enhanced Sync+FreeSync — это лучшие на сегодняшний день сочетания, гарантирующие великолепные впечатления от игрового процесса.

Стоит знать еще и то, что быстрая синхронизация (Fast Sync) пока не поддерживается для игр DX12.

Артефакты изображения

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


Вот здесь на скриншоте явно не артефакт изображения:


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

Что можно сделать, чтобы избавиться от артефактов программно:

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

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

  • Физическое повреждение видеокарты. На глаз определить сложно (если вы не специалист). Например, вздувшиеся конденсаторы заметить можно, (они видны далеко не на всех видеокартах), а вот отслоение графического чипа вы вряд ли заметите.
  • Недостаток питания. Мощные видеокарты требуют дополнительного питания. Вставить ее в слот на материнке одно, другое — нужно дополнительно подключить к блоку питания. И может оказаться так, что новую видюху старый БП просто не тянет. Чаще всего видеокарта просто откажется работать, но функционирование вполсилы с артефактами потенциально возможно.
  • Неисправность материнской платы или центрального процессора. Могут вызывать проблемы с изображением, только если видеокарта встроенная. Последние — для гейминга не лучший вариант, но для старых игр — вполне сгодятся.

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

Заключение

Если вы заядлый геймер или киберспортсмен и сталкмиваетесь с вышеперечисленными проблемами, то покупка монитора с частотой 144 Гц (и выше) с поддержкой G-Sync или FreeSync технологии + соответствующая видеокарта — вопрос решенный.

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

Читайте также: