Один выстрел — один труп: основы механики стрельбы в FPS

Основные принципы hitscan и баллистики снарядов.

Шутеры от первого лица стали неотъемлемой частью индустрии видеоигр с момента выхода Wolfenstein 3D в 1992 году. С тех пор этот жанр развивался благодаря выдающейся эволюции графики, огромным бюджетам и экосистеме киберспорта. Вместе с этим менялось и геймплейное ядро жанра — стрельба.

Участник блог-платформы Medium Тристан Юнг в своём тексте рассказал про три основных подхода для создания системы стрельбы. Он упомянул про методы hitscan, баллистику снарядов и гибридный подход. Мы выбрали из материала главное.

Один выстрел — один труп: основы механики стрельбы в FPS

Hitscan

Раньше многие игры использовали технику рейкастинга для рендеринга 3D-окружения для 2D-изображения (экрана пользователя). Рейкастинг позволяет движку определять первый объект, на который падает луч. Разработчики придумали подход, в котором луч исходит из дула оружия и позволяет имитировать пулю. Так и родилась идея hitscan.

Пример рейкастинга

Если игрок стреляет, то физический движок:

  • определяет, в какую сторону направлено оружие;
  • создаёт луч от дула до точки;
  • использует рейкастинг, чтобы определить, попал ли луч на объект.

Если движок определяет, что объект находится на линии огня, он уведомляет этот объект, что он был «поражён» пулей. Затем цель выполняет все расчёты, необходимые для регистрации ущерба.

Из точки A исходит луч в точку B. Если луч пересекает куб, то он регистрирует попадание
Из точки A исходит луч в точку B. Если луч пересекает куб, то он регистрирует попадание

Hitscan прост по своей сути, но эту систему можно дополнить разными способами:

  • если продолжить луч после первого столкновения, то можно поразить сразу несколько целей, стоящих друг за другом. Так, например, работает railgun в Quake;
  • можно увеличить максимальную дальность луча, чтобы он тянулся до того момента, пока не встретит препятствие. Это свойство можно использовать для создания лазерного оружия;
  • можно изменить свойства некоторых поверхностей, чтобы пули от них отражались.
Genji из Overwatch, например, может отражать выстрелы

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

Неудивительно, что многие игры используют hitscan для стрельбы. Wolfenstein 3D и Doom являются классическими примерами, но даже многие игры последних лет используют эту технологию. У таких персонажей, как Soldier 76, McCree и Widowmaker из Overwatch, есть hitscan-оружие. Это же касается и большинства оружия в Call of Duty.

Но не все игры используют этот подход. Во-первых, это связано с тем, что снаряды по лучам имеют мгновенную скорость перемещения, поэтому они моментально достигают места назначения. Между выстрелом и попаданием в предмет не учитывается время полёта пули. Это означает, что невозможно увернуться от выстрела, даже если атакующий находится на расстоянии многих километров.

В Halo, например, можно увидеть, что вспышки от выстрела и от попадания появляются одновременно

Во-вторых, в основном hitscan использует прямые лучи. Это означает, что трудно учесть ветер, гравитацию и другие внешние факторы, которые могут повлиять на траекторию пули.

Многие казуальные игры используют метод hitscan, поскольку он упрощает процесс обучения для большинства начинающих пользователей. Но для более хардкорных шутеров такой метод подходит не во всём.

Баллистика снарядов

Основная концепция этого подхода достаточно проста: каждый выстрел создаёт новый физический объект, у которого есть собственная масса, скорость и хитбокс, отслеживаемый движком.

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

Поскольку пули в этой системе не движутся моментально, можно изменять скорость полёта снаряда:

  • можно добавить эффект «Bullet-time» как в Max Payne, Sniper Elite или Superhot;
  • из-за этого игроку приходится предугадывать движение цели, чтобы попасть куда нужно;
  • это позволяет добавить гранатам эффект отложенного взрыва.

Существует множество способов оптимизации этого подхода для снижения влияния на производительность. Например, для этого может использоваться пул снарядов, загруженных заранее: в нужный момент они просто телепортируются на поле боя.

Есть также несколько способов произведения вычислений, которые различаются тем, что по разному используют «tick» — единицу времени в игре:

  • tick рассчитывается отдельно от логики рендеринга. Это означает, что игра будет более точно отображать объекты, даже если некоторые кадры пропускаются;
  • расчёт tick в каждом кадре. Физика имеет привязку к частоте кадров. Если отключить ограничение частоты кадров или начать пропускать кадры, можно увидеть ускоренные или прерывистые эффекты в мире.

Интересно, что эта система появилась раньше, чем hitscan. До FPS уже было много шутеров с видом сверху, таких как Asteroids, Space Invaders или Galaxian. В этих аркадах уже в 1970 годах применялась примитивная баллистическая стрельба.

Гибридная система

Большинство игровых движков могут работать с обоими типами имитации пуль: hitscan и баллистикой снаряда. Это даёт огромное разнообразие оружия: в таких играх, как Halo и Half-Life есть оружие, которое поддерживает оба типа физики.

Assault Rifle из серии Halo использует hitscan, ...
а Needler — баллистику снарядов.

Разработчики могут также смешивать две технологии, чтобы убрать слабые стороны каждой системы, а также обеспечить более реалистичный геймплейный опыт. Например, это можно встретить в серии Sniper Elite: после нажатия на спусковой крючок движок использует hitscan, чтобы определить, достаточно ли метким получится выстрел, чтобы вызвать замедление времени. Если это так, то будет произведён выстрел пулей, которая учитывает баллистику.

Это только основы работы механики стрельбы в видеоиграх. Остаётся ещё множество решений, которые создавались в соответствии с требованиями геймплея отдельных тайтлов. Тем не менее сейчас в FPS в основном используются именно эти два типа стрельбы и их гибрид.

Но это не значит, что везде всё одинаково. Наоборот, каждая игра по-своему использует эти механики. Более того, многие студии тратят множество усилий для того, чтобы сделать стрельбу по-настоящему захватывающей. Расскажите в комментариях, в каких шутерах от первого лица вам больше всего запомнилась механика стрельбы?

77 показов
23K23K открытий
47 комментариев

Статья ни о чем, честно. Есть хмтскан,это моментально прилетающие пули, которые фактически и не пули, а есть реально отсчитанная баллистика. Ну крч есть игры с хитсканом, а есть с баллистикой

Ответить

есть еще и с хитсканом и с баллистикой! Забыл упомянуть!

Ответить

не все проджектайлы это балистика, есть балистика из нескольких хитсканов, например. статья любителя который толком не лазил в движки.

Ответить

Расскажите в комментариях, в каких шутерах от первого лица вам больше всего запомнилась механика стрельбы?Там где противники реагируют на попадания, а не поедают пули как губка.

Ответить

Да это вообще другая тема. И в синглах просто, любую анимацию при попадании можно включить. А в мультиплеере нужно чтобы тот в кого попали не терял управление, по крайней мере если это не смертельно попадание

Ответить

Жаль, нет упоминания Армы и качества используемой баллистики.

Ответить

Комментарий недоступен

Ответить