Unreal engine что можно сделать

Unreal Engine 4 для развития своих способностей

Доброго времени суток, Хабр!

В этой статье я бы хотел поговорить с вами о недавно вышедшем Unreal Engine 4, который на данный момент набирает все большую популярность среди разработчиков игр. И хотя статья о UE4, однако она совсем не про игростой, хоть и связана с ним.

Unreal engine что можно сделать. 0f841be9d1ca477486889ebdc5c3292b. Unreal engine что можно сделать фото. Unreal engine что можно сделать-0f841be9d1ca477486889ebdc5c3292b. картинка Unreal engine что можно сделать. картинка 0f841be9d1ca477486889ebdc5c3292b

Я бы хотел обратить ваше внимание на другую сторону Unreal Engine 4, которая будет несомненно полезна тем, кто собирается выбрать свой путь в жизни и обучаться разработке. Речь об образовательных способностях данного движка.

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

О себе

Меня зовут Александр и мне сейчас 20 полных годиков. Вся жизнь ещё впереди и самое время определиться со своим будущим. Года три назад я начал увлекаться 3х-мерным моделированием и к сегодняшнему дню, на мой взгляд, добился хороших результатов. Ещё с детства я любил играть во всякие компьютерные игры и, как и многие, мечтал сделать что-то подобное. Поэтому моя специальность направлена в основном на real-time моделирование.

Однако для создания полноценных игр мне этого не хватало, так как я не знал языков программирования, хотя мат. мышление было на хорошем уровне. Я пытался познать PHP, C++, Lua, RubyOnRails, JS. Но максимум, на что меня хватило, это Jquery, да и тот через неделю после курса умудрился забыть. Все это довольно таки разочаровывало, но я не сдавался, продолжая тем временем совершенствовать свои способности в 3х-мерной графике.

Меньше года назад вышел UE4 и я, как поклонник Unreal Tournament и самого Unreal Engine, очень обрадовался. Побежал учить. Тут я бы хотел проводить вас к следующим пунктам, которые расскажут, что может дать UE4, помимо самих игр.

Программирование и логика

Как некоторые знают, в движке можно писать игровую логику на С++, а так же с помощью визуальной системы программирования — Blueprint. Для тех, кто не знает, выглядит она так:

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader
Алгоритм сортировки (методом вставки) по цене предметов в инвентаре

Как раз об этой системе я и хотел бы с вами поговорить. Будем называть её «Блупринт».

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

Когда в первый раз его увидел, я был очень рад, что смог повторить попытку изучения программирования на данной системе. И действительно все пошло куда лучше, чем с текстовыми языками. Я начал с простых вещей. Переменные, простые функции, что куда соединять и все в таком духе. Тогда (это было летом 14-го года) я ещё не очень хорошо соображал, как правильно организовывать работу, как правильно и оптимизированно строить алгоритмы. Но постепенно я стал осваиваться в данной системе.

Через какое-то время стал делать простенькие игрушки. Стал разбираться в классах, в коммуникациях между отдельными объектами, миром и глобальными классами. Тут-то я заметил, что становлюсь настоящим программистом — после компиляции Блупринтов и запуска с проверкой все работало как надо. Счастья было очень много.

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

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

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

Давайте взглянем на другой пример — Материалы:

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

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

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

Давайте возьмем простенький пример: у материала может быть цвет и гладкость; у вас есть текстура, на которой изображены различные делали вашего предмета, и она вся красивая и радует глаз. Но наложив на модель просто текстуру, вы понимаете, что тут чего-то не хватает. Точно! Вот эта часть должна быть гладкая и отражать мир вокруг, а вот эта делать наоборот матовой без каких либо отражений. Тут вам может пригодится математика, что бы из вашей текстуры сгенерировать черно-белую карту, где белый цвет будет означать матовую часть, а черный — гладкую.

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

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

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Конечно, текстура не обычная, а специальная, но суть в том, что после изучения системы и небольшого опыта, вы научитесь строить самые невероятные вещи.

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

Дизайн и творчество

Вам когда-нибудь хотелось построить свой дом, походить в нем? Снять свой фильм? Или просто создать красивую или мрачную сцену что бы выплеснуть накопившиеся эмоции? Если да, то Unreal Engine 4 вам тоже сможет чем-то помочь.

Вот несколько впечатляющих роликов, демонстрирующие графические возможности:

А так же в сфере визуализации архитектуры:

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

Сам же Unreal Engine 4 предоставляет некоторый набор, благодаря которому можно создать что-то свое, не прибегая к стороннему софту (не считая текстур). Не хочу вдаваться в подробности, которые вы сами сможете изучить, если заинтересуетесь, однако упомянуть все же стоит.

Внутри редактора существует инструмент, под названием BSP, благодаря которой вы можете спроектировать сцену. Хотя инструмент и предназначен для проектирования, а не для финального результата, но с помощью него можно сделать несложную модель и даже сконвертировать её для того, что бы она могла подвергаться физике. Можно сделать дом, забор и тому подобное. Что угодно, на что хватит терпения, так как инструмент пока что не самый удобный в использовании.

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

Для тех, кто знаком с 3х-мерным моделированием, в UE4 будет ещё больше возможностей. Простота в импортировании (через формат FBX), простота установки, наложение материалов, да и их создание тоже не такое сложное, если разобраться, работа со светом, запекание и многое другое.

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

