«Версионный налог» на траектории гранат: затухание отскока, правки коллизий и почему дефолтные раскидки приходится переучивать

14 октября 2026 г. в 16:00:10

Обновления CS2 незаметно меняют физику гранат, из-за чего старые дефолтные раскидки перестают работать. Разбираем, как затухание отскока, точность коллизий и высота броска влияют на траекторию, и даём метод перестройки системы координат за 20 минут.

Вступление

Бывало ли у тебя так: дым, который на прошлой неделе стабильно перекрывал центр Mirage, после обновления падает на полкорпуса в сторону, а тиммейты говорят, что у тебя руки трясутся. Но ты знаешь, что не трясутся. Проблема не в руках, а в физическом слое. Гранаты никогда не были статичными — их траектория это бухгалтерская книга, которую совместно пишут версия, коллизии, высота броска и серверный тик. Эту книгу тихо переписывают каждые несколько патчей, а твои дефолтные раскидки заучены по старой редакции.

1. Затухание отскока: не «ниже отскакивает», а изменился энергобаланс

Сначала разберём часто путаемое понятие: отскок гранаты — это не просто «угол отражения». В CS2 отклик коллизии для хэ, флешек и дымов включает три настраиваемых параметра: коэффициент восстановления (restitution), тангенциальное трение и угловое демпфирование. Коэффициент восстановления определяет, сколько энергии возвращается по вертикали, тангенциальное трение съедает горизонтальную скорость, а угловое демпфирование влияет на то, как далеко граната «прокатится» после приземления.

Из этих трёх самый чувствительный — коэффициент восстановления. Сдвинь его на 0.02, и дым, отскакивающий от деревянной бочки на Banana на Inferno в сторону трёх ящиков, упадёт на ширину ящика в сторону. Что ещё хуже: коэффициент восстановления не глобальная константа — у разных материалов (дерево, металл, бетон, песок) свои кривые отклика. Когда патч меняет физический материал определённого типа поверхности, твоя раскидка «от бочки в три ящика» умирает, а раскидка от бетона может вообще не измениться.

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

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

Вторая переменная ещё коварнее: обнаружение столкновений гранат использует не видимую модель, а набор упрощённых выпуклых оболочек (convex hull). Когда маппер обновляет коллизию объекта, визуально это может быть незаметно, но если вершины выпуклой оболочки сместились, нормаль отскока гранаты тоже сместится.

Типичный сценарий — «бросок впритирку к стене». Ты бросаешь в видимый край стены у проёма на Ancient, думая, что граната пролетит вдоль стены, а на деле она бьётся о выпуклую оболочку, расширенную на два сантиметра за текстуру, и траектория ломается раньше. Два сантиметра в точке броска превращаются в полметра в точке падения.

Подход про-команд: для каждой дефолтной раскидки на карте записывать три координаты — «точка броска — точка коллизии — точка падения», а не только точку падения. Если точка коллизии изменилась патчем, точка падения неизбежно уплывёт, но если ты заучил только точку падения, ты не поймёшь, с какого сегмента начался дрейф.

3. Высота броска: стойка, присед и «невидимое смещение» в движении

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

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

4. Правильная переподготовка: перестройка системы координат за 20 минут

Не бросай вслепую сто раз. Действуй по порядку:

  1. Сначала зафиксируй стойку и якорь прицела, меняй только одну переменную, чтобы понять, сместилась точка броска или точка коллизии.
  2. Проведи базовый тест «короткий низкий бросок», чтобы исключить накопление ошибки от сопротивления воздуха на длинной дистанции.
  3. Для каждой дефолтной раскидки на карте готовь минимум две резервные линии — одну на отскоке, одну на прямом броске. Патч заденет одну — вторая выстоит.
  4. Записывай новую точку падения в заметки, но помечай «номер версии + дата теста», потому что следующее обновление может её снова сдвинуть.

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