Pixonic
7 907

Unreal Engine 4 для инди и прототипирования

Последняя статья из цикла «Разработка» — работаем с редактором UE4, пишем логику без навыков программирования и начинаем конкурс работ.

В закладки

Автор: Александр Блинцов. Специализируется на Unreal Engine. В Pixonic является клиентским разработчиком и отвечает за разработку и поддержку технической стороны нового сетевого мобильного шутера.

Уже две статьи цикла «Разработка» были полностью посвящены Unity и различным туториалам для этого движка. А в этой я расскажу об относительно молодом Unreal Engine 4. Несмотря на то, что оригинальный UE существует уже два десятилетия, новая версия была почти полностью переписана и сильно повлияла на разработку игр в целом. Мы рассмотрим основные плюсы этого движка для начинающих инди-разработчиков с упором на тех, которые никогда раньше не занимались программированием.

Четвертая версия движка вышла в 2014 году и распространялась по подписке за $19 в месяц. Но уже через год Epic Games сделала его бесплатным, после чего Unreal Engine 4 начали использовать не только студии, но и инди-разработчики.

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

Несмотря на «новизну» UE4, сообщество вокруг движка растёт очень быстро, появляется огромное количество туториалов, документации, ассетов и плагинов.

Шаблоны и демо-проекты

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

Стоит обратить внимание на демки из лаунчера Epic Games (вкладка Learn/Изучить). Там можно найти очень много проектов на разные темы. Причём это практически полноценные прототипы игр, с логикой и графикой.

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

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

Редактор

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

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

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

Запомните эту картинку

Blueprints