Unreal engine что можно сделать. 121b3644a605395f2f654c2b73196b99. Unreal engine что можно сделать фото. Unreal engine что можно сделать-121b3644a605395f2f654c2b73196b99. картинка Unreal engine что можно сделать. картинка 121b3644a605395f2f654c2b73196b99
Работа пользователя The_Distiller с официального форума

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

Конечно, тут можно придумать ещё множество преимуществ. Например, визуализация архитектуры в реальном времени на примере видео, что было выше. Снятие красивых 3д роликов без многочасового рендера. Даже есть поддержка VR очков, благодаря чему можно сделать виртуальный тур. А представьте, если этот тур будет по той реалистичной квартире? Словом, для творческих людей тут тоже найдется местечко.

Подводим итоги

Несмотря на то, что Unreal Engine 4 является движком для создания компьютерных игр, его можно использовать в самых различных целях. В данной статье я хотел выставить его со стороны образования и как личного помощника в развитии своих мыслительных способностей. Не хочу судить свой текст, однако я постарался расписать максимально понятно для людей любого возраста и профессии и, надеюсь, в будущем движок поможет очень многим, в том числе юному поколению.

Конечно, не стоит рассматривать UE4 как набор кнопок «сделать все хорошо». Инструмент очень мощный с впечатляющим функционалом, поэтому изучить все и сразу тоже не получится. Однако если вы сумеете поставить себе стимул и наберетесь достаточно терпения, то все у вас получится!

Сам я изучаю UE4 не больше 7-ми месяцев и преуспел во многих сферах внутри редактора, даже открыл свое сообщество. Однако ещё много чего не изучено, поэтому в будущем от меня могут быть дополнительные статьи. Если и эта статья вам понравится, конечно.

Источник

Туториал по Unreal Engine. Часть 5: Как создать простую игру

Unreal engine что можно сделать. ebf1d5892d1573a1e457f1f8f83708c2. Unreal engine что можно сделать фото. Unreal engine что можно сделать-ebf1d5892d1573a1e457f1f8f83708c2. картинка Unreal engine что можно сделать. картинка ebf1d5892d1573a1e457f1f8f83708c2

Если вы новичок в разработке игр, то логичнее всего начинать с создания простой игры. Она научит вас реализации простых механик и тому, как объекты взаимодействуют друг с другом.

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

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Учтите, что в этой части мы будем пользоваться Blueprints и UMG. Если вам нужно освежить свои знания, то прочитайте части, посвящённые Blueprints и UI.

Примечание: эта статья является одной из восьми частей туториала по Unreal Engine:

Приступаем к работе

Скачайте заготовку проекта и распакуйте её. Перейдите в папку проекта и откройте InfiniteMatrix.uproject.

Примечание: если откроется окно, сообщающее, что проект создан в более ранней версии Unreal editor, то всё в порядке (движок часто обновляется). Можно или выбрать опцию создания копии, или опцию преобразования самого проекта.

Нажмите на Play, чтобы проверить управление движением. Двигая мышью, можно перемещаться вертикально и горизонтально.

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

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

Движение игрока вперёд

Перейдите в папку Blueprints и откройте BP_Player.

Чтобы двигать игрока вперёд, нужно добавлять в каждом кадре к местоположению игрока смещение.

Во-первых, нам нужно создать переменную, задающую скорость движения игрока вперёд. Создайте переменную Float по названием ForwardSpeed и задайте значение по умолчанию 2000.

Unreal engine что можно сделать. 0a1e60532835fc43d584febbf9ef226a. Unreal engine что можно сделать фото. Unreal engine что можно сделать-0a1e60532835fc43d584febbf9ef226a. картинка Unreal engine что можно сделать. картинка 0a1e60532835fc43d584febbf9ef226a

Теперь перейдите в Event Graph и найдите нод Event Tick. Создайте следующую схему:

Unreal engine что можно сделать. 22984fb4c7ee825e265aacf3ecff4d48. Unreal engine что можно сделать фото. Unreal engine что можно сделать-22984fb4c7ee825e265aacf3ecff4d48. картинка Unreal engine что можно сделать. картинка 22984fb4c7ee825e265aacf3ecff4d48

Умножая ForwardSpeed на Delta Seconds, мы получим независимый от частоты кадров результат.

Примечание: если вам непонятно, что такое независимость от частоты кадров, то прочитайте часть туториала про Blueprints. Мы разбираем её в разделе Независимость от частоты кадров.

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

Движение вдоль одной оси

Чтобы перемещать игрока, создайте нод AddActorWorldOffset. Измените значение Sweep на true, нажав на флажок.

Unreal engine что можно сделать. 3fb8f4de649ef6d73f5cd13ffab8dfd3. Unreal engine что можно сделать фото. Unreal engine что можно сделать-3fb8f4de649ef6d73f5cd13ffab8dfd3. картинка Unreal engine что можно сделать. картинка 3fb8f4de649ef6d73f5cd13ffab8dfd3

Если попробовать соединить результат Float с входом Delta Location, то Unreal автоматически преобразует его в Vector.

