Что такое тильда на клавиатуре в unreal engine

Обновлено: 04.05.2024

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

Если вас не пугает картинка из начала поста - ну и ладно, ну и не читайте, больно нужно! (╯ ͠° ͟ʖ ͡°)╯┻━┻

А если серьёзно - сейчас я расскажу, как такое не допустить.

Если интересно, чем они отличаются - лучше почитать официальную документацию. Но если совсем влом читать - ладно, так и быть, напилю статью, только дайте знать)

По какой-то причине люди (в основном, конечно, новички) боятся использовать функции и макросы. Не надо так. Блупринты очень быстро захламляются десятками и сотнями нодов. А порой вы просто копипастите определённый набор нодов с места на место. Так почему бы не свернуть их в функцию или макрос?

Можно либо создать их, нажав соответствующую кнопку в левой части интерфейса, либо, если у вас уже есть на примете ноды, которые вы хотите включить в функцию/макрос, выделите их, кликните по любому из них ПКМ и выберите "Collapse to Marco/Function".

Потом сможете использовать их где нужно, вместо копирования-вставки целой кучи нодов. Да и даже если их нельзя повторно использовать где-то ещё, всё равно удобнее свернуть ноды в функцию/макрос. Намного удобнее будет визуально воспринимать ноду с названием "Calculate Galaxy Size" чем пару десятков математических нодов.

Не круто, если у вас вместо блупринтов свисающая отовсюду лапша. Просто кликните дважды на любой связи между нодами (или ищите в меню создания):

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

Замечали, что у каждой переменной в панели Details есть поле "Category"? Это не какое-то рандомное поле, а ещё один способ упорядочить ваши блупринты. Категорию можно назвать как угодно, но называйте их разумно - без всяких "testCat 12411kof", иначе очень быстро потеряете, где у вас что.

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

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

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

Чтобы особо не раздувать этот пост, советую вам почитать Asset Naming Convention на официальной вики, там много интересного. Вот лишь пара основных моментов:

  • Все названия должны быть на английском и только на английском.
  • Существуют префиксы и суффиксы
    Префиксы зависят от типа ассета. Например, BP_Character01 - это Blueprint
    Суффиксы используются реже, например в текстурах: T_BrickWall_01_AO для карты Ambient Occlusion
  • Используйте цифровые значения (две цифры) для идентификации вариантов ассетов: T_Grass_01, T_Grass_02 и так далее

Что касается переменных, функций и прочего "программистских" вещей, тут всё чуть менее строго и не обязательно использовать CamelCase ("верблюжью" нотацию). В анриле можно в названиях переменных/функций допустимы даже пробелы. Вообще, хорошей идеей будет прочитать Coding Standard из их вики. Он хоть и про C++, но несколько интересных мыслей можно почерпнуть.

Также хочется заметить, что какого-то единого стандарта относительно блупринтов нет (например, в Coding Standard рекомендуется начинать имя булевой переменной с "b", например bFadedOut, но при этом на большинстве стримов их прогеры называют такие переменные вроде "isDead?"), и от студии к студии соглашение о наименованиях может различаться, но оно должно быть. Оно как хороший стайлгайд - призвано сделать так, чтобы разные люди в рамках одного проекта писали код так, будто это сделал один человек.

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

В документации есть Blueprint Editor Cheat Sheet - почитайте. А я хочу показать пару самых основных действий, которые вы будете постоянно использовать.

Вместо перетаскивания переменной из списка и затем выбора опции get или set, можно просто нажать Ctrl для получения или Alt для присваивания значения:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы собрать игру, нужна некая среда с определёнными техническими условиями и необходимыми инструментами. В качестве такой среды выступает игровой движок. Unreal Engine 4 — один из самых популярных движков, который используют как крупные компании, так и небольшие инди-студии. К примеру, на UE4 созданы Final Fantasy VII Remake, Returnal, Gears 5, Borderlands 3, Fortnite, Abzû, Observer и многие другие.

Узнали у Владимира Семыкина, автора направления «Геймдизайн» в Нетологии, об особенностях движка Unreal Engine, разнице между Blueprints и C++, а также насколько востребована профессия разработчика на Unreal Engine.

Gears 5 — шутер канадской компании The Coalition, — использует движок UE4

Разработчик игр на Unreal Engine 4: что умеет, сколько зарабатывает и почему UE4 — отличный выбор для начинающего специалиста

Владимир Семыкин

Энтузиаст геймдизайна, автор Нетологии

Почему Unreal Engine 4 — один из лучших движков для работы над играми

Есть несколько причин большой популярности UE4.

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

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

Движком можно пользоваться бесплатно: в лицензионном соглашении Unreal Engine указано, что пока ваша игра не принесёт более $1 000 000 — после этого придётся платить 5% от дохода.

Есть возможность сделать игру, которая запустится на всех популярных платформах: PlayStation, Xbox, Switch, ПК, iOS, Android.

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