Прежде чем заменять тестовый контент на собственный, стоит написать механику, то есть кор-геймплей, от которого зависит почти всё в вашей игре. Обычно для этого нужно изучать язык программирования (в Unity, например, это С#, а в UE4 — C++) и писать код, чтобы всё работало как задумано. Но новички могут обойтись и без этого.

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

С помощью Blueprints
То же самое, но написанное на С++

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

Звучит слишком хорошо, чтобы быть правдой. Подвох в том, что несмотря на низкий порог входа и наглядность, блюпринты — полноценный инструмент объектно-ориентированного программирования (ООП).

Оно требует практики, чтобы правильно всё организовывать, разделять по классам, компонентам и держать в чистоте. Кроме того, с помощью блюпринтов не получится отправить внешний запрос (например, по http), поработать с файловой системой компьютера или подключить стороннюю библиотеку. Для этого придется качать плагины или писать их самостоятельно. Но в остальном можно обойтись и дефолтными блюпринтами — внутри движка они умеют всё, что нужно.

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

В Unity, кстати, тоже есть аналогичный инструмент. Он называется Playmaker, но стоит 45 долларов.

Меши, материалы и эффекты

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

Движок поддерживает .fbx и .obj форматы 3D-моделей, а также все популярные форматы текстур. Импортировать их достаточно просто — можно даже закинуть всё в папку с проектом, и импорт произойдёт автоматически.

Ещё важно настроить материалы, то есть шейдеры. Обычно они пишутся кодом в других программах, но в Unreal Engine 4 и на этот случай есть визуальный инструментарий, который позволяет описать инструкции шейдера нодами. Может показаться запутанным, но на самом деле для простых материалов присоединить нужные текстуры и получить реалистичный вид не так сложно.

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

Не забудем и про визуальные эффекты. Сейчас в UE4 для них есть два редактора: модульный и нодовый. В первом собирается система частиц и эффектов с помощью модулей и настроек. А во втором можно создавать эффекты с помощью нодового редактора, очень похожего на редактор материалов. Там можно гибко настраивать эффекты для получения нужного результата.

Вот так преобразился прототип локации из начала статьи после импорта и настройки контента.

Интерфейс пользователя

Хорошо, графика уже выглядит прилично. Осталось настроить пользовательский интерфейс (UI).

В Unreal Engine 4 есть специальный редактор виджетов — UMG. Как и всё остальное, он простой и мощный. Можно размещать элементы с якорями, можно создавать блочную вёрстку, встраивать виджеты внутри других виджетов и так далее. Есть куча разных настроек, почти всё можно переделать или анимировать.

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

Звук

Значительную часть атмосферы игры создают звуковые эффекты. Со звуком работать тоже не сложно, достаточно импортировать его форматом Wav 16 и проигрывать с помощью блюпринтов (или кода на С++) в нужном месте. Или поставить компонент звука и включать/выключать его в нужные моменты.

Миксовать и создавать комплексные звуковые эффекты в UE4 тоже можно — опять же, с помощью нодового редактора.

Сборка

Проект готов, и вполне возможно, что во время работы даже не нужно было открывать другие программы — помимо браузера с документацией и магазина с ассетами. Здорово! Теперь нужно собрать игру под определённую платформу.

UE4 позволяет собрать проект под все популярные платформы, от ПК и консолей до мобильных устройств и даже HTML5. Для ПК хватает одного клика, а вот для остальных платформ может понадобиться дополнительный SDK, инструкции по которому есть в документации.

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

Итоги цикла о геймдизайне и розыгрыш PlayStation 4 Pro Spider-Man Limited Edition

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

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

В прошлом разделе «Геймдизайн» мы создавали концепт, проверяли идеи и формулировали уникальные черты будущей игры. Теперь пришло время показать игровой прототип игры или основной механики. Среди участников мы снова разыграем лимитированное издание PlayStation 4 Pro — Spider-Man Limited Edition.

Задание

Чтобы принять участие в конкурсе и собрать наш фидбек, необходимо:

  • Выбрать движок и в паре строк объяснить, почему именно он.
  • Определить и кратко описать одну из основных механик вашей игры. Например, пошаговый бой в rogue-like, в шутере — бег по стенам, а в детективном квесте — пара головоломок. Будет плюсом, если она в чём-то будет уникальной.
  • Сделать прототип этой механики или механик на любом движке — от RPG Maker до Unity или Unreal Engine 4. Не важно, насколько красивым он будет.
  • Прислать ссылку на прототип и описание на нашу почту kojima@pixonic.com до 20 декабря 2018 года.

В конкурсе могут участвовать любые прототипы, в том числе сделанные и до цикла «Разработка». Главное, чтобы это был именно прототип, а не часть уже выпущенного проекта или бета-версии перед релизом.

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

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

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

{ "author_name": "Pixonic", "author_type": "editor", "tags": [], "comments": 21, "likes": 30, "favorites": 24, "is_advertisement": false, "subsite_label": "pixonic", "id": 51306, "is_wide": true, "is_ugc": false, "date": "Tue, 20 Nov 2018 14:43:59 +0300" }
{ "id": 51306, "author_id": 181238, "diff_limit": 1000, "urls": {"diff":"\/comments\/51306\/get","add":"\/comments\/51306\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/51306"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 181238, "possessions": [] }

21 комментарий 21 комм.

Популярные

По порядку

Написать комментарий...
0

Только вы забыли упомянуть что код на Blueprint в сотни раз медленнее чем нативный код.
https://www.youtube.com/watch?v=V707r4bkJOY

Ответить
2

Есть функция внутри движка - нативизация блюпринтов. В кратце - превращает все твои блюпритны в чистый байт-код, и запускает его так же как запустил бы и C++. В итоге потеря производительности будет минимальной. Вот сурс - https://docs.unrealengine.com/en-US/Engine/Blueprints/TechnicalGuide/NativizingBlueprints

Ответить
1

В среднем - в 10 раз. Но есть нативизация. И bottleneck обычно в GPU, так что это не проблема.

Ответить
0

Поставить галочку на нативизацию и "сотни раз" в некоторых задачах превращаются в 2-3 раза. В некоторых, опять же, задачах, далеко не во всех.

Ответить
0

Я правильно понимаю, что необязательно привязываться к концепту игры, сделанного для прошлого цикла, а можно взять другую идею?

Ответить
1

Да, можно взять любую идею для прототипа, даже новую)

Ответить
0

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

Ответить

0

Вам нужен готовый билд или что?

Ответить
0

Привет! Это может быть билд или, например, ссылка для просмотра прототипа в браузере

Ответить
0

билд для какой платформы?

Ответить
0

Веб, macOS, Windows, мобилки. В крайнем случае можешь прислать ссылку на ролик на YouTube)

Ответить
0

Спасибо за цикл статей, огонь.

Ответить
0

Здравствуйте,хотел бы узнать а не важно что за жанр?
Ибо у меня есть игра которая на стадии разработки,готова на 60%.

Ответить

0

Абсолютно любой жанр, это не главное)

Ответить
0

Ссылку на прототип, то есть билд под винду или достаточно видео на ютубе? Есть у меня парочка... :D

Ответить
0

Да, но лучше билд, больший приоритет отдается им)

Ответить
0

Что-то вы так настроили материалы что стало хуже чем по умолчанию, а не лучше

Ответить
0

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

Ответить
0

И где у вас подобная статья по Unity?

Ответить
0

Нашел)

Ответить
0

Спасибо за статью.
Уже давно как хотел начать делать свою игру, но так руки не дошли.
Теперь засяду после работы и буду делать свою игру на UE4 (уже давно установил и обновлял но так и не запущен).
Есть куча идей, пора начать их реализовать.

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Команда калифорнийского проекта
оказалась нейронной сетью
Подписаться на push-уведомления
{ "page_type": "default" }