Unreal engine что можно сделать. 7c15d417183251da74cabfdbacf86844. Unreal engine что можно сделать фото. Unreal engine что можно сделать-7c15d417183251da74cabfdbacf86844. картинка Unreal engine что можно сделать. картинка 7c15d417183251da74cabfdbacf86844

Однако таким образом значение Float будет записано в компоненты X, Y и Z вектора. Для нашей игры движение вперёд должно выполняться только вдоль оси X. К счастью, можно разделить Vector на три компонента Float.

Убедитесь, что контакт Delta Location нода AddActorWorldOffset ни с чем не соединён. Нажмите правой клавишей мыши на контакт Delta Location и выберите Split Struct Pin.

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Наконец, соедините всё следующим образом:

Unreal engine что можно сделать. d7a3e6ba4d092529fcc9d1b8c303e746. Unreal engine что можно сделать фото. Unreal engine что можно сделать-d7a3e6ba4d092529fcc9d1b8c303e746. картинка Unreal engine что можно сделать. картинка d7a3e6ba4d092529fcc9d1b8c303e746

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Вместо расположения туннелей вручную мы можем создать Blueprint, автоматически спаунящий туннели.

Создание системы спауна туннелей

Перейдите в Content Browser и зайдите в папку Blueprints. Создайте новый Blueprint Class с родительским классом Actor. Назовите его BP_TunnelSpawner и откройте его.

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

Чтобы передавать функции местоположение, функции нужен входной параметр. Они будут отображаться при вызове функции как входные контакты.

Unreal engine что можно сделать. 20159706fe73b09132c24e2ac8e5fa3a. Unreal engine что можно сделать фото. Unreal engine что можно сделать-20159706fe73b09132c24e2ac8e5fa3a. картинка Unreal engine что можно сделать. картинка 20159706fe73b09132c24e2ac8e5fa3a

Также они будут отображаться как выходные контакты нода Entry функции.

Unreal engine что можно сделать. 33b2b71aa79d82082d934959194fd3a2. Unreal engine что можно сделать фото. Unreal engine что можно сделать-33b2b71aa79d82082d934959194fd3a2. картинка Unreal engine что можно сделать. картинка 33b2b71aa79d82082d934959194fd3a2

Давайте создадим входной параметр. Перейдите в граф функции SpawnTunnel. Выберите нод Entry и перейдите в панель Details. Нажмите на значок + рядом с разделом Inputs.

Unreal engine что можно сделать. 2b45abd1d2cffb4f7b47179c3d884484. Unreal engine что можно сделать фото. Unreal engine что можно сделать-2b45abd1d2cffb4f7b47179c3d884484. картинка Unreal engine что можно сделать. картинка 2b45abd1d2cffb4f7b47179c3d884484

Переименуйте входной параметр в SpawnLocation и смените его тип на Vector.

Unreal engine что можно сделать. d98daee5661943bc48914efa7d95fa93. Unreal engine что можно сделать фото. Unreal engine что можно сделать-d98daee5661943bc48914efa7d95fa93. картинка Unreal engine что можно сделать. картинка d98daee5661943bc48914efa7d95fa93

Чтобы создать туннель, добавьте нод Spawn Actor From Class. Нажмите на раскрывающийся список, расположенный справа от контакта Class и выберите BP_Tunnel.

Unreal engine что можно сделать. f6b4d29c193a88e1d5c7e7c20f82e1f9. Unreal engine что можно сделать фото. Unreal engine что можно сделать-f6b4d29c193a88e1d5c7e7c20f82e1f9. картинка Unreal engine что можно сделать. картинка f6b4d29c193a88e1d5c7e7c20f82e1f9

Чтобы задать местоположение спауна, нажмите правой клавишей на контакт Spawn Transform и выберите Split Struct Pin. Затем соедините нод Spawn Actor From Class с нодом Entry:

Unreal engine что можно сделать. ef0d5c806dc4e69aa20d45d3ad01f88d. Unreal engine что можно сделать фото. Unreal engine что можно сделать-ef0d5c806dc4e69aa20d45d3ad01f88d. картинка Unreal engine что можно сделать. картинка ef0d5c806dc4e69aa20d45d3ad01f88d

Теперь при вызове функции SpawnTunnel она будет спаунить экземпляр BP_Tunnel в переданном ей местоположении.

Давайте проверим, как это работает!

Проверка системы спауна туннелей

Переключитесь на Event Graph и найдите нод Event BeginPlay. Добавьте нод SpawnTunnel и соедините его с нодом Event BeginPlay.

В ноде SpawnTunnel задайте Spawn Location значение (2000, 0, 500).

Unreal engine что можно сделать. 6b50933ac86f46044bc4005712234581. Unreal engine что можно сделать фото. Unreal engine что можно сделать-6b50933ac86f46044bc4005712234581. картинка Unreal engine что можно сделать. картинка 6b50933ac86f46044bc4005712234581

Теперь при запуске игры он будет спаунить туннель сверху и перед игроком. Нажмите на Compile и вернитесь в основной редактор.

Сначала удалите BP_Tunnel из уровня. Для этого щёлкните на BP_Tunnel в World Outliner. Затем нажмите на клавишу Delete, чтобы удалить его с уровня.

Затем перейдите в Content Browser. Перетащите левой клавишей мыши BP_TunnelSpawner во Viewport. Благодаря этому его экземпляр появится на уровне.

