Программирование UX и программирование геймплея для мрачного шутера от первого лица с элементами выживания.
Данный лонгрид описывает основные методы и решения, примененные в коде игры для обеспечения плавности геймплея и приятной обратной связи.
БЛИЖНИЙ БОЙ
Урон по врагам во время ближнего боя происходит с помощью бросания луча, определяющего объект, с которым произошло столкновение при нажатии ЛКМ.
Для реализации притягивания к поражаемой цели во время атаки, создан алгоритм линейной интерполяции между точками А и B.
КВЕСТЫ И ИСПЫТАНИЯ
Разрушение статуй — одно из испытаний. Оно реализовано с помощью встроенного в UE5 инструмента — Fracture Mode, позволяющего разделить объект на множество мелких частей. Во избежание проблем с FPS, все осколки удаляются через 5 секунд.
Чтобы исключить семантический конфликт в выполнении кода, следующий квест невыполним без завершения предыдущего.
МУВМЕНТ
Мувмент персонажа представляет из себя комплексную систему функций, плавно сменяющихся с помощью ноды Switch Movement State. Для усиления ощущения бега, ходьбы и скольжения используются камерашейки.
БОЕВЫЕ СИСТЕМЫ
Чтобы создать бесшовную боевую систему, нажатие игроком кнопки мыши делится на 3 состояния (типа функций):
— нажатие
— удержание
— отпускание
Отзывчивость боевки создается благодаря эффектам, камерашейкам, а также уникальной траектории у каждого проджектайла.
Помимо этого каждая атака является механически оригинальной. Например, точка появления черной дыры определяется бросанием луча, а сама дыра вблизи имеет немного пониженную гравитацию.
ВРАГИ
Для спавна врагов созданы несколько Blueprint классов. BP_WaveControl определяет общее состояние волны: сколько врагов появилось, было уничтожено, какой лимит. BP_Spawn отвечает за корректность их появления.




