Дневник разработки Underrail: Infusion № 16: Прицеливание и стрельба

Дневник разработки Underrail: Infusion № 16: Прицеливание и стрельба.

Styg продолжает гнуть линию с симуляционным подходом в Underrail: Infusion, и к стрельбе этот принцип, разумеется, тоже относится.

Привет, народ!

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

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

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

Вот как всё это работает сейчас.

Во-первых, чтобы можно было выстрелить по цели, между вокселем ведущего огонь и одним из вокселей, занимаемых целью, должна быть свободная линия огня — это называется проверкой возможности удалённого контакта. В нашем движке воксель представляет собой относительно большой куб со стороной в один метр (так, например, человек занимает два вокселя в положении стоя и один — в положении приседа). По сути, это 3D-кубики.

Каждый объект в игре занимает один или несколько вокселей. Они используются в игровых механиках, не связанных с высокой детализацией объектов, таких как поиск пути и обсчёт видимости. Сам воксель состоит из ядра, 6 граней и 12 ребер. Это — база для более тонкого отображения мелких или структурированных объектов вроде дверей, колонн и так далее но это сейчас не важно. Достаточно знать, что первоначальная проверка возможности выстрела осуществляется с их помощью.

При стрельбе из оружия дальнего боя, например, из пистолета, игра сначала рассчитывает ваш показатель атаки. На этот показатель может влиять множество факторов, но в основном он определяется эффективным уровнем навыка (в данном случае — навыком «Огнестрел»), стойкой (в случае с огнестрельным оружием это зависит от концентрации и того, что служит вам прицелом — мушка пистолета, коллиматорный или оптический прицел).

Этот показатель сравнивается с показателем защиты цели. Я ещё не до конца определился, как именно вычислять этот показатель — пока это мешанина из констант, расстояния, скорости и маневренности цели. В основном, показатель растёт в зависимости от того, как далеко находится цель и как быстро и насколько ловко она движется.

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

Затем получившийся вектор направления преобразуется в луч и прослеживается до границы описанного вокруг цели параллелепипеда (далее — «внешняя коробка»). Назовём это первичной проверкой на попадание. На самом деле она состоит из двух проверок, так как прослеживается до двух границ — внешней коробки и внутренней (то есть вписанного в цели параллелепипеда).

Если он пересекается с внутренней коробкой, которая обычно занимает 2/3 от внешней, атака считается попаданием. В ходе этой проверки все препятствия игнорируются, мы полагаемся исключительно на проверку возможности удалённого контакта (которая показывает, существует ли беспрепятственный путь к цели). Если это происходит, атака считается точным попаданием, и нам не нужно выполнять никаких расчётов траектории пули в игровом пространстве.

Если же пуля не пересекает внутреннюю коробку, её траектория прослеживается далее в текущем игровом пространстве, и она может поразить любого персонажа, а также разрушаемое или неразрушаемое препятствие на своём пути.

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

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

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

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

Во-первых, в небольшие и/или удалённые цели сложнее попасть, поскольку расстояние между точкой на рассчитанном луче и центром цели увеличивается с ростом расстояния до неё, и чем меньше цель, тем выше вероятность промаха.

Так что вам, скорее всего, не понадобится большое мастерство в навыке «Оружие», чтобы в упор попасть в бурильщика, но попасть в крысу на расстоянии 10+ без развитого навыка можно лишь на удачу.

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

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

Один из недостатков этой системы заключается в том, что заранее практически невозможно точно рассчитать вероятность попадания при конкретной атаке. Именно поэтому, как некоторые заметили, я перешёл на описательные показатели сложности попадания (Легко, Средне, Трудно и так далее).

* * *

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

* * *

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

* * *

Отдельно стоит поговорить об уроне от различных существ и вероятностях попадания. Эта тема тоже заслуживает отдельного дневника.

* * *

Препятствия, разрушаемые или нет, также стоит обсудить в отдельном дневнике. Мы разработали механизмы моделирования столкновений для окружающей среды с использованием сгенерированных низкополигональных сеток для предварительно прорисованных ассетов (используемых для карт теней).

* * *

В любом случае, на сегодня всё.

Имейте в виду, что эти механики могут измениться в процессе тестирования, но пока что я считаю эту систему довольно понятной и интересной.

Всего хорошего!

CC0
Вы можете копировать, изменять, распространять и исполнять данное произведение, даже в коммерческих целях, не спрашивая разрешения.

Поиск по сайту

Случайное из галереи

Сообщения на форуме | новые

Biomutant на форуме Ролевые боевики.
Последнее сообщение оставил Бобёр (2026-03-20 в 23:22). Ответов: 1.
Goth Scene на форуме Аудио.
Последнее сообщение оставил ZXGDtN2v9RAKQ49 (2026-03-20 в 20:21). Ответов: 120.
[В разработке] Underrail 2: Infusion на форуме Underrail.
Последнее сообщение оставил ZXGDtN2v9RAKQ49 (2026-03-20 в 19:31). Ответов: 74.
Общее обсуждение фильмов - 2 на форуме Видео.
Последнее сообщение оставил Хоттабыч (2026-03-20 в 18:57). Ответов: 2401.
[В разработке] Dead Weight на форуме Тактические и стратегические.
Последнее сообщение оставил ZXGDtN2v9RAKQ49 (2026-03-20 в 18:52). Ответов: 13.
[В разработке] Instruments of Power на форуме Тактические и стратегические.
Последнее сообщение оставил ZXGDtN2v9RAKQ49 (2026-03-20 в 18:37). Ответов: 0.
[В разработке] Kinstrife на форуме Всё остальное | Инди.
Последнее сообщение оставил Архивариус (2026-03-20 в 18:03). Ответов: 1.
Мнения об играх: частный взгляд на форуме Beyond RPG.
Последнее сообщение оставил katarn (2026-03-20 в 17:50). Ответов: 557.
King's Bounty: Перекрёстки миров на форуме King’s Bounty.
Последнее сообщение оставил ZXGDtN2v9RAKQ49 (2026-03-20 в 17:07). Ответов: 11.
King's Bounty: Легенда о рыцаре на форуме King’s Bounty.
Последнее сообщение оставил ZXGDtN2v9RAKQ49 (2026-03-20 в 17:03). Ответов: 49.

Ожидаемое | таблица

Новости C.O.R.E.

Статьи C.O.R.E.

Случайная цитата

Одной каплей дождя не утолить жажды.

Учитель дзена, Cyberpunk 2077

Оставьте свой отзыв: QR-код для отзывов в «Яндексе».