Если нажать на Play, то игра будет спаунить туннель сверху и перед игроком.

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Закончив проверку, вернитесь к BP_TunnelSpawner. Сбросьте значения Spawn Location нода SpawnTunnel на (0, 0, 0).

После этого нажмите на Compile и вернитесь в основной редактор.

В следующем разделе мы настроим работу BP_Tunnel.

Настройка Blueprint туннеля

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

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

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

Давайте начнём с создания зоны триггера.

Создание зоны триггера

Откройте BP_Tunnel и перейдите в панель Components. Добавьте компонент Box Collision и назовите его TriggerZone.

Пока область коллизии довольно мала. Перейдите в панель Details и найдите раздел Shape. Задайте свойству Box Extent значения (32, 500, 500).

Unreal engine что можно сделать. 3b61283559c3634f68fa93cf1daf0618. Unreal engine что можно сделать фото. Unreal engine что можно сделать-3b61283559c3634f68fa93cf1daf0618. картинка Unreal engine что можно сделать. картинка 3b61283559c3634f68fa93cf1daf0618

Теперь задайте свойству Location значения (2532, 0, 0). Это разместит TriggerZone прямо в конец меша туннеля. Это значит, что новый туннель должен будет создаваться только когда игрок достигнет конца туннеля.

Unreal engine что можно сделать. 4c38d96add443f44c49c0d537b18badc. Unreal engine что можно сделать фото. Unreal engine что можно сделать-4c38d96add443f44c49c0d537b18badc. картинка Unreal engine что можно сделать. картинка 4c38d96add443f44c49c0d537b18badc

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

Создание точки спауна

Для задания местоположения точки спауна можно использовать компонент Scene. Эти компоненты идеально подходят для задания местоположений, потому что у них есть только Transform. Кроме того, они видимы во Viewport, поэтому вы можете видеть, где находится точка спауна.

Перейдите в панель Components и убедитесь, что ничего не выбрано. Добавьте компонент Scene и переименуйте его в SpawnPoint.

Unreal engine что можно сделать. e10ef2dd3356e22924f48f25494d0f30. Unreal engine что можно сделать фото. Unreal engine что можно сделать-e10ef2dd3356e22924f48f25494d0f30. картинка Unreal engine что можно сделать. картинка e10ef2dd3356e22924f48f25494d0f30

Меш туннеля имеет длину 2500 единиц по оси X, поэтому именно здесь должна быть точка присоединения. Перейдите в панель Details и задайте свойству Location значения (2500, 0, 0).

Unreal engine что можно сделать. 26554b7d3e9883df701d9add3aa3a1bd. Unreal engine что можно сделать фото. Unreal engine что можно сделать-26554b7d3e9883df701d9add3aa3a1bd. картинка Unreal engine что можно сделать. картинка 26554b7d3e9883df701d9add3aa3a1bd

Следующее, что нужно сделать — создать функцию, которая спаунит туннель в SpawnPoint.

Создание туннелей в точке спауна

Нажмите на Compile и переключитесь на BP_TunnelSpawner.

Следующий BP_Tunnel должен спауниться в SpawnPoint самого дальнего туннеля. Благодаря этому туннель всегда будет продолжаться.

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Поскольку самый дальний туннель всегда будет последним созданным, то нам легко получить ссылку на него.

Откройте граф SpawnTunnel. Нажмите правой клавишей мыши на контакте Return Value нода Spawn Actor From Class. Выберите Promote to Variable и переименуйте переменную в NewestTunnel.

Unreal engine что можно сделать. 9c9b0e179207de210465a211146dbed8. Unreal engine что можно сделать фото. Unreal engine что можно сделать-9c9b0e179207de210465a211146dbed8. картинка Unreal engine что можно сделать. картинка 9c9b0e179207de210465a211146dbed8

Теперь у нас всегда будет ссылка на самый дальний туннель.

Далее создайте новую функцию и назовите её SpawnTunnelAtSpawnPoint. Создайте следующий граф:

Unreal engine что можно сделать. d26ab22b30f0997ccd6298b264ce60fa. Unreal engine что можно сделать фото. Unreal engine что можно сделать-d26ab22b30f0997ccd6298b264ce60fa. картинка Unreal engine что можно сделать. картинка d26ab22b30f0997ccd6298b264ce60fa

Эта схема будет получать самый новый туннель и местоположение его компонента SpawnPoint, после чего спаунить новый туннель в этом местоположении.

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

Создание ссылки на спаунер туннелей

Нажмите на Compile и закройте граф SpawnTunnelAtSpawnPoint. Переключитесь на BP_Tunnel.

Добавьте новую переменную и назовите её TunnelSpawner. В качестве Variable Type выберите BP_TunnelSpawner\Object Reference.

Unreal engine что можно сделать. e660112e6b6beca492b0ebac6a6d7117. Unreal engine что можно сделать фото. Unreal engine что можно сделать-e660112e6b6beca492b0ebac6a6d7117. картинка Unreal engine что можно сделать. картинка e660112e6b6beca492b0ebac6a6d7117

Нажмите на Compile и переключитесь на BP_TunnelSpawner.

Откройте граф SpawnTunnel и добавьте обозначенные ноды:

