What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Разработка онлайн крипто-игры на UE5 [Управление и анимирование персонажа #1]

OverlordGameDev

Light Weight
Депозит
$0

Предисловие:​

В данной статье будет описано, как реализовать управление и анимирование персонажа на игровом движке UE5. К выпуску планируется не одна статья, а гораздо больше; в каждой из них поэтапно можно будет наблюдать разработку любительского онлайн-проекта с использованием блокчейн-технологии. Статьи планируются в формате DevBlog – инструкции и только для форума XSS.is

Как будет реализовано взаимодействие с блокчейном:​

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

Почему Unreal Engine 5?​

Данный движок был выбран из-за ряда плюсов перед Unity. Первым и главным плюсом в выборе движка была возможность простой реализации онлайн-составляющей, так как данный движок изначально разрабатывался для онлайн-игр. В нём буквально в пару кликов можно сделать онлайн-синхронизацию объектов. Вторым плюсом являлся удобный инструмент для ретаргета анимаций, благодаря которому можно легко переносить анимации с одного скелета на другой. Третьим и не менее важным плюсом для инди-разработчика являются условия соглашения пользования движком, а именно - разработчик может использовать движок абсолютно бесплатно и без каких-либо ограничений, если выручка с игры не превышает 1 000 000$. В Unity без покупки платной версии движка при запуске игры будет постоянно показываться логотип Unity, а это уже большой минус, не говоря уже о пользовательском соглашении, которое постоянно меняется не в лучшую сторону для пользователей.

Порядок реализации механик в данной статье:​

  1. Добавление Root Bone
  2. Прыжок и перемещение персонажа
  3. Анимирование персонажа
  4. Анимирование прыжка
  5. Добавление смены камеры третьего лица на первое и обратно
  6. Поворот тела вверх и вниз за камерой
  7. Добавление анимаций поворота персонажа на месте влево и вправо
  8. Бонус инструкция #1 (Смешивание двух анимаций в одну прямо в AnimGraph в StateMachine)
  9. Бонус инструкция #2 (Замена скелета у анимаций)
  10. Легкий наклон игрока при ходьбе с поворотом мыши в сторону
  11. IK для ног(сгибание колена и ступни при неровной поверхности)

P.S. Целью этого проекта является показать, что реализовать крипто-проект с полноценными механиками и онлайн-составляющей, а не подобие «Хомяка» (который сделан только ради хайпа и заработка), вполне возможно, если есть желание.

Необходимое ПО:​

  1. Unreal Engine 5
  2. Blender

Подготовка среды разработки:​

Unreal Engine 5. Это движок, на котором и будет разрабатываться данный проект. Чтобы его получить, нужно зарегистрироваться в Epic Games по этой ссылке: https://www.epicgames.com/id/login. После регистрации потребуется скачать официальный лаунчер.
1722622771594.png


1722622780051.png


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


Подготовка материала:​

Первое, что нам понадобится в игре, — это объект, которым будет управлять игрок. В нашем случае это будет гуманоидный тип, а если точнее, человек в стилистике «Тиби». Что такое “Тиби”: если кратко, то «Тиби» — это персонаж в аниме-стилистике гуманоидного типа, маленького роста и непропорционально большой головой.

Моделирование персонажа:​

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

Когда модель будет готова, ей необходимо добавить скелет. Для создания и привязки скелета к модели нужно немало времени и знаний, но есть простой вариант добавить кости любой гуманоидной модели. Для этого существует сайт под названием Mixamo: https://www.mixamo.com/.

P.S. На данном сайте потребуется регистрация или авторизация с помощью Google-аккаунта. После авторизации потребуется загрузить модель персонажа на сайт.

Критерии к модели персонажа:​

Модель должна быть в формате FBX или OBJ. Также модель персонажа должна состоять из одного объекта, то есть модель персонажа, одежда, волосы и т.д. должны быть одним объектом, а не несколькими. Если модель подходит по критериям, её можно загрузить на сайт, и после загрузки модели потребуется распределить контрольные точки для костей, как показано в инструкции на сайте:
1722622817184.png


1722622833878.png

1722622842472.png



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


Теперь необходимы анимации, которые будут проигрываться при перемещении персонажа, а именно:
  1. Стойка
  2. Бег вперед
  3. Бег назад
  4. Бег влево
  5. Бег вправо
  6. Бег вправо назад
  7. Бег влево назад
Анимации необходимо качать с такими параметрами:

1722622908731.png


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


После скачивания всех необходимых анимаций и модели нужно их немного доработать, а именно: добавить Root-кость анимациям и персонажу.

P.S. Root-кость нужна для того, чтобы в дальнейшем сделать IK для ног. Об этом будет рассказано в конце статьи, но кость нужно добавить на начальном этапе, так как если сделать это потом, придется заменять все модели и анимации в проекте на новые, а это достаточно долго, если проект уже имеет приличное количество функционала.

Добавление Root Bone:​

Для того чтобы добавить Root-кость к персонажу и анимациям, нужно скачать Blender и плагин для него:

Что такое Blender?
Blender — это программа для 3D моделирования и анимирования. Программа абсолютно бесплатная, и скачать её можно с официального сайта или в Steam.

В первую очередь нужно скачать и установить плагин: GitHub - enziop/mixamo_converter: Blender addon for converting mixamo animations to Unreal 4 rootmotion
После скачивания нужно открыть Blender и нажать на кнопку Edit/Preferences.

1722622932740.png


Далее необходимо выбрать путь до zip архива скачанного с GitHub
1722622950197.png


После установки плагина в правой части интерфейса программы появится новое меню, и в нем необходимо убрать абсолютно все галочки:
1722622967029.png


Необходимо выбрать папку, в которой у нас лежат анимации и модель персонажа, выбираем папку, в которую будут сохранены новые версии анимаций и модели. После этого нужно нажать на кнопку “Batch Convert”:

1722622979263.png



На этом добавление Root-кости закончено. Теперь нужно перенести все эти материалы в проект. Для этого в проекте создайте папку Character, в ней папку Models и папку Animations. Затем перенесите в соответствующие папки материалы. Первым нужно перенести модель персонажа, затем уже анимации. При переносе анимаций нужно выбрать скелет загруженного персонажа, чтобы к анимациям сразу привязалась модель.

1722622987631.png



После подготовки первичных материалов для игры можно начинать делать управление персонажу.

Прыжок и перемещение персонажа:​

Первое что нужно сделать это назначить клавиши управления:

1722623010757.png



1722623024255.png



В назначении действий нужно добавить Jump:

1722623038242.png



В назначении осей нужно добавить движение вперед/назад (MoveFB) и влево/вправо:

1722623057322.png



Теперь так же нужно сделать и для движения мышью:

1722623067641.png



После настройки клавиш нужно перейти в папку Character, нажать правую кнопку мыши и выбрать BluePrint Class:

1722623086313.png



1722623097397.png



Теперь нужно создать еще одну папку с названием GameMods, также создать в ней BluePrint но другого типа:

1722623137227.png



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

1722623163397.png



Далее в правом верхнем углу экрана нужно нажать на настройки и открыть вкладку параметра мира (нашей сцены):

1722623179024.png



Затем нужно найти вкладку GameMode и перетащить туда второй BluePrint (GameMods):

1722623193151.png



После этого нужно перейти в первый BluePrint (Character):

1722623202078.png



Перейдите в меш и в его свойствах добавьте скелет персонажа. При необходимости подстройте размеры меша и поворот под размеры капсулы.
  • Если нужно поменять толщину или высоту капсулы то перейдите в ее свойства и меняйте эти параметры:
1722623226437.png



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

1722623254039.png



Далее таким же образом нужно добавить внутрь этого компонента камеру:

1722623265926.png



Теперь нужно зайти в Event Graph:

1722623277131.png



Нужно кликнуть правой кнопкой мыши в пространстве и выбрать Event нажатия кнопок вперед и назад, которые мы делали ранее при назначении клавиш.

1722623287301.png



Также нужно сделать для влево и вправо (InputAxis отвечает за непрерывные нажатия, то есть удержание кнопки).

1722623297115.png



Затем нужно вызвать функцию “Add Movement Input” (функция отвечает за передвижение любого объекта) и связать её с ивентом. В параметр Value передается значение, которое указывали при создании ивентов для клавиш, то есть 1 и -1.

1722623303398.png



1722623316379.png



Затем нужно вызвать функцию Get Control Rotation (функция для получения направления, куда смотрит объект, в нашем случае персонаж) и из неё вытянуть Break Rotator (разбивает направление на X, Y, Z).

P.S. Объект, чье направление получает Get Control Rotation, — это объект, в чьем BluePrint вы сейчас находитесь.

1722623327653.png




Затем из World Direction нужно вытянуть вектора. Для ходьбы вперед или назад нужен вектор Forward, для влево и вправо нужен вектор Right.

1722623341338.png



После этого нужно вытянуть из векторов Make Rotator и из него вытянуть Z, а затем соединить его с Break Rotator.

1722623354307.png



Добавлю комментарии для большей ясности того, как устроено передвижение по определенным направлениям (комментарии добавляются нажатием буквы "C"):

1722623365939.png



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

1722623374631.png



Теперь нужно привязать к ним функции Pitch (отвечает за наклон камеры вверх или вниз) и Yaw (отвечает за поворот камеры влево или вправо):

1722623382644.png



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

1722623402336.png



Теперь нужно сделать прыжок. Для этого нужно вернуться обратно в Event Graph и вызвать ивент Input Action (Input Action отвечает за клик на кнопку, а не удержание, как в случае Input Axis).

1722623414530.png



1722623422650.png



Из него нужно вытянуть 2 функции, jump и stop jump (готовые функции для механики прыжка предоставляемые движком).

1722623433157.png



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

P.S Т.к на форуме есть ограничение по количеству загружаемых картинок, придется разделить статью на много частей, эти части будут ниже в виде сообщений в данной теме
 
Top