Траектория гранаты — это не просто линия, а решение задачи столкновения с потерей энергии, где стены состоят из ступеней и рёбер хитбоксов. При обновлении версии первым меняется не гравитация, а эти «невидимые рёбра», определяющие чувствительность стандартных раскидок. В статье технически разбираются структура хитбоксов, три уровня зависимостей стандартных линий, методы переобучения под версию и развитие устойчивой к изменениям интуиции чтения поверхностей.
Введение
Многие игроки заучивают раскидки как одну линию: «встань здесь, наведись сюда, прыжковый бросок». Эта линия работает в текущей версии, но в следующей может превратиться в «полклетки мимо». Проблема не в плохой памяти, а в том, что вы запоминаете результат, а не геометрию. Суть траектории гранаты — это решение задачи столкновения с потерей энергии, а стены — не плоскости, а ступени, углы и стыки хитбоксов. Когда версия меняется, первым делом меняются не гравитация, а эти «невидимые рёбра».
1. Невидимые рёбра хитбоксов: почему точка отскока чувствительнее точки броска
Сначала проясним факт: в CS2 обнаружение столкновений гранат использует упрощённую геометрию столкновений, а не поверхность текстур, которую вы видите. Швы кирпичей, рельеф и декоративные линии на текстурах не участвуют в столкновениях — участвуют запечённые хитбоксы. Хитбоксы упрощены ради производительности, поэтому стены в физическом мире не гладкие, а собраны из нескольких плоскостей в виде «ступеней».
Границы между этими ступенями и есть невидимые рёбра. Когда граната скользит по ребру, расчёт угла падения и отражения мгновенно переключается на другую опорную плоскость. Вы видите «отскок», а физически это резкое изменение направления нормали. Смещение точки броска на полклетки меняет место попадания в ребро, и после отражения точка падения может сместиться на два-три корпуса. Вот почему одна и та же стандартная раскидка после обновления кому-то кажется «ещё рабочей», а кому-то — «совсем неправильной»: они стоят в разных местах и задевают разные рёбра.
Ещё скрытее коэффициент отскока. Поверхности разных материалов имеют разные параметры потери энергии в движке: затухание скорости после отскока от дерева, металла и бетона неодинаково. Если обновление меняет физические параметры какого-то типа поверхности или перезапекает хитбоксы карты, ваше «отскочит и ровно в дым» превращается в «отскочит и в стену». Это не мистика, а миграция параметров.
2. Три уровня зависимостей стандартной раскидки: бросок, ребро, падение
Стандартная раскидка кажется зависящей только от точки броска, но на самом деле у неё как минимум три уровня зависимостей.
Первый — точка броска и угол обзора. Положение ног, состояние приседания, угол наклона мыши определяют направление и величину начального вектора скорости гранаты. К таймингу прыжкового броска добавляется вертикальная скорость персонала, которая при тиковой выборке не непрерывна, поэтому один и тот же прыжковый бросок может немного отличаться при разных сетевых условиях.
Второй — рёбра на пути столкновения. От точки броска до точки падения граната может испытать один или несколько отскоков. Каждый отскок — потеря информации: вы знаете лишь, что примерно отскочит, но не знаете, какое ребро заденет. Ценность стандартной раскидки в том, что она сжимает этот путь в воспроизводимое действие, но воспроизводимость возможна только если рёбра не изменились.
Третий — определение точки падения. Развёртывание дыма — это объём, взрыв флешки — таймер, распространение огня — набор огневых ячеек. Смещение точки падения на полклетки может оставить щель в дыму или заставить флешку взорваться на несколько десятых раньше. В тренировочной карте эти различия не видны, а в бою это «я первым увидел край дыма» или «меня первым ослепило».
Из трёх уровней точка броска запоминается легче всего, точка падения проверяется легче всего, а средние рёбра игнорируются чаще всего. И именно этот средний слой чаще всего меняется при обновлениях.
3. Переобучение под версию: не ломать память, а перестраивать индекс
Услышав «переобучение под версию», многие первым делом думают переделать все раскидки с нуля. Это не нужно и нереально. Разумнее перестроить индекс: линейную память «позиция — прицел — падение» переписать в структурированную «точка броска — ожидаемое число отскоков — ключевое ребро — допуск точки падения».
Как это сделать? Шаг первый: на тренировочной карте разбейте каждую стандартную раскидку на два отрезка — от броска до первого отскока и от первого отскока до падения. Запишите допуски для каждого. Если допуск первого отрезка мал, а второго велик, линия чувствительна к рёбрам и после обновления требует первоочередной проверки.
Шаг второй: отметьте для каждой линии «альтернативные точки падения». У одного дыма часто есть два-три пути; после изменения версии один может отказать, а другой остаться рабочим. Заранее заучить альтернативные пути в мышечную память надёжнее, чем искать линию на ходу.
Шаг третий: составьте чек-лист проверки версии. После каждого крупного обновления сначала прогоняйте линии, чувствительные к рёбрам, затем линии с большим допуском. Не полагайтесь на ощущение «вроде работает» — говорите языком точки падения: есть ли щель в дыму, слепит ли флешка, догорает ли огонь.
4. Переносимая интуиция броска: от заучивания линий к чтению поверхностей
По-настоящему устойчива к версиям не какая-то линия, а способность читать поверхности. Глядя на стену, вы примерно определяете ориентацию поверхности столкновения, положение рёбер, направление затухания скорости после отскока. Эта интуиция приходит из повторяющихся «намеренных промахов»: на тренировочной карте специально заставляйте гранату скользить по ребру, наблюдайте за изменением угла отражения, записывайте дистанцию отскока для разных материалов.
Когда у вас есть чтение поверхностей, обновление версии — это не «моя линия сломалась», а «рёбра этой стены изменились, я зайду иначе». Стандартные раскидки всё равно нужно тренировать, но цель — не заучить ответ, а построить геометрическую интуицию, переносимую между версиями. Стена — не плоскость, а ступень; раскидка — не заклинание, а путь. Путь меняется, геометрия не лжёт.