Unreal engine что можно сделать. 4f1ccfae12ae1afcaf07c993135970c0. Unreal engine что можно сделать фото. Unreal engine что можно сделать-4f1ccfae12ae1afcaf07c993135970c0. картинка Unreal engine что можно сделать. картинка 4f1ccfae12ae1afcaf07c993135970c0

Теперь у каждого туннеля будет ссылка на BP_TunnelSpawner.

Далее нужно сообщить BP_TunnelSpawner о необходимости спауна следующего туннеля, когда игрок входит в TriggerZone.

Скриптинг зоны триггера

Нажмите на Compile и переключитесь на BP_Tunnel.

Перейдите в панель Components и нажмите правой клавишей на TriggerZone. Выберите Add Event\Add OnComponentBeginOverlap. Это добавит в Event Graph следующий нод:

Unreal engine что можно сделать. 9b5e8ccf51454e3570930c40141498ce. Unreal engine что можно сделать фото. Unreal engine что можно сделать-9b5e8ccf51454e3570930c40141498ce. картинка Unreal engine что можно сделать. картинка 9b5e8ccf51454e3570930c40141498ce

Этот нод будет выполняться когда другой Actor касается TriggerZone.

Сначала нам нужно проверить, является ли Actor, касающийся TriggerZone, игроком.

Перетащите контакт Other Actor. Отпустите левую клавишу мыши в пустом пространстве и выберите в меню Cast to BP_Player.

Unreal engine что можно сделать. 9bbf06b85074ab0d8986f94ea452c55f. Unreal engine что можно сделать фото. Unreal engine что можно сделать-9bbf06b85074ab0d8986f94ea452c55f. картинка Unreal engine что можно сделать. картинка 9bbf06b85074ab0d8986f94ea452c55f

Примечание: туннель спаунится в конце другого туннеля, поэтому он приведёт к срабатыванию триггера TriggerZone этого туннеля. Cast to BP_Player предотвращает выполнение всех дальнейших нодов, если Other Actor является туннелем.

Теперь добавим обозначенные ноды после нода Cast to BP_Player:

Unreal engine что можно сделать. e0584ab41ccec31138fbc648d129671c. Unreal engine что можно сделать фото. Unreal engine что можно сделать-e0584ab41ccec31138fbc648d129671c. картинка Unreal engine что можно сделать. картинка e0584ab41ccec31138fbc648d129671c

Давайте посмотрим, что здесь происходит пошагово:

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

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

Создание нескольких туннелей

Первое, что нужно сделать — создать функцию, создающую определённое количество туннелей.

Откройте BP_TunnelSpawner и создайте новую функцию с названием SpawnInitialTunnels.

Чтобы спаунить определённое количество туннелей, можно использовать нод ForLoop. Этот нод будет выполнять соединённые с ним ноды указанное количество раз. Добавьте нод ForLoop и соедините его с нодом Entry.

Unreal engine что можно сделать. e4f35f550f27322d7c40d61544fa126e. Unreal engine что можно сделать фото. Unreal engine что можно сделать-e4f35f550f27322d7c40d61544fa126e. картинка Unreal engine что можно сделать. картинка e4f35f550f27322d7c40d61544fa126e

Чтобы нод ForLoop выполнялся n раз, необходимо задать для Last Index значение n – 1.

В этом туториале мы будем спаунить три туннеля. Для выполнения трёх циклов задайте Last Index значение 2.

Unreal engine что можно сделать. 6bf3afd09a9157a87580e7a50f227089. Unreal engine что можно сделать фото. Unreal engine что можно сделать-6bf3afd09a9157a87580e7a50f227089. картинка Unreal engine что можно сделать. картинка 6bf3afd09a9157a87580e7a50f227089

Примечание: если не задать поля First Index или Last Index, то по умолчанию они будут равны 0.
Когда игра начинается, игрок всегда должен находиться в туннеле. Для этого можно создать первый туннель в местоположении игрока.

Создание первого туннеля

Чтобы определить, был ли создан первый туннель, мы можем проверить, задано ли NewestTunnel. Если нет, то это значит, что первый туннель ещё не создан, потому что NewestTunnel задаётся только после того, как игра создаст туннель.

Чтобы выполнить эту проверку, добавим нод IsValid (на котором есть знак вопроса) после нода ForLoop.

Затем получим ссылку на NewestTunnel и соединим её с контактом Input Object нода IsValid.

Unreal engine что можно сделать. 5e57dc9e0ecca9fa7f5c3b483985da53. Unreal engine что можно сделать фото. Unreal engine что можно сделать-5e57dc9e0ecca9fa7f5c3b483985da53. картинка Unreal engine что можно сделать. картинка 5e57dc9e0ecca9fa7f5c3b483985da53

Если NewestTunnel не задан, то будет выполнен нод Is Not Valid, и наоборот.

Добавьте следующее и соедините ноды с контактом Is Not Valid нода IsValid:

Unreal engine что можно сделать. cfbf9bb59ea0ee5c7d247cd5ecd4ecb4. Unreal engine что можно сделать фото. Unreal engine что можно сделать-cfbf9bb59ea0ee5c7d247cd5ecd4ecb4. картинка Unreal engine что можно сделать. картинка cfbf9bb59ea0ee5c7d247cd5ecd4ecb4

Эта схема будет создавать туннель в местоположении Pawn игрока.

