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

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

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

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

Ответить

Обычно сфера рисуется, внутри нее начисляется дамаг.

Ответить

В большинстве игр с сеткой урон наносит константный урон по ячейкам.
Там где сетки не видно (Герои 4, современные пошаговые РПГ) каждый юнит стоит на квадратной площадке или круговой зоне, состоящей из квадратных ячеек меньшего размера. Например если ячейка 5см, то базовый юнит в Героях 4 занимает 5х5 ячеек, дракон - 15х15 (размер драконов в Г4 я когда-то помнил, сейчас взял с потолка просто для примера). Взрыв же указывается в ячейках, например 25 ячеек в диаметре, дальше тригонометрия. Урон не скажу за Г4 (не помню), но можно засчитывать за количество ячеек, которыми юнит попал в зону взрыва - больше попало в взрыв, больше урон.
Третий вариант - вся видимая зона в момент взрыва покрывается невидимыми треугольниками, координаты которых отталкиваются от точки взрыва. Похоже на "ячеистый" вариант, но сетка не существует постоянно, а просчитывается заново тогда, когда нужна на лету. Используется в экшен РПГ и стратегиях. К примеру, это заметно по тому, как в дьяблоидах или стратегиях типа Starcraft 2 мы видим зону видимости юнита или освещения от факела в руках персонажа - эта зона не идеально круглая, а скорее многогранник, с большим количеством ровных линий. При этом она ровно и плавно перемещается вместе с юнитом. Размер треугольников выбирается достаточно небольшим, чтобы в том же SC2 в него влез тот же, к примеру, зерлинг, а радиус освещения/взрывов тогда высчитывается исходя из некоего "количества треугольников по прямой от точки факела/взрыва". При таком подходе как правило урон одинаков везде или в пределах треугольника, и может только меняться при отдалении от эпицентра по правилу, например, "-10% за треугольник".

Ответить

Сам задавался похожим вопросом. Знакомый геймдизайнер подсказал, что урон по области игрок видит анимацией "пожара" в радиусе, а противник получает статус "горит", моментальный урон равный Х и DOT Y/секунду, например. Статус поверхности может сохраняться определенное время, любой противник, попадающий в маркированную зону получает моментальный урон и/или такой же DOT и визуальный эффект. Примерно так оно устроено в большинстве случаев, примерно так работают горящие поверхности в D:OS или жаровня в Скайриме.

Ответить