Как мы играем в шутеры: механика отдачи и разброса

Привет, друзья! Все геймеры, играющие в шутеры, знают, что такое отдача и разброс оружия. Но если вы долго играете, например, в CS:GO и умеете контролировать отдачу, то это ещё не значит, что вы теперь будете спецом во всех шутерах. И сейчас я расскажу, почему это так. А в конце немножко расскажу про эту самую стрельбу в CS :)

Отдача оружия и разброс - это почти сиамские близнецы, которых нельзя разделять - если убрать одного, то оружие сразу будет стрелять "сухо", не натуралистично, игрок не будет чувствовать стрельбу. Представьте, если убрать разброс, то останется только отдача – все, что нужно будет игроку, это вести мышь вниз при зажатой стрельбе, а пули будут всегда бить точно в цель. Если убрать отдачу, но оставить разброс, то будет и того проще – навести на противника и ждать, пока пули попадут куда надо. Так как же устроена эта механика?

Скажу сразу – как много шутеров, так много и настроек, каждая студия в каждой игре для каждого оружия может исхитриться по-своему. Поэтому я опишу общие принципы, которые исходят из тех проектов, с которыми я знаком. Эти принципы чем-то схожи со стрельбой в CS:GO, кстати. Хотя я не видел исходного кода КСа (еще бы!), но по внешнему виду принципы схожи.

Итак, как вы знаете из прошлой статьи, когда игрок нажимает кнопку мыши – формируется выстрел, будь это реальный патрон или "лучевой". Параллельно формируется разброс – система отправляет пулю немного в сторону, определяя координаты рандомно, например, по горизонтали от -10 до +10 и по вертикали так же. Это значит, что случайным образом вектор полета пули будет сдвинут от центра влево (от 0 до -10) или вправо (от 0 до +10) и аналогично по вертикали вверх и вниз. Короче говоря, получается круг с радиусом 10 единиц. И, как вы понимаете, возможность полета пули по прямой крайне мала (ставь лайк, если помнишь этот мем:))

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

Ну а чтобы игрок, выстреливая всю обойму, не начинал смотреть на небо, включается дополнительный ограничитель по высоте. Плюс, обычно включается ограничитель, когда игрок смотрит прямо вверх – чтобы он не загибался на спину.

Отдельно стоит упомянуть изменение механики при стрельбе сидя (или лежа) или при стрельбе "с мушки" (про механику ironsights вы можете почитать в одной из прошлых статей). Так как прицельная стрельба более меткая, то и разброс и отдача при ней изменяются. Просто в коде либо идет проверка на то, геймер стреляет с прицела или нет, и цифры разброса и отдачи снижаются, либо сразу в коде оружия прописывается снижение показателей при таком режиме.

И как же это работает в CS:GO?

Повторюсь – я не видел исходников КС, естественно, но понимание этого устройства есть. Часто видел, что в интернетах пишут, как контролить разброс - нужно выучивать траекторию, паттерн, по которому стреляет тот или иной вид оружия. Доходит до смешного – контроль на awp…

Отчасти это правда, но отчасти и не очень. Как вы понимаете, разработчики вряд ли сидели в студии и придумывали траектории разброса для разных оружий. Конечно, нет. Они использовали все тот же рандом, но для каждого оружия использовали свое "зерно" разброса. Если вы играли когда-нибудь в игры, где есть возможность случайной генерации чего-либо, обычно это бывает в жанре выживалок при генерации мира, то вы наверняка могли задать некое "зерно случайности" – это то ядро, от которого и будет отталкиваться рандом. Тут примерно то же самое – есть алгоритм случайности, общий для всех оружик, но который контролируется "зерном" каждого отдельного оружия и вырисовывает примерно одинаковый паттерн стрельбы в рамках небольших отклонений. Добавьте к этому небольшой рандом отдачи и рандом разброса – вот вам и разные очереди каждый раз. Поэтому, с одной стороны, знать, как стреляет тот же АК, - это полезно, но довести до идеала стрельбу вам все равно не удастся – вас контролирует трехсторонний рандом, как бы странно это ни звучало :)

1
0
Комментарии:  0
Ваш комментарий