Затем нам нужно создать следующие туннели.

Создание следующих туннелей

Добавьте нод SpawnTunnelAtAttachPoint и соедините его с контактом Is Valid нода IsValid.

Unreal engine что можно сделать. 8e8e095bd88ee7dac271fbf3bc482ee0. Unreal engine что можно сделать фото. Unreal engine что можно сделать-8e8e095bd88ee7dac271fbf3bc482ee0. картинка Unreal engine что можно сделать. картинка 8e8e095bd88ee7dac271fbf3bc482ee0

Вот как выглядит готовый граф:

Unreal engine что можно сделать. 895e9857ea0ff5245f282e382364f8ed. Unreal engine что можно сделать фото. Unreal engine что можно сделать-895e9857ea0ff5245f282e382364f8ed. картинка Unreal engine что можно сделать. картинка 895e9857ea0ff5245f282e382364f8ed

Unreal engine что можно сделать. 98837ec1c39cdafcf296d656d74af52f. Unreal engine что можно сделать фото. Unreal engine что можно сделать-98837ec1c39cdafcf296d656d74af52f. картинка Unreal engine что можно сделать. картинка 98837ec1c39cdafcf296d656d74af52f

Нажмите на Compile, вернитесь в основной редактор и нажмите на Play. Теперь туннель стал гораздо длиннее!

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Игра пока не очень сложна, так что давайте добавим препятствия.

Создание препятствий

Вот меши, которые мы будем использовать как препятствия:

Unreal engine что можно сделать. ce14ddf4be40faaf166512d1fc8777b4. Unreal engine что можно сделать фото. Unreal engine что можно сделать-ce14ddf4be40faaf166512d1fc8777b4. картинка Unreal engine что можно сделать. картинка ce14ddf4be40faaf166512d1fc8777b4

Откройте BP_Tunnel и перейдите в панель Components. Добавьте компонент Static Mesh и назовите его WallMesh.

Перейдите в панель Details и измените его свойство Static Mesh на SM_Hole_01.

Затем задайте его свойству Location значение (2470, 0, 0), расположив его таким образом в конце туннеля.

Unreal engine что можно сделать. e9e5e5c896ef4ab610c9e3ea8ddba497. Unreal engine что можно сделать фото. Unreal engine что можно сделать-e9e5e5c896ef4ab610c9e3ea8ddba497. картинка Unreal engine что можно сделать. картинка e9e5e5c896ef4ab610c9e3ea8ddba497

Чтобы сделать игру интереснее, стены должны ещё и вращаться. Добавим новую переменную Float и назовём её RotateSpeed. Зададим Default Value значение 30.

Переключитесь в Event Graph и найдите нод Event Tick. Создайте следующую схему:

Unreal engine что можно сделать. ff000028e27ed359bbf3b94a60c4e249. Unreal engine что можно сделать фото. Unreal engine что можно сделать-ff000028e27ed359bbf3b94a60c4e249. картинка Unreal engine что можно сделать. картинка ff000028e27ed359bbf3b94a60c4e249

Это заставит WallMesh поворачиваться каждый кадр на заданную величину.

Нажмите на Compile и вернитесь к основному редактору. Нажмите на Play, чтобы увидеть, как поворачиваются стены.

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Давайте сделаем игру ещё интереснее, добавив стенам вариативности.

Создание вариаций стен

Вместо создания нового Blueprint для каждой вариации, мы можем просто рандомизировать WallMesh.

Откройте BP_Tunnel и создайте новую функцию под названием RandomizeWall. Затем создайте следующий граф:

Unreal engine что можно сделать. a9f8ff1b5db774b5d53a0a64683f7766. Unreal engine что можно сделать фото. Unreal engine что можно сделать-a9f8ff1b5db774b5d53a0a64683f7766. картинка Unreal engine что можно сделать. картинка a9f8ff1b5db774b5d53a0a64683f7766

Как следует из названия, нод Set Static Mesh будет задавать WallMesh переданный меш.

Чтобы создать список статичных мешей, можно использовать нод Select.

Перетащите контакт New Mesh. Отпустите левую клавишу мыши на пустом пространстве и добавьте нод Select.

Unreal engine что можно сделать. 3596253383d1c60feef7243389ebe6ae. Unreal engine что можно сделать фото. Unreal engine что можно сделать-3596253383d1c60feef7243389ebe6ae. картинка Unreal engine что можно сделать. картинка 3596253383d1c60feef7243389ebe6ae

Нод Select позволяет задать список вариантов. Вход Index определяет, какой вариант будет выводить нод Select.

У нас есть четыре меша стен, поэтому нужно создать ещё два контакта Option. Это можно сделать правым щелчком на ноде Select, выбрав Add Option Pin. Повторяйте эту операцию, пока у вас не будет четыре контакта Option.

Unreal engine что можно сделать. e6c0502850d7d248ba5b81289b341efc. Unreal engine что можно сделать фото. Unreal engine что можно сделать-e6c0502850d7d248ba5b81289b341efc. картинка Unreal engine что можно сделать. картинка e6c0502850d7d248ba5b81289b341efc

Теперь задайте каждому варианту следующие значения:

