Разговор о настройке мыши обычно сводится к заученным числам: кто-то играет на 400 DPI, кто-то клянется 1600, а в настройках Windows у всех стоит один и тот же ползунок на середине. За этими цифрами скрывается вполне строгая математика, которая решает, попадёт ли перекрестье именно туда, куда игрок вёл рукой, или уедет на пару пикселей мимо. Статья разбирает всю цепочку от оптического сенсора до пикселя на экране: что такое CPI и почему маркетинговое "DPI" называет вещь не тем именем, как работает стек ввода Windows, что делает ползунок скорости указателя и кривая ускорения, чем грозит пиксел-скиппинг при неудачной комбинации настроек и как измерить реальное разрешение сенсора домашними средствами. Всё это вопросы инженерии, а не привычки, и ответы на них проверяются линейкой, таймером и несложной арифметикой.
CPI как истинное имя того, что все называют DPI
Начнём с терминологической небрежности, которая закрепилась на каждой коробке игровой мыши. Надпись "16000 DPI" строго говоря неверна: DPI, dots per inch, это параметр печати и сканирования, то есть плотность точек на дюйм отпечатка или отсканированного документа. Сенсор мыши ничего не печатает и не сканирует в полиграфическом смысле. Правильная единица - CPI, counts per inch, число отсчётов, которые сенсор выдаёт при перемещении мыши на один дюйм по поверхности. Мышь с 800 CPI при движении на один дюйм формирует восемьсот отдельных сообщений о смещении; мышь с 1600 CPI на том же дюйме выдаёт вдвое больше отсчётов. Это разрешение измерительного прибора, а не "скорость" и не "чувствительность" в бытовом смысле.
Сам сенсор устроен как крошечная высокоскоростная камера. В нише под мышью светодиод или лазер подсвечивает микрорельеф коврика, а чип снимает этот рельеф с частотой в тысячи и десятки тысяч кадров в секунду. Каждый новый кадр сравнивается с предыдущим, и встроенный процессор вычисляет вектор смещения по сдвигу текстуры. Никаких линз, "видящих дюйм", нет: есть поток снимков и алгоритм корреляции изображений, и число CPI задаёт, на сколько счётных единиц дробится один дюйм этого смещения. Современные сенсоры вроде HERO или Focus Pro добавляют сюда аппаратную фильтрацию дрожания и слежение за подъёмом, но базовый принцип за последние два десятилетия не изменился.
Важный практический вывод: CPI - это единственное место в цепочке, где измерение происходит с гарантированным физическим смыслом. Всё, что происходит дальше, - умножение и преобразование этих отсчётов. Поэтому грамотная настройка прицеливания начинается с выбора честного аппаратного разрешения, а не с подгонки ползунков.
Цепочка ввода от сенсора до пикселя
Отсчёты сенсора не попадают в игру напрямую. Сначала контроллер мыши упаковывает их в USB-отчёты и отправляет с заданной частотой опроса, polling rate. Классические значения - 125, 500, 1000 Гц, а новейшие модели подняли планку до 2000, 4000 и даже 8000 Гц. При 125 Гц компьютер получает восемь пакетов данных за сотую секунды, то есть обновление каждые восемь миллисекунд; при 1000 Гц - каждую миллисекунду. Данные внутри пакета аккумулируются: если за миллисекунду мышь проехала четыре сотых CPI-отсчёта, они суммируются в один отчёт.
Дальше отчёты уходят в стек ввода Windows. Драйвер HID передаёт сырые приращения в подсистему USER, где к ним применяется масштабирование, заданное ползунком скорости указателя в панели управления мыши. Только после этого координаты курсора или события движения доходят до приложения. Игры, использующие raw input, забирают данные до масштабирования Windows, поэтому системный ползунок для них часто безразличен, но не всегда: часть движков и почти вся оконная чувствительность зависят от системной обработки.
Ключевой факт о стеке - его мультипликативность. Итоговое смещение прицела на экране равно произведению нескольких коэффициентов: аппаратного CPI, системного множителя Windows, внутриигровой чувствительности и масштаба обзора. Изменение любого множителя можно компенсировать другим, и итог будет тем же самым. Но промежуточные артефакты - квантование, ускорение, округление - у разных комбинаций различаются, и именно поэтому одни комбинации точно воспроизводят движение руки, а другие искажают его.
Ползунок Windows и кривая ускорения
Ползунок скорости указателя в Windows имеет одиннадцать делений, и это не плавная шкала, а дискретный набор фиксированных коэффициентов. Шестое деление соответствует коэффициенту ровно 1,0: один отсчёт от мыши превращается в одну единицу смещения указателя. Деления ниже шестого дробят вход - 0,5 и меньше, деления выше умножают - до 1,5, 2,0 и выше на самом правом положении. Исторически в техническом освещении этой темы коэффициенты выше единицы реализованы не честным умножением, а отбрасыванием части отсчётов с периодическим добавлением лишнего шага, что само по себе вносит неравномерность. Поэтому любая позиция, кроме шестой, - это компромисс точности.
Отдельная история - флажок Enhance pointer precision, который в русской локализации называется повышенной точностью установки указателя. Название обманчиво: включённый флажок активирует кривую ускорения, и итоговый коэффициент начинает зависеть от скорости движения мыши. Медленное движение масштабируется слабо, быстрое - усиливается по заданной кривой. Для офисной работы это удобно: можно точно наводить курсор на мелкие элементы и при этом перекидывать его через весь экран одним взмахом.
Для прицеливания ускорение губительно по одной причине: оно разрушает предсказуемость. Мышечная память строится на пропорции "столько сантиметров коврика - столько градусов поворота". Когда коэффициент плавает в зависимости от скорости, одно и то же движение руки даёт разный результат, и выработать устойчивый навык становится невозможно. Поэтому соревновательные игроки отключают ускорение всегда и выбирают шестое деление ползунка, добиваясь коэффициента 1,0 без какой-либо динамической обработки. Именно постоянство преобразования, а не абсолютная величина чувствительности, является фундаментом точной стрельбы.
eDPI и экономика сантиметров коврика
Чтобы сравнивать настройки разных игроков и разных игр, используют понятие эффективной чувствительности. Базовая формула проста: eDPI равен произведению CPI мыши на внутриигровой множитель чувствительности. Мышь на 800 CPI с чувствительностью 2,0 в игре даёт тот же eDPI 1600, что мышь на 1600 CPI с чувствительностью 1,0. Через поле зрения и масштаб движка эта величина пересчитывается в самую наглядную метрику - сколько сантиметров коврика нужно, чтобы развернуть прицел на 360 градусов.
Метрика "сантиметры на оборот" удобна тем, что привязана к телу игрока. Профессиональные игроки в тактические шутеры обычно работают в диапазоне от 25 до 50 сантиметров на полный разворот, то есть используют низкую эффективную чувствительность и широкие движения рукой от локтя. Аренные и быстрые шутеры терпят более короткие дистанции. Низкая чувствительность не случайна: большой ход мыши превращает микродрожание кисти в ничтожную долю градуса, тогда как на высокой чувствительности та же дрожь сносит перекрестье на заметный угол.
Практическая методика настройки выглядит так. Сначала выбирается комфортная дистанция разворота, исходя из размеров коврика и манеры игры. Затем под неё подбирается пара CPI и внутриигровой чувствительности. И вот здесь возникает главный вопрос статьи: если итоговый eDPI фиксирован, какую долю произведения отдать железу, а какую - программному множителю?
Высокий CPI против высокой программной чувствительности
Ответ у инженеров однозначен: разрешение лучше наращивать аппаратно, а множитель держать маленьким. Причина в квантовании и фильтрации. Когда мышь работает на низком CPI, скажем 400, а недостающую чувствительность компенсирует игровой множитель 4,0, каждый аппаратный отсчёт превращается в большой скачок прицела. Между соседними отсчётами нет промежуточных значений, и мелкие движения руки либо игнорируются, лубо вызывают скачок. Возникает пиксел-скиппинг: прицел физически не способен остановиться на некоторых угловых позициях, потому что шаг квантования больше, чем расстояние между этими позициями на экране. На дальней цели размером в несколько пикселей это означает невозможность навестись точно.
Обратная комбинация - 1600 CPI и множитель 1,0 - даёт вчетверо более мелкий шаг. Промежуточные положения существуют, дрожание руки распределяется по большему числу отсчётов и частично сглаживается самим движком усреднением. Рука человека не идеальна: физиологический тремор с частотой порядка десяти герц постоянно добавляет шум в движение. Высокое аппаратное разрешение позволяет системе видеть этот шум и отфильтровывать его, тогда как низкое разрешение грубит всё одинаково - и полезный сигнал, и шум.
Оговорка честности: у старых сенсоров очень высокие значения CPI достигались интерполяцией, искусственным дорисовыванием отсчётов, что давало джиттер курсора. Современные флагманские сенсоры работают нативно вплоть до десятков тысяч CPI, и разумный диапазон 800-3200 у них полностью честный. Вывод для практики: выбирать CPI из нативного диапазона сенсора, а чувствительность в игре опускать до значения, дающего нужные сантиметры на оборот.
Polling rate 8000 Гц и цена микросекунд
Отдельная ветка гонки за точностью - частота опроса. Переход с 125 на 1000 Гц уменьшил задержку отчёта с восьми миллисекунд до одной, и это ощутимый выигрыш. Дальнейший рост до 4000 и 8000 Гц сокращает интервал до 250 и 125 микросекунд соответственно. Выгода реальна, но носит убывающий характер: разница между 1000 и 8000 Гц составляет меньше миллисекунды, что на грани восприятия и заметно только в связке с мониторами 360 Гц и выше.
Зато цена измерима отлично. Каждый USB-отчёт - это прерывание процессора, вызов драйвера, обработка события. При 8000 Гц система обрабатывает восемь тысяч прерываний в секунду только от мыши, и на слабых или старых процессорах это съедает заметную долю одного ядра, повышая латентность системы в целом и просаживая частоту кадров в тяжёлых сценах. Есть и второй эффект: чтобы отчёты на такой частоте не были пустыми, мышь должна двигаться достаточно быстро - на медленных движениях эффективная частота всё равно проседает до уровня, где данных хватает на пакет.
Поэтому рациональная рекомендация выглядит умеренно: 1000-2000 Гц как беспроигрышный стандарт, 4000-8000 Гц - только на мощных процессорах и при наличии монитора с соответствующей частотой обновления. Частота опроса не заменяет ни CPI, ни грамотную чувствительность; это шлифовка цепочки, а не её фундамент.
Домашний тест-стенд для измерения реального CPI
Заявленное на коробке значение CPI не обязано совпадать с фактическим: погрешность в несколько процентов встречается даже у добросовестных производителей. Проверка делается простым стендом. На коврике строится отрезок строго известной длины, например 10 сантиметров, по линейке с миллиметровой шкалой. Мышь проводится вдоль отрезка медленно и равномерно, а утилита или игровой консольный вывод фиксирует суммарное смещение в сырых отсчётах. Деление числа отсчётов на длину в дюймах даёт фактический CPI. Три-пять повторов с усреднением снимают ошибку ручного ведения.
Дополнительные тесты проверяют смежные параметры: график частоты опроса программами анализа USB-трафика показывает, держит ли мышь заявленные герцы; измерение walking distance на абразивной линейке выявляет отклонение реальной чувствительности от расчётной; разворот ровно на 360 градусов в игре по эталонному отрезку коврика подтверждает, что вся цепочка настроена так, как задумано. Такого комплекта хватает, чтобы полностью охарактеризовать мышь без лабораторного оборудования.
Практический порядок настройки
Собрать всё сказанное в работающую процедуру можно одним коротким алгоритмом.
- Отключить ускорение Windows и выставить ползунок на шестое деление, коэффициент 1,0.
- Включить raw input в игре, если игра его поддерживает.
- Выбрать CPI из нативного диапазона сенсора, обычно 800-1600.
- Подобрать внутриигровую чувствительность под желаемые сантиметры на разворот 360 градусов.
- Установить частоту опроса 1000 Гц и поднимать её выше только при избытке ресурса процессора.
- Проверить итог линейкой: реальный разворот должен совпадать с расчётным.
После этого настройку остаётся только закрепить тренировкой: мышечная память формируется неделями, и любая смена множителей сбрасывает прогресс. Стабильность конфигурации - половина точности стрелка.