Интерфейс и немного о процессе
Интерфейс и немного о процессе
📊 Полоска над врагом
Уффф... пришлось конечно попотеть с прототипированием и анимацией, но вроде получается неплохо.
Теперь над каждым противником отображается компактный виджет с именем, здоровьем и щитом.
Но есть проблема: если постоянно показывать все полоски над всеми врагами, в разгар боя экран быстро превратится в новогоднюю ёлку из интерфейсных элементов. Особенно когда на арене одновременно бегают мехи и толпа скрабов.
Поэтому я сделал виджет контекстным: по умолчанию он свёрнут и плавно раскрывается, когда игроку действительно нужна информация о противнике.
Например:
когда игрок целится во врага;
когда враг уже получил урон.
Но как определить, на кого именно смотрит игрок?
Для этого используется проверка направления взгляда камеры. Из неё выпускается луч, а вокруг направления луча задаётся небольшой конус в 10°.
Если противник попадает в этот конус, система считает, что игрок обращает на него внимание, даже если прицел немного промахнулся.
Зачем это нужно? Чтобы полоска здоровья не дёргалась и не мигала, когда ты пытаешься прицелиться в маленького юркого скраба.
Есть и ещё одна небольшая, но важная деталь: виджет сохраняет одинаковый размер на экране независимо от расстояния до противника.
То есть враг может находиться в двух метрах от игрока или на другом конце арены — его полоска не будет увеличиваться и уменьшаться вместе с перспективой. Так интерфейс остаётся читаемым и не заслоняет происходящее.
🎮 HUD игрока — в работе
Параллельно собираю основной HUD для Крэга.
Я старый поэтому и делал по старинке, придумывал и накидывал в Figma, а потом ручками верстал в редакторе.
В него входят:
портрет и имя персонажа;
полоска здоровья;
полоска энергии;
счётчик боеприпасов: патроны в магазине и оставшийся запас.
Пока это ещё не полностью рабочий интерфейс, а скорее готовый визуальный макет. Внешний вид уже определён, но часть элементов ещё предстоит связать с игровой логикой, чтобы они корректно обновлялись при изменении характеристик персонажа и состояния оружия.
В общем, сначала нарисовали красоту, теперь заставляем её работать. 😎
🧩 Немного о процессе разработки
И напоследок — немного о том, как изменился сам процесс разработки.
Теперь каждую крупную механику я стараюсь начинать не с того, чтобы сразу открыть Unreal Engine и накидывать Blueprint'ы, а с плана реализации.
Для каждой большой фичи готовлю:
Техническое задание — что именно должно работать и зачем.
Список принятых решений — как планирую реализовать механику и почему выбрал именно такой подход.
Пошаговый план — разбиваю большую задачу на небольшие этапы с чекбоксами.
Список тестов — заранее определяю, что нужно проверить, чтобы убедиться, что всё работает правильно.
И знаете, это действительно помогает.
Когда задача большая, легко увязнуть в деталях, начать переделывать одно и то же или внезапно обнаружить, что какая-то часть системы вообще не была предусмотрена.