Unreal engine что можно сделать. 4be2b5a458b544ecf5f1963cf723d28a. Unreal engine что можно сделать фото. Unreal engine что можно сделать-4be2b5a458b544ecf5f1963cf723d28a. картинка Unreal engine что можно сделать. картинка 4be2b5a458b544ecf5f1963cf723d28a

Теперь сделаем так, чтобы выбирался случайный вариант.

Рандомизация стен

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Если вы столкнётесь со стеной. то перестанете двигаться вперёд. Однако если продолжите двигаться и пройдёте сквозь отверстие, то снова начнёте двигаться вперёд.

Следующим шагом будет отключение движения вперёд после столкновения игрока со стеной.

Обработка коллизий со стенами

Для включения и отключения движения вперёд можно использовать переменную Boolean. Она имеет всего два состояния: true и false.

Откройте BP_Player и создайте новую переменную Boolean под названием IsDead.

Перейдите к ноду Event Tick и создайте нод Branch.

Теперь получите ссылку на IsDead и соедините его с контактом Condition нода Branch.

Unreal engine что можно сделать. ecd7ecb08d439d234612c08aee08ae52. Unreal engine что можно сделать фото. Unreal engine что можно сделать-ecd7ecb08d439d234612c08aee08ae52. картинка Unreal engine что можно сделать. картинка ecd7ecb08d439d234612c08aee08ae52

Соедините нод Event Tick с нодом Branch. Затем соедините контакт False нода Branch с нодом AddActorWorldOffset.

Unreal engine что можно сделать. 9216b7688f6ebec97f5a080cf1dc6dd6. Unreal engine что можно сделать фото. Unreal engine что можно сделать-9216b7688f6ebec97f5a080cf1dc6dd6. картинка Unreal engine что можно сделать. картинка 9216b7688f6ebec97f5a080cf1dc6dd6

Теперь когда IsDead равно true, игрок будет останавливаться.

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

Задание переменной IsDead

Нажмите на Compile и переключитесь на BP_Tunnel. В панели Components нажмите правой клавишей мыши на WallMesh и выберите Add Event\Add OnComponentHit. Это добавить в Event Graph следующий нод:

Unreal engine что можно сделать. 5d2897edbb07f354c543a96999d341a7. Unreal engine что можно сделать фото. Unreal engine что можно сделать-5d2897edbb07f354c543a96999d341a7. картинка Unreal engine что можно сделать. картинка 5d2897edbb07f354c543a96999d341a7

Этот нод будет выполняться при столкновении другого Actor с WallMesh.

Во-первых, нам нужно проверить, является ли игроком Actor, столкнувшийся с WallMesh.

Перетащите контакт Other Actor. Отпустите левую клавишу мыши на пустом пространстве и выберите в меню Cast to BP_Player.

Unreal engine что можно сделать. 5625e995ecb37e5523de2cd3069480d6. Unreal engine что можно сделать фото. Unreal engine что можно сделать-5625e995ecb37e5523de2cd3069480d6. картинка Unreal engine что можно сделать. картинка 5625e995ecb37e5523de2cd3069480d6

Перетащите контакт BP_Player нода Cast to BP_Player. Отпустите левую клавишу на пустом пространстве и добавьте нод Set Is Dead.

Задайте IsDead значение true, поставив флажок.

Unreal engine что можно сделать. 970e5cf2eea379c10a6b8e0044242528. Unreal engine что можно сделать фото. Unreal engine что можно сделать-970e5cf2eea379c10a6b8e0044242528. картинка Unreal engine что можно сделать. картинка 970e5cf2eea379c10a6b8e0044242528

Нажмите на Compile и вернитесь к основному редактору. Нажмите на Play и попробуйте столкнуться со стеной. Если вы переместитесь к отверстию, то не будете двигаться сквозь него дальше.

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

В следующем разделе мы научимся отображать кнопку перезапуска, когда игрок ударяется о стену.

Отображение кнопки перезапуска

Виджет, который мы будем отображать, называется WBP_Restart. Его можно найти в папке UI. Вот как он выглядит:

Unreal engine что можно сделать. 8a302039a700be792e81d1b37e62e3c2. Unreal engine что можно сделать фото. Unreal engine что можно сделать-8a302039a700be792e81d1b37e62e3c2. картинка Unreal engine что можно сделать. картинка 8a302039a700be792e81d1b37e62e3c2

Чтобы отобразить или скрыть виджет, нам нужна ссылка на него. Откройте BP_Player и создайте новую переменную RestartWidget. Измените Variable Type на WBP_Restart\Object Reference.

Unreal engine что можно сделать. 8b7092f36cb17c73dc74d16c9e9f93c5. Unreal engine что можно сделать фото. Unreal engine что можно сделать-8b7092f36cb17c73dc74d16c9e9f93c5. картинка Unreal engine что можно сделать. картинка 8b7092f36cb17c73dc74d16c9e9f93c5

Затем перейдите в Event Graph и найдите нод Event BeginPlay.

Добавьте нод Create Widget и задайте Class значение WBP_Restart.

Теперь добавьте нод Set Restart Widget и соедините всё следующим образом:

Unreal engine что можно сделать. 9e4bde8ca495be3cb18e067a9c2fbd66. Unreal engine что можно сделать фото. Unreal engine что можно сделать-9e4bde8ca495be3cb18e067a9c2fbd66. картинка Unreal engine что можно сделать. картинка 9e4bde8ca495be3cb18e067a9c2fbd66

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

