Что было сделано на данный момент


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


LOCOMOTION SYSTEM & ROOT MOTION CONTROLLER

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

Для реализации Locomotion System я использовал Movement Animset Pro от Kubold. Это прекрасный набор motion capture анимаций. Для персонажа были использованы Root Motion анимации, (для ботов InPlace, так же я не знал что для сетевой игры лучше использовать InPlace). 

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

Добавил ограниченную скорость поворота капсулы персонажа, которая никак не влияет на движение персонажа. Т.е. если персонаж двигается в противоположную сторону от "переда", он начнет двигаться назад и в процессе развернется, а не начнет сразу разворачиваться двигаясь по дуге (в первом случае на отзывчивость нет никакого влияния, во втором же персонаж кажется очень ватным).

Так же очень много логики отвечает за то как именно двигается персонаж, в какую сторону смотрит его корпус.

WEAPON

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

Реализовывать баллистику я не стал. Зачем ведь в Unreal Engine уже есть Particle System Compenent  :) Я его использовал и теперь на пули действует гравитация, хотя по факту это почти не имеет значения, ведь перестрелки происходят в закрытом помещении и пуля не существенно меняет траекторию.

При выстреле оружие выбрасывает гильзу, а в старых версиях при перезарядке сбрасывался магазин со всеми оставшимися патронами. В последних версиях я это пока убрал но обязательно верну.

На данный момент я сделал 3 вида оружия Пистолет Автомат и Дробовик. Это пока так называемые базовые виды, от которых я буду наследовать и создавать вариации, разные ПП, Крупнокалиберные пистолеты, двухстволка, обрез и прочее.

Граната, но реализована она очень криво. Бросок гранаты совершенно не контролируется. А получилось так потому что у меня есть бросок гранаты и я просто по событию включаю физику для гранаты как раз в тот момент когда на анимации и происходит бросок. В итоге все выглядит вроде бы правильно, но бросить поближе или подальше нет никакой возможности (во всяком случае пока).

AI

Можно сколь угодно долго реализовывать стрельбу или управление персонажем, но пока не с кем воевать это не имеет никакого смысла.

Для ботов я реализовал следующее поведение:

  1. Боты при виде врага начинают войну.
  2. Каждый бот имеет параметр "смелости", который является временем в течение которого бот может вести огонь в открытую.
  3. Когда время "смелости" истекает бот начинает двигаться в укрытие. Укрытием в игре не является какое либо конкретное место. Укрытие это любое ближайшее место которое не просматривается врагом. 
  4. Если бот "видит", что Враг видит его голову но при этом не видит ноги, значит бот будет сидеть в укрытии.
  5. Время которое бот отсиживается в укрытии не постоянное, плюс этот параметр также может настраиваться.
  6. Если бот теряет врага из виду, он двигается к тому месту где видел его последний раз.
  7. Если бот не находит его в том месте где его видел в последний раз он начинает его "Искать". Поиск реализован очень тупо. Бот просто идет в примерное место где находится враг. Точно по какому маршруту придет к врагу бот неизвестно, так как точка в радиусе от врага выбирается случайно.
  8. Если бот потеряет оружие он постарается его подобрать. Если у него есть еще одно оружие он возьмет его.
  9. Бот слышит врага. (Пока только врага, он будет тупо стоять если воюет его союзник).
  10. Если враг слишком близко, бот может ударить рукой или ногой.

BLOOD

Крови я решил уделить особое внимание, так как на создание игры меня натолкнул трек Кровостока "Белый ягуар" из альбома "Река крови" :)

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

GAMEPLAY MECHANICS

Основным источником вдохновения в реализации игры для была и есть Hotline Miami.
Поэтому в игре очень легко умереть, один выстрел с дробовика, или три выстрела с пистолета, автоматная очередь, или выстрел в голову - смертелен.

При смерти уровень сразу же перезагружается без длительного ожидания. 

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

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

Попадание пули в оружие, выбивает его из рук.

Можно бить ногами руками и прикладом (эта часть игры недоработана).

Оружие выпавшее со врага можно подобрать или забрать с него патроны.

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

VEHICLE

Как я уже сказал, идея игры выросла из трека "Белый ягуар" и в игре я планирую воссоздать события описанные в треке.

Я хочу использовать маленькую геймплейную вставку с ездой на машине и для нее я решил создать машину Ягуар (отсюда и название пока еще прототипа)

За основу решил не брать уже готовые компоненты, а построить свой велосипед.

Замечу что не брать дефолтный компонент я не стал чисто из-за того что в нем используется машина на рей-кастах. Это в общем такой подход когда колеса на самом деле колесами не являются. В качестве колес выступают лучи, которые выпускаются под прямым углом от оси колеса и таким образом проверяется касается-ли колесо поверхности или нет, и с помощью расчетов создается визуализация того что колесо крутится.
Я в своем подходе решил использовать "реальные" физические колеса присоединенные к машине физическими констрейнтами, в результате машина едет именно потому что колеса крутятся. Такой подход тоже имеет свои минусы. Поэтому я пока не решил что для меня важнее.

UI

Добавил главное меню

Меню Настроек (настройка громкости фоновый музыки, настройка чувствительности мыши)

Доска лидеров

Files

Jaguar prototype v0.0.10
External
Sep 10, 2020

Get ЯГУАР

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.