Обновления CS2 незаметно меняют физику гранат, из-за чего старые дефолтные раскидки перестают работать. Разбираем, как затухание отскока, точность коллизий и высота броска влияют на траекторию, и даём метод перестройки системы координат за 20 минут.
Вступление
Бывало ли у тебя так: дым, который на прошлой неделе стабильно перекрывал центр Mirage, после обновления падает на полкорпуса в сторону, а тиммейты говорят, что у тебя руки трясутся. Но ты знаешь, что не трясутся. Проблема не в руках, а в физическом слое. Гранаты никогда не были статичными — их траектория это бухгалтерская книга, которую совместно пишут версия, коллизии, высота броска и серверный тик. Эту книгу тихо переписывают каждые несколько патчей, а твои дефолтные раскидки заучены по старой редакции.
1. Затухание отскока: не «ниже отскакивает», а изменился энергобаланс
Сначала разберём часто путаемое понятие: отскок гранаты — это не просто «угол отражения». В CS2 отклик коллизии для хэ, флешек и дымов включает три настраиваемых параметра: коэффициент восстановления (restitution), тангенциальное трение и угловое демпфирование. Коэффициент восстановления определяет, сколько энергии возвращается по вертикали, тангенциальное трение съедает горизонтальную скорость, а угловое демпфирование влияет на то, как далеко граната «прокатится» после приземления.
Из этих трёх самый чувствительный — коэффициент восстановления. Сдвинь его на 0.02, и дым, отскакивающий от деревянной бочки на Banana на Inferno в сторону трёх ящиков, упадёт на ширину ящика в сторону. Что ещё хуже: коэффициент восстановления не глобальная константа — у разных материалов (дерево, металл, бетон, песок) свои кривые отклика. Когда патч меняет физический материал определённого типа поверхности, твоя раскидка «от бочки в три ящика» умирает, а раскидка от бетона может вообще не измениться.
Поэтому первый шаг переучивания — не «бросить ещё раз», а определить, от какой поверхности зависит раскидка. Раскидки от бочек, от жести, от песка имеют совершенно разные версионные риски.
2. Точность коллизий: ты целишься в текстуру, а движок считает выпуклую оболочку
Вторая переменная ещё коварнее: обнаружение столкновений гранат использует не видимую модель, а набор упрощённых выпуклых оболочек (convex hull). Когда маппер обновляет коллизию объекта, визуально это может быть незаметно, но если вершины выпуклой оболочки сместились, нормаль отскока гранаты тоже сместится.
Типичный сценарий — «бросок впритирку к стене». Ты бросаешь в видимый край стены у проёма на Ancient, думая, что граната пролетит вдоль стены, а на деле она бьётся о выпуклую оболочку, расширенную на два сантиметра за текстуру, и траектория ломается раньше. Два сантиметра в точке броска превращаются в полметра в точке падения.
Подход про-команд: для каждой дефолтной раскидки на карте записывать три координаты — «точка броска — точка коллизии — точка падения», а не только точку падения. Если точка коллизии изменилась патчем, точка падения неизбежно уплывёт, но если ты заучил только точку падения, ты не поймёшь, с какого сегмента начался дрейф.
3. Высота броска: стойка, присед и «невидимое смещение» в движении
Третья переменная исходит от тебя самого. Начальная позиция гранаты привязана к костям рук персонажа, а положение костей рук зависит от стойки, приседа и даже скорости движения. Если обновление меняет смещение привязки костей рук или относительное положение камеры и рук при приседе, при том же прицеливании точка броска сместится.
Вот почему некоторые дефолтные дымы нормально летят «стоя», но чудовищно мажут при «броске в прыжке» или «броске из приседа». Прыжок особенно опасен: вертикальная скорость в момент отрыва складывается с начальной скоростью гранаты, а значение вертикальной скорости зависит от физических параметров версии. Ты думаешь, что прыжок просто добавляет дальности, а на деле он меняет форму всей параболы.
4. Правильная переподготовка: перестройка системы координат за 20 минут
Не бросай вслепую сто раз. Действуй по порядку:
- Сначала зафиксируй стойку и якорь прицела, меняй только одну переменную, чтобы понять, сместилась точка броска или точка коллизии.
- Проведи базовый тест «короткий низкий бросок», чтобы исключить накопление ошибки от сопротивления воздуха на длинной дистанции.
- Для каждой дефолтной раскидки на карте готовь минимум две резервные линии — одну на отскоке, одну на прямом броске. Патч заденет одну — вторая выстоит.
- Записывай новую точку падения в заметки, но помечай «номер версии + дата теста», потому что следующее обновление может её снова сдвинуть.
Гранаты не заучивают — их вычисляют. Версионный налог платится каждый раз, разница лишь в том, платишь ты заранее или в матче, когда противник забирает твою жизнь одним дымом, который ты не смог перекрыть.