Создание функции отображения

Создайте новую функцию и назовите её DisplayRestart. Сделав это, создайте следующий граф:

Unreal engine что можно сделать. 4b0ad0af2095fe45f0a8d09f2652387e. Unreal engine что можно сделать фото. Unreal engine что можно сделать-4b0ad0af2095fe45f0a8d09f2652387e. картинка Unreal engine что можно сделать. картинка 4b0ad0af2095fe45f0a8d09f2652387e

Вызов функции отображения

Закройте граф DisplayRestart и нажмите на Compile.

Переключитесь на BP_Tunnel и найдите нод On Component Hit (WallMesh).

Добавьте нод DisplayRestart в конец цепочки нодов.

Unreal engine что можно сделать. 0138987e44e8b0d35cff8ec6567517bc. Unreal engine что можно сделать фото. Unreal engine что можно сделать-0138987e44e8b0d35cff8ec6567517bc. картинка Unreal engine что можно сделать. картинка 0138987e44e8b0d35cff8ec6567517bc

Нажмите на Compile и закройте BP_Tunnel. Вернитесь к основному редактору и нажмите на Play. Когда игрок сталкивается со стеной, отображается кнопка перезапуска.

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

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

Перезапуск игры

При перезапуске игра должна выполнять два действия:

Сброс игрока

Откройте BP_Player и создайте новую функцию RestartGame. Создайте следующий граф:

Unreal engine что можно сделать. e1ab30e6683d35fef47d295833e8dc35. Unreal engine что можно сделать фото. Unreal engine что можно сделать-e1ab30e6683d35fef47d295833e8dc35. картинка Unreal engine что можно сделать. картинка e1ab30e6683d35fef47d295833e8dc35

Повторное создание туннелей

Нажмите на Compile и закройте BP_Player.

Откройте BP_TunnelSpawner и перейдите в граф SpawnInitialTunnels.

Во-первых, перед созданием новых туннелей нам нужно удалить уже имеющиеся.

Добавьте нод Sequence после нода Entry. Соедините контакт Then 1 с нодом ForLoop.

Unreal engine что можно сделать. 81eaeabc93807a6d22c46efbcfbd0ff2. Unreal engine что можно сделать фото. Unreal engine что можно сделать-81eaeabc93807a6d22c46efbcfbd0ff2. картинка Unreal engine что можно сделать. картинка 81eaeabc93807a6d22c46efbcfbd0ff2

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

Затем создайте следующие ноды:

Unreal engine что можно сделать. 74c3860ed6a2f8afca126e7adc60e7ed. Unreal engine что можно сделать фото. Unreal engine что можно сделать-74c3860ed6a2f8afca126e7adc60e7ed. картинка Unreal engine что можно сделать. картинка 74c3860ed6a2f8afca126e7adc60e7ed

Эта схема получит все существующие туннели и удалит их из игры.

Наконец, соединим контакт Then 0 нода Sequence с нодом Get All Actors of Class. Благодаря этому туннели удалятся до процесса создания.

Вот как выглядит конечный граф:

Unreal engine что можно сделать. 979089f71313aed4ddddb6b1382907f3. Unreal engine что можно сделать фото. Unreal engine что можно сделать-979089f71313aed4ddddb6b1382907f3. картинка Unreal engine что можно сделать. картинка 979089f71313aed4ddddb6b1382907f3

Последнее, что нужно сделать — обработать нажатие на кнопку.

Обработка нажатий на кнопку

Нажмите на Compile и закройте BP_TunnelSpawner.

Перейдите в Content Browser и найдите папку UI. Дважды щёлкните на WBP_Restart, чтобы открыть его.

Выберите RestartButton и перейдите к панели Details. Перейдите в раздел Events и нажмите на кнопку рядом с OnClicked.

Unreal engine что можно сделать. 3db7733e8bcb7656347f66c8616126da. Unreal engine что можно сделать фото. Unreal engine что можно сделать-3db7733e8bcb7656347f66c8616126da. картинка Unreal engine что можно сделать. картинка 3db7733e8bcb7656347f66c8616126da

Это создаст нод On Clicked (RestartButton). Этот нод выполняется, когда игрок нажимает на RestartButton.

Воссоздайте следующую схему:

Unreal engine что можно сделать. 8b8608fcf341b483f3edf5f221aaec24. Unreal engine что можно сделать фото. Unreal engine что можно сделать-8b8608fcf341b483f3edf5f221aaec24. картинка Unreal engine что можно сделать. картинка 8b8608fcf341b483f3edf5f221aaec24

Нажмите на Compile и закройте Blueprint editor. Нажмите на Play, чтобы проверить работу кнопки перезапуска!

Unreal engine что можно сделать. image loader. Unreal engine что можно сделать фото. Unreal engine что можно сделать-image loader. картинка Unreal engine что можно сделать. картинка image loader

Куда двигаться дальше?

Скачать готовый проект можно здесь.

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

Попробуйте также реализовать простые классические игры типа Pong и Tetris. Механика этих игр проста, но может вызывать сложности в реализации.

Если хотите продолжить изучение, прочитайте следующий пост серии, в котором я расскажу, как анимировать персонажей игры с помощью Blueprints.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *