Почему прицел запаздывает

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

Твоя мышь может отчитываться не с той частотой, что написана на коробке, и это первое, что стоит измерить, а не предположить. Мышь «на 1000 Гц», сидящая на общем USB-контроллере или на длинном хабе без питания, способна выдавать меньше отчётов, чем заявлено, — а сколько она выдаёт на самом деле, измеряется на твоей машине примерно за пятнадцать секунд.

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

Заявленная частота и измеренная частота — это разные числа

USB-устройство ввода само просит хост опрашивать его с определённой частотой. Просьба лежит в поле дескриптора конечной точки под именем bInterval, и справочник Microsoft говорит прямо: «This value reflects the device's configuration in firmware. Drivers cannot change it.» На устройстве full-speed bInterval, равный 1, означает один опрос за кадр длиной 1 миллисекунда; на устройстве high-speed интервал считается в микрокадрах, по восемь на миллисекунду.

Это просьба. А что ты получишь, зависит от линии, контроллера, драйвера и политики питания между ними. Поэтому два числа надо читать рядом — и w0a показывает их рядом:

Страница «Главная»: живые частоты и температуры процессора и видеокарты, частота опроса мыши, измеренная по реальному движению, и то, что за машина перед тобой.
Страница «Главная»: живые частоты и температуры процессора и видеокарты, частота опроса мыши, измеренная по реальному движению, и то, что за машина перед тобой.

Оба показания берутся из потока сырого ввода и размечаются по высокоточному счётчику производительности, а не по системным часам. Эта деталь важнее, чем звучит: обычный путь сообщений Windows объединяет движения мыши до темпа того окна, которое их читает, поэтому построенная на нём программа не отличит мышь на 1000 Гц от мыши на 125 Гц. Почему тест просит 12 секунд движения мышью — тот же аргумент подробнее.

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

Ровность важнее пика

Средняя частота отчётов прячет ровно то, что ты чувствуешь. А чувствуешь ты тот отчёт, который пришёл с опозданием.

Страница Тест задержки показывает по каждому устройству: Частоту отчётов, Самый короткий, Среднее, Медиану, Самые медленные 1% и Самые медленные 0,1%, а вдобавок строку разброса, которая раскладывает каждый интервал по трём корзинам — вовремя, с опозданием (1,5–3× твоей собственной медианы) и потерян (свыше 3×). Пороги намеренно считаются от твоей собственной медианы. Машина, которая равномерно медленная, и машина, которая в основном быстрая, но со всплесками, — это разные проблемы, и фиксированное число эту разницу спрятало бы.

Мышь, честно отчитывающаяся на 1000 Гц, у которой 2% интервалов попали в корзину «потерян», во флике будет ощущаться хуже, чем мышь на 500 Гц, у которой таких интервалов нет вовсе. Ровно поэтому страница печатает распределение, а не одну цифру.

Шесть причин и как исключить каждую из них

1. Порт, хаб и контроллер

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

  1. Переставь мышь в порт на самой машине — лучше в такой, который не делит контроллер с занятым устройством. Страница USB-порты группирует устройства по контроллеру, за которым они сидят, и именно это превращает догадку в проверку.
  2. На время теста полностью убери мышь с хабов монитора, KVM и хабов без питания.
  3. Сними показание на Главной ещё раз. Если измеренный интервал стал короче или ровнее — оставляй новый порт.

2. Windows разрешили усыплять порт

Если первое движение после паузы ощущается тяжёлым, а дальше всё нормально, эту причину стоит исключить. Сама Windows так не делает: для мышей и клавиатур она держит выборочную приостановку выключенной, если о ней не просит само устройство или драйвер его производителя. Карточка Настройки питания USB-портов одним нажатием возвращает разрешения питания устройств ввода к значению Windows по умолчанию, а на странице USB-порты для отдельного устройства можно выбрать Не приостанавливать.

3. Беспроводная связь

Беспроводная мышь добавляет радиоперегон и приёмник со своим собственным расписанием. Современный фирменный приёмник не обязан быть медленнее кабеля; искать здесь стоит не постоянное смещение, а помехи — забитый диапазон 2,4 ГГц, приёмник, воткнутый сзади корпуса за металлической панелью, или донгл, делящий блок портов с устройством USB 3.

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

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

4. Ускорение указателя и скорость указателя

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

Что делает w0a: на странице Оптимизации есть переключатель, который выключает ускорение, записывая MouseSpeed, MouseThreshold1 и MouseThreshold2 в 0 под HKCU\Control Panel\Mouse, и выпрямляет кривую указателя так, чтобы один отсчёт двигал курсор на одну единицу.

Чего он намеренно не делает: он никогда не пишет MouseSensitivity. Скорость указателя на рабочем столе — твоя настройка, и программа тонкой настройки, которая молча её меняет, ломает то, что выбрал ты. Если её всё-таки менял более старый инструмент, Мышь, клавиатура и тачпад вернёт значения Windows по умолчанию — включая ускорение, которое по умолчанию в Windows включено.

Шутеры, которые для прицеливания читают сырой ввод, и CS2 среди них, игнорируют кривую указателя Windows, так что выключение ускорения — это в основном про рабочий стол и про меню. Сделать это всё равно стоит, но промахи во фликах не из-за него.

5. DPI и внутриигровая чувствительность — это одно число, а не два

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

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

6. Сенсор, поверхность и собственное сглаживание игры

Высота отрыва, бликующий или грязный коврик, сенсор, которого просят работать за пределами его скорости слежения, — всё это даёт ровно то ощущение «прицел уехал не туда», и программа не видит этого вообще. Ни один драйвер не читает достоверность сенсора; Windows получает отчёт о движении и никак не может узнать, что он был неверным. Если измеренная частота отчётов ровная, а прицел всё равно ощущается непредсказуемым, вычисти поверхность и попробуй другой коврик, прежде чем менять ещё одну настройку.

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

Прогон, который ты действительно можешь сделать

  1. Открой Главную, поводи мышью кругами несколько секунд и запиши показание Частоты опроса мыши — интервал в мс и процент ровности.
  2. Открой Тест задержки, отработай все 12 секунд с движением и запиши Частоту отчётов, Медиану, Самые медленные 1% и три процента разброса.
  3. Поменяй одну вещь: порт, положение приёмника, хаб, настройку питания.
  4. Повтори шаг 2 точно так же и сравни. То же движение, та же длительность — иначе ты сравниваешь две разные вещи.
  5. Оставляй изменение, только если цифры сдвинулись. Не сдвинулись — откатывай; карточки Мышь, клавиатура и тачпад на странице Fix существуют ровно для этого.

Чего программа здесь не может

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

Похожие статьи

Из примерно дюжины этапов между кликом и сменой пикселя программе принадлежат три, остальное принадлежит прошивке, монитору и игре: Как уменьшить input lag в CS2 и других играх: что может программа, а что нет

w0a не меняет ни одной настройки Windows, пока ты не попросишь, а твик сохраняет старое значение, прежде чем записать новое. Сообщить мне

Эта страница помогла?

Чего не хватило или что не сработало? Мы читаем каждый такой ответ.

Если эта страница не решила проблему, напиши нам — скажи, какую статью ты читал, и мы её исправим.