Разработчик игр на Unreal Engine 4: что умеет, сколько зарабатывает и почему UE4 — отличный выбор для начинающего специалиста

Epic Games постоянно устраивает бесплатные раздачи ассетов, которые могут пригодиться при разработке игры

Большое преимущество Unreal Engine 4 в универсальности и доступности — его могут использовать как опытные разработчики, так и новички, которые впервые берутся за создание игры. Всё дело в том, что UE4 по умолчанию поддерживает сразу два языка программирования: текстовый C++, в котором нужно писать строчки кода, и визуальный язык Blueprints, в котором игровая логика выстраивается при помощи связанных между собой блоков. Такой подход помогает сделать программирование более наглядным и понятным для тех, у кого нет опыта.

«Blueprints разработала компания Epic Games, чтобы дать инструменты программирования людям, которые далеки от этого. Поэтому научиться работать с Blueprints очень легко. Конечно, необходимо получить минимальную теоретическую базу, например, разобраться, что такое переменные и как работает функциональное и объектно-ориентированное программирование.

Но и эту теоретическую базу можно изучать, применяя Blueprints. И даже без неё можно сделать что-то интерактивное, например, кнопку, которая открывает дверь. Язык Blueprints крайне прост в освоении, и в нём есть много решений, которые делают его применение удобнее. Например, цветовая индикация различных типов переменных», — Антон Токарев, преподаватель Нетологии, геймдизайнер в Dreamside Interactive.

Разработчик игр на Unreal Engine 4: что умеет, сколько зарабатывает и почему UE4 — отличный выбор для начинающего специалиста

Пример логики для шарика, который отскакивает от препятствий и теряет скорость после каждого столкновения

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


Данный раздел будет посвящен, описанию использования языка C++ для программирования логики в Unreal Engine 4. Если у Вас нет опыта программирования возможно будет тяжело, поэтому лучше всего освоить базовые инструменты программиста, такие как циклы ветвление и переменные. Иначе нет смысла читать данный раздел . Чтобы начать писать код в редакторе Unreal Engine 4 нужно добавить объект типа актера использующий для описания своей логики язык C++ для этого в Object Browser (Хранилище ресурсов игры) нужно вызвать правую кнопку мыши и нажать добавить новый класс. В открывшемся диалоговом окно нужно выбрать следующий пункт.


Следующим шагом система предложит указать путь где создать файлы


После создания данного класса двойным щелчком на нем можно вызвать редактор Visual Studio в котором и будет выполняться редактирование содержимого класса. Данный объект будет состоять из двух файлов первый называемый заголовочным в нем мы описываем подключение библиотек и объявление переменных и методов в классе он имеет расширение .h второй файл используется для создания блоков команд в виде методов так как язык C++ является процедурным языком то все команды которые пишутся заворачиваться в специальные скобки которые означают что это процедуры (методы - функции- процедуры по сути одно и тоже ) Файл Actor.h будет выглядеть следующим образом он содержит только описание заголовков функций чтобы их можно было вызвать в любом месте класса а так же описание структуры класса объекта.

Actor.h

//потключены 3 библиотеки

//метка что начинаеться описание класса

//начало описание гласа

class AMyActor : public AActor

//метка что это начало тела класса

//обьявление публичных методов

//Функция срабатывающая при создании класса в UE4

//Функция срабатывает при каждом создании класса на сцене во время игры

virtual void BeginPlay() override ;

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

virtual void Tick( float DeltaSeconds) override ;

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

Actor.cpp конструктор

//включает отслеживангие каждого обновления игры

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

Создание редактируемого параметра видимого из Unreal Editor

//при создании класса

class AMyActor : public AActor

//указываем что данный параметр будет виден из редактора

//переменная типа целого числа которая будет хранить значение

Директива UNPROPERTY() (Unreal Property ) это по сути функция которая создает пункт во вкладке параметров она позволяет указать область видимости параметра в окнах редактора, возможность чтения записи параметра в Blueprint скрипта и категорию параметра. Добавим в для наглядности несколько параметров нашему объекту которые будут видны из редактора при выборе нашего объекта в обозревателе ресурсов (Content Brouser).

Добавляем 3 параметра

class AMyActor : public AActor

//переменная общий урон

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage" )

//Получаемый урон в секундах

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Damage" )

//Возможный разовый молучаемый урон в секунду

UPROPERTY(BlueprintReadOnly, VisibleAnywhere, Transient, Category = "Damage" )

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


проект и тогда выбрав наш созданный объект, мы увидим в параметрах наш список параметров. Выбираем нашего актера в обозревателе ресурсов



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

Зададим в конструкторе значения по умолчанию

AMyActor::AMyActor()
//зададим 1 параметр
TotalDamage = 200;
//задаим 2 параметр
DamageTimeInSeconds = 1.f;
>

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


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

создание функций изменения параметра

//функция срабатывает во время обновления настроек на экране
void AMyActor::PostInitProperties()
Super::PostInitProperties();

Читайте также: