Сайт о телевидении

Сайт о телевидении

» » Unreal engine 4 как долго учить движок. Что такое «материал»? Создание умных световых валов

Unreal engine 4 как долго учить движок. Что такое «материал»? Создание умных световых валов

Вы можете импортировать текстуры с помощью кнопки «Импорт» в контент браузере. Unreal 4 поддерживает большое разнообразие форматов текстур: от.tgas и.png до.psds и.jpg. Один важный совет - убедитесь, что normal maps сжаты как TC Normalmap, чтобы избежать визуальных ошибок в движке. Также имейте в виду, если разрешение вашей текстуры не кратно двум (например 1024х349), они не запустятся или будут лишены свойств MipMap.

  1. Сохранение памяти: текстуры Channel-pack

Одна из особенностей Unreal - это большой объем контроля, который вы получаете, создавая свои собственные материалы. Когда вы создаете несколько черно-белых масок для текстур, таких как roughness или transmission, вы можете сэкономить память, спрятав каждую маску в отдельный канал R,G или B, а затем получив доступ к каждому каналу этой текстуры отдельно.

  1. Физически корректный рендеринг

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

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

  1. Повторное использование текстуры

Еще одним удивительным элементом Unreal 4’s Material Editor является то, что он позволяет повторное использование текстуры. Это поможет вам не только сохранить память, но и сэкономить время. Иногда red channel из rock albedo texture можно использовать как черно белую маску для roughness. Текстуру черепицы из Photoshop можно легко наложить на кирпич, а также смешать с другой текстурой для наложения на другие элементы.

  1. Не накладывайте ненужных текстур

Иногда определенные текстуры не нужны. Для 100% неметаллических материалов, таких как древесина или грязь, текстура металла может быть заменена в Material Editor простой константой с плавающей точкой и значением 0. Этот же принцип можно применить для нескольких версий одного и того же материала. Вам не нужны отдельные normal maps, например, для трех разновидностей кирпича, отличающихся по цвету. Можно использовать одну normal map для всех.

  1. Создание набора основных материалов

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

  1. Повторное использование материала

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

  1. Комментарии и организация материалов

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

  1. Функции материалов

Функции материалов можно вызвать несколько раз для выполнения определенного набора инструкций. Они создаются вне материала в Content Browser, но затем могут быть вызваны, чтобы упростить их. Они могут содержать свой собственный inputs и могут стать отличным способом сэкономить время, когда нужно вызвать несколько повторяющихся операций.

  1. Материалы листьев

Листва может быть одной из самых сложных вещей, т.к. совсем не просто обеспечить ее правильное отображение в любом игровом движке. В UE4 версии 4.18 существует Foliage Shading Model, которая упрощает эту задачу. Я настоятельно вам ее рекомендую, поскольку она поддерживает передачу подповерхностного слоя, что в большинстве случаев дает преимущества. Кроме того, советую добавить sky light к вашей сцене, чтобы помочь сбалансировать некоторые более темные области сетки листвы, которые могут быть в тени.

  1. Vertex colour

Доступ к цветам Vertex в материалах - одна из моих любимых функций в Unreal 4. Они могут быть невероятно мощными при творческом подходе. От ambient occlusion до masking out wind и world offset для листвы - их универсальность колоссальна. Они особенно полезны при смешивании текстур. Vertex colors можно импортировать из внешнего программного обеспечения 3D или импортировать и нарисовать в редакторе.

  1. Детализированные diffuse и normal

Так как вы можете настроить параметры текстурирования ультрафиолетового излучения, вы можете увеличить детали материала путем смешивания в дополнительном наборе текстур. Обычно это diffuse или normal maps, которые затем поочередно накладываются поверх базовых. Вы можете использовать любой удобный для вас метод, например, такой как Overlay Blend Function, в то время как подробные normal maps могут быть применены путем добавления красного и зеленого каналов к основанию.

  1. Смешивание текстур в материалах

Хотите объединить текстуры в material editor, но знакомы только с режимами смешивания Photoshop? Epic превзошел все ваши ожидания. Наряду со многими полезными функциями материалов он включает в себя большинство режимов смешивания, с которыми знакомы все пользователи Photoshop. От Overlay до Linear Dodge их можно найти в окне палитры внутри Material Editor. Они могут быть особенно полезными для добавления деталей к вашим материалам.

  1. Знание типов источников освещения

Unreal предлагает четыре различных типа света для использования в окружающей среде: Directional, Point, Spot, и Sky light. Свет Directional отлично подходит для наружных зон или любого необычного источника света. Свет Point является всенаправленным, а Spot похож на него, но имеет ограничения, определенные конусом. Sky light может использоваться для добавления света в окружающую среду, захватывая отдаленные части вашей карты. Поддерживаются также пользовательские Cubemaps.

  1. Добавление тумана к вашей сцене

Существует стандартный способ создания всем нам известного обычного плотного тумана. Unreal 4 же предлагает два других способа добавить туман к вашей сцене. Atmospheric Fog реагирует на направленный угол освещения и интенсивность. Он может создать туман, основанный на реальном рассеянном атмосферном свете. Height Fog дает немного больше контроля цвета и позволяет добавить более простой эффект тумана, который становится менее плотным в верхних частях карты и более плотным в нижних частях.

  1. Создание умных световых валов

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

  1. Съемки с высоким разрешением

Хотя пользовательские видео разрешения могут быть выведены из Matinee, есть быстрый и простой способ сделать кадры в высоком разрешении прямо из редактора. Нажав на маленькую нисходящую стрелку в левом верхнем углу вашего Viewport, вы можете открыть небольшое раскрывающееся меню. Внизу можно открыть окно High Resolution Screenshot window. Оттуда снимки в высоком разрешении могут быть захвачены и отправлены в папку вашего проекта: project/saved/Screenshots folder.

  1. Корректировка цвета и таблицы поиска

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

  1. Редактирование световых переходов и бликов

В играх и 3D стало популярным отображать световые переходы и блики, их можно включить и настроить в UE4, используя специальные зоны постобработки - post-process volumes. Световой поток настраивается практически по всем характеристикам. Размер, цвет, интенсивность и порог можно изменить и даже использовать их для маскировки текстур грязи и имитации грязных линз. Аналогично, вспышки также могут быть включены, а их форма и интенсивность регулируются.

  1. Создание глубины резкости

Unreal 4 поддерживает как резкость по Гауссу, так и настраиваемую. Оба эти параметра существуют в настройках Post Process Volumes. Следует также отметить, что инструменты, которые помогают с размытием тонких объектов перед удаленными, иногда могут создавать проблемы. Нужно проявлять осторожность в применении глубины резкости, например, к листве или другим подобным элементам.

  1. Автоэкспозиция и адаптация глаз

Автоматическое управление экспозицией включено по умолчанию и имитирует настройку глаз на яркие или темные области. Эффект является потрясающим, но может создавать постоянно изменяющиеся визуальные переменные, которые трудно поддерживать внутри. Регулировку диапазона экспозиции можно выполнить в настройках volumes после обработки. Её можно отключить, если установить минимальную яркость, равную максимальной. Смещение экспозиции можно использовать для настройки её базовых параметров.

  1. Световые функции

Одна интересная особенность в Unreal 4 - поддержка материалов с функцией освещения. Эти материалы действуют как маски для света и могут использоваться, чтобы сделать что-либо: от пользовательских цветовых вариаций в свете до облачных теней на земле. Они создаются путем установки функции Material Domain to Light в Material Editor, их можно использовать при spot, point и directional lights.

  1. Сэкономьте время, скопировав и вставив

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

А самое крутое - это то, что все, что скопировано из Unreal, можно вставить в текстовый документ. Затем этот текст можно скопировать и повторно вставить на другой уровень Unreal 4.

  1. Режим просмотра и визуализация рендер пасов

Знание того, что составляет ваш образ, является неотъемлемой частью работы в любом 3D-движке и работает в отложенном рендерере, например, UE4 позволяет использовать некоторые полезные режимы просмотра. Нажатие Alt и 1-8 переключается между различными режимами просмотра, такими как Unlit или lighting only, но если вы нажмете кнопку View Mode в окне Viewport, вы можете просмотреть отдельные рендер пасы. Это может быть полезно для просмотра широких диапазонов материалов, таких как roughness.

Хотя Unreal невероятно мощный, не каждая рабочая станция создается одинаково. Если вы столкнулись с проблемами производительности движка, первое, что нужно включить, - это параметры масштабирования движка в «Setting» на панели Editor Toolbar. Отключение некоторых параметров, таких как сглаживание, может действительно ускорить работу. Другой трюк состоит в том, чтобы группировать множество объектов в world outliner. Затем вы можете переключать их видимость, чтобы улучшить производительность.

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

Уилл Райт учит гейм-дизайну и теории

Познакомьтесь с искусством и наукой геймдизайна с Уиллом Райтом, который спроектировал один из самых популярных симуляторов всех времен - SimCity и The Sims.

Искусство экстремальной фотографии с Джимми Чин

Джимми Чин построил свою карьеру, делая фотографии на немыслимых вершинах мира, которые обеспечили ему обложку в National Geographic и множество наград.

Создание боевой механики для RPG с помощью C#

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

Hard Surface моделирование в Cinema 4D

В этом воркшопе вы узнаете основы создания 3D-моделей с помощью полигональных техник моделирования. Из видео-лекций вы изучите основные производственные техники для создания как сложных так и простых форм.

Светотень и текстурирование с Крисом Легаспи

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

Учимся программировать на С#, разрабатывая 3D игры

Это долгожданное продолжение курса Complete Unity Developer (Learn to Code by making games in Unity) - одного из самых популярных курсов в интернете! Полностью переработано с нуля с совершенно новыми проектами и нашими новейшими методами обучения (5 частей).

Цифровая живопись. Том 3

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

Разработка зомби-шутера от первого лица

Если вы хотите создать свой собственный шутер от первого лица, адвенчуру от третьего лица или даже ролевую игру, эта серия курсов Udemy - для вас! Начиная с пустого проекта, мы построим все системы вместе, шаг за шагом, для игры под названием Dead Earth. (5 частей)

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

    Не могу еще определится что лучше система блупринтов или же с++.

    Пока прошел курс Introduction to Unreal Engine 4 RUS (все понял, все ясно)
    хочу научиться создавать MMORPG Fantasy игру, для начала хочу создать RPG fantasy

  2. так же еще есть сомнения какой движок выбрать unreal или же unity
  3. Тут все просто, Unreal Engine 4 отличный движок, но чтобы раскрыть весь его потенциал нужно знание С++ обязательно!! Только так вы сможете создать всю ту красоту, что так вам нравится в Unreal Engine 4. Для примера, представьте, что вы увидели гонки F1 и вам так понравился гоночный болит (за его скорость и тд.), что вы его купили, и начали ездить на нем по городским дорогам со скоростью 30 км/ч, вы скоро возненавидите его и обвините всех, что вас обманули, но на самом деле подход к делу был неправильный. Так и с Unreal Engine 4, на Blueprint вы далеко не уедите, хотя и сможете ездить. По этому постановка вопроса С++ или Blueprint неправильная. Вам нужно и то и то. Просто Blueprint понимают не совсем правильно (в большинстве своем из за нежелания изучать С++), да на них можно создать игру, но они не для этого, они больше вспомогательные возможности движка. Как итог выше на писаного, если не собираетесь изучать С++ или создавать в будущем игры на Unreal Engine 4 класса ААА (чтобы раскрыть весь потенциал движка), то возникает вопрос стоит ли тратить годы своей жизни на изучение движка класса ААА чтобы никогда так и не раскрыть его потенциал и не создать все ту красоту за которую вам так понравился Unreal Engine 4, может стоит начать изучать что то попроще, но тут уже решать вам.

    Чтобы все получилось вам нужно хорошо изучить сам движок (полностью), тут можно использовать и Blueprint (на этом этапе), но со временем нужно перейти на С++ полностью при на писании игр на Unreal Engine 4. Вам следует начать учить С++ и желательно с уклоном в: применительно к созданию игр и для использования с Unreal Engine 4. Вообще курсов о С++ и Unreal Engine 4, очень мало. Рекомендую . Но начните не с него, а с курсов обучающих работать с самим движком.
    Не стоит бояться С++ или что нечего не получится, главное правильный подход и не сдаваться, и все получится. Не получается только у тех кто ничего не делает!
    Удачи!

    Это только мое мнение, и оно может не совпадать сомнением всех остальных.

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

    Нажмите, чтобы раскрыть...

    Вам же человек сверху всё развёрнуто написал. Он же не отрицает что можно и на блюпринтах делать, он лишь говорит, что для более продвинутого уровня (для оптимизации самого кода в конце концов желательно кодить самим).
    Блюпринты по большей части сделаны на мой взгляд для людей которые не знакомы с кодом, но им очень нравится графическая составляющая движка и они могут с помощью блюпринтов накидать быстренько логику и заниматься тем чем они умеют, дизайном к примеру.
    Оптимизировать код не видя кода вы ну никак не сможете.
    Это всё равно, что зачем люди платят 100500 у.е. за написание сайтов, если есть готовые конструкторы которые за 10 минут сделают сайт который на первый взгляд ничем не будет отличаться от того который будет делать человек с нуля, да ещё и за круглую сумму...но разница заключается в деталях.
    Эпики сделав блюпринты уменьшили планку на вход в их движок, если раньше дизайнер которому надо замоделить интерьер для заказчика ахал и охал от того, что ему надо разбираться в языке программирования, то сейчас он может зайти на ютуб посмотреть как из блюпринтов собирают схемы и уже что то пытаться делать, но для оптимальной работы всё равно надо учить С++, так как блюпринты не заменят полноценный код в котором каждая строчка проверенна временем.

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

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

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

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

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

В File меню вы сможете найти подменю под названием Package Project. Этот раздел отвечает за подготовку и запаковку вашего проекта для тестирования и распространения. Так же в этом разделе имеются дополнительные настройки запаковки.

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

Запаковка проекта

Что бы запаковать ваш проект под конкретную платформу, выберете File > Package Project > [Имя платформы] в редакторе UE4.

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

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

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

Для менее опытных пользователей, самые важные сообщения, такие как предупреждения или ошибки, можно посмотреть в отдельном окне Message Log.

Запуск проекта

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

Для каждой платформы, исполняемые файлы для запуска могут различаться. Таким образом для Windows будет файл.exe, а для Android — .apk

Распространение

Дополнительные настройки

Дополнительные настройки можно найти в File > Package Project > Packaging Settings в главном меню редактора UE4.

Build Configuration Конфигурация проекта. Для отладки режим Debug. Для тестирования больше подойдет режим Development. Для финального распространения — режим Shipping.
Staging Directory Директория, которая будет содержать запакованный проект. Будет автоматически обновлено при выборе другого пути перед запаковкой.
Full Rebuild Определяет, будет ли скомпилирован весь код, или же только измененная часть(Выкл). Это может ускорить время запаковки. При подготовки проекта к распространению(режим Shipping) убедитесь, что данная опция включена, что бы не пропустить ничего лишнего при запаковке.
Use Pak File Определяет, запаковывать ли весь контент в один файл(.pak) для более удобного распространения, или же хранить контент в индивидуальных файлах(Выкл).

Запаковка контента

При обновлении вашего контента, вам может не понадобится перекомпилировать весь проект для того, что бы запустить его и проверить. Вместо этого, в UE4 существует возможность запаковать только сам контент на нужную платформу. Сделать это можно через File > Cook Content > [Платформа].

При первом запуске у вас отобразится «Project Browser».

Project Browser является основным хранилищем ваших проектов. В нем вы можете создать новый проект, так и открыть уже существующий проект с вашего компьютера. Так же имеется поддержка проектов «Примеров», в которых можно оценить возможности и работу Unreal Engine 4.

Открытие проектов

Здесь будет показан весь список ваших проектов, когда хоть один будет создан. Изначально, тут будет приведен список всех проектов в папке установки.

Двойной клик по иконке открывает проект.

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

Что бы найти проект, вы можете ввести текст в поле Filter Projects. Будут показаны все проекты, содержащие введенное имя.

Так же вы можете нажать Browse и выбрать проект на вашем компьютере. Вам нужно выбрать.uproject файл.

В Project Tab вы так же можете поставить галочку на Always load last project on startup, что позволит пропусить окно Project Browser’а и запускать сразу выбранный вами проект.

Что бы вручную задать эту настройку, войдите в настройки редактоа, найдите вкладку «General» > «Load & Saving» и установите настройку «Load the Most Recently Loaded Project at Startup».

Создание новых проектов

Вкладка New Project позволяет вам создать новый проект из существующих заготовок. Blank создает полностью пустой проект.

Всего имеется два типа заготовок: C++ и Blueprint. C++ означают, что логику вашего проекта вы будете писать на C++. Другой типо означает, что для логики вам будет предоставлен визуальный скриптовый язык — Blueprint. В процессе разработки можно совмещать два типа.

  • Blank — чистый проект без какой-либо логики
  • FirstPerson — заготовка под шутеры от первого лица
  • Flying — Заготовка под простые «леталки»
  • Puzzle — Заготовка для логической игры
  • Rolling — Заготовка с катающимся мячиком
  • (2D)Side Scroller — Платформер. 2D создает заготовку для 2х-мерного платформера.
  • Third Person — Заготовка с видом от третьего лица
  • Top Down — Вид сверху и управлением мышью
  • Twin Stick — Заготовка с аркадой видом сверху
  • Vehicle — Заготовка для создания авто-симуляторов. Заготовка Vehicle Advanced создает автомобиль с улучшенной системой подвески

Что бы создать новый проект:

  1. Выберете заготовку из списка
  2. Установите настройки проекта.
  3. Введите название вашего проекта и путь к нему.
  4. Нажмите Create

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

Так же проект можно создать через выпадающеее меню во вкладке File > New Project…

Настройки проекта

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

Проект будет оптимизирован для ПК или консолей
Оптимизирует проект для запуска на Мобильных платформах
Данная опция позволяет создать проект с высокими настройками графики. Используйте, если создаете проект для ПК или консолей
Данная опция позволяет создать проект с низкими настройками графики. Используйте, если создаете проект для мобильных платформ
Включает в ваш проект стартовый контент. Не рекомендуется включать, если вы создаете мобильную игру, так как данный контент очень сильно влияет на размер.
Не включает в проект стартовый контент.

Приветствую, Хабр! Хотел бы познакомить вас с относительно небольшим проектом, который я сделал c нуля примерно за 150 часов (50 заходов ~3 часа каждый) на Unreal Engine 4. Проект я делал в прямом эфире только на стримах раз в неделю (в общей сложности ушел год), попутно отвечая на вопросы пользователей.

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

  • Планирование и прототипирование проекта
  • Продумывание и реализация архитектуры проекта и отдельных его компонентов
  • Реализация интерфейса пользователя
  • Отладка и исправление ошибок
  • Работа с ассетами и графикой

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

Если вам интересны подробности проекта, записи стримов, исходники и прочее, читайте далее.

Весь проект был реализован на визуальной системе программирования, под названием “Блупринты”. И конечно многие спецы могут назвать её ребяческой, разработать на ней можно спокойно даже относительно крупный проект. Более того, это можно сделать относительно быстро, как мы уже смогли доказать.

Сразу хочу ответить на вопрос: "Почему Блупринты, а не С++? ". Ну во первых, когда я начинал серию, плюсы я почти не знал. Хотя я и сейчас подобный сингл делал бы на БП. Во вторых, БП почти не уступают плюсам в нашем случае, но при этом дают ряд возможностей: Не позволяют наделать множество ошибок, возможных с плюсами, не приходится отвлекаться между БП и С++, понятнее новичкам. Да и они в нашем случае не намного медленнее, учитывая тот факт, что почти вся логика построена на событиях.

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

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

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

Список всего, что мы успели реализовать в нашей игре

Персонаж

  • Управление персонажем
  • Система жизненных показателей (Жизни, броня, стамина, голод, жажда)
  • Переключение вида (от первого лица и от третьего)
  • Моделька (сделали во Fuse, анимации взяли с Mixamo)
  • Настроенные анимации передвижения и использования оружия
  • Универсальное взаимодействие с предметами

Объектная система инвентаря

  • Компонент инвентаря (встраивай в любой объект, куда хочешь)
  • Клеточная система с поддержкой различного размера предметов
  • Размер инвентаря по клеткам на страницу и по весу.
  • Класс предметов, которые можно положить в инвентарь. Предметы хранятся в качестве объектов.
    • Вес, размер, информация, состояние предмета
    • Функционал для стака (когда в одной ячейке много одного предмета)
    • Возможность добавить логику использования предмета
    • Выбрасывание из инвентаря
  • Интерфейс для взаимодействия с инвентарем
  • Интерфейс для обмена между другим компонентом и своим.
  • Drag&Drop манипуляция объектами между инвентарями и внутри одного.
  • Контекстное менюу предметов
  • Подсказки при наведении на предметы в инвентаре и в мире.
  • Список генерируемых предметов при создании объекта с компонентом / начале игры.
  • Список начальных предметов при создании объекта с компонентом / начале игры.
  • Система торговли между другим инвентарем
    • Интерфейс торговли
    • Компонент менеджмента денег (необходим для работы торговли)

Система экипировки

  • Экипировка нескольких типов предметов: Шляпы, Топ, Брюки, Ботинки, Оружие
  • Скелетная синхронизация у Топа, брюк и ботинок. (Шляпы и оружие по сокетам)
  • Удобное окошко для экипировки с поддержкой Drag&Drop
  • Поддержка логики-модификаторов при одевании
Оружие
  • Дальнобойное оружие
    • Перезарядка
    • Использование предметов-патронов из инвентаря
    • Поддержка классов снарядов/пуль
    • Автоогонь/одиночный огонь
    • Отдача с разбросом (свой + от факторов, н.п. бег или приседание)
  • Холодное оружие (с несколькими видами проверок на урон на выбор)
  • Состояние оружия ухудшается при использовании
Система крафта
  • Крафт по рецепту (выбрал рецепт, он скрафтил, аля фоллаут)
  • Крафт по предметам (закинул нужные предметы, он скрафтил, аля майнкрафт)
  • Интерфейс пользователя только для второго типа крафта.
Агрессивные мобы
  • Мобы ближнего боя (если увидят, побегут и начнут бить)
  • Мобы смешанного типа (стреляют, но если достаточно близко, побегут что бы ударить)
  • Дальники оббегают препятствия, если не могут выстрелить.
  • Есть встроенный инвентарь для лута после убийства.
  • Зона спауна
  • Список классов
  • Шанс спауна
NPC
  • Городские NPC, патрулирующие свою зону спауна
  • Уникальные NPC
  • Базовый контроллер расписания для уникальных НПЦ
  • Реакция на урон (убегают или используют имеющееся оружие)
  • Встроенный инвентарь для лута после убийства.
  • Объектная диалоговая система
    • Дерево диалогов
    • Каждый ответ - объект
    • Для каждого ответа можно докинуть любую логику или условие доступности.
    • Интерфейс диалога
    • Несколько готовых классов ответа (запускает торговлю, забирает ресурсы, если есть, выходит из диалога)
Строительство
  • Класс конструкций, которые поддерживают размещение
  • Использование предметов-ресурсов из инвентаря при размещении.
  • Снаппинг на некоторых типах конструкций (н.п. Стены, фундамент, окна)
  • Менюшка с конструкциями
  • Подсвечивание конструкций, на которые хватает ресурсов
Дополнительно
  • Небольшая карта с городом, лесом, водоемами (можно плавать).
  • Система смены дня/ночи
  • Автомобили
    • Вид от первого или третьего. Общее с персом
    • Включение/выключение фар.
    • Встроенный компонент инвентаря (нужно взаимодействовать у багажника)
  • Кое как работающие лестницы вертикального типа.
  • Главное меню
  • Меню паузы
  • Меню с настройками графики

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

Содержание по частям

  1. Начинаем и планируем проект. Создаем управление и поведение персонажа.
  2. Начинаем делать систему инвентаря.
  3. Продолжаем делать базу системы инвентаря.
  4. Готовим базу для экипировки и вооружения.
  5. Работа над оружием и использовании патронов.
  6. Делаем автострельбу и прицеливание.
  7. Создаем базовую систему крафта.
  8. Бег, переработка предметов и их износ.
  9. Реализовываем перезарядку для оружия.
  10. Делаем оружие ближнего боя.
  11. Доделываем ближний бой и делаем лестницу по которой можно взбираться.
  12. Делаем интерактивные предметы: Дерево, камень, кусты.
  13. Делаем HUD и начинаем делать интерфейс для инвентаря.
  14. Продолжаем работать над интерфейсом инвентаря. Делаем генерацию ячеек с предметами.
  15. Продолжаем делать генерацию ячеек и поиск места для предмета. Добавляем страницы инвентаря.
  16. Делаем небольшое взаимодействие с предметами в инвентаре и окно подробной информации.
  17. Сделали Drag&Drop перетаскивание предметов по инвентарю и в другой инвентарь.
  18. В этой части речь идет о визуализации крафта.
  19. Создаем окно с выбором количества предметов из стака для переброса в другой инвентарь.
  20. Делаем поддержку разных рецептов крафта, а так же фиксим разные баги у инвентаря.
  21. Создаем систему смены дня и ночи, а так же делаем новую сцену для нашего проекта.
  22. Начинаем создавать AI для агрессивных ботов.
  23. Делаем атаку мобов, а так же реакцию на атаку. Плюс реализуем сбор лута с мертвых мобов.
  24. Делаем зону спауна для нпц. Так же добавляем генерацию случайных предметов в инвентаре.
  25. Обновляемся до 4.13, а так же делаем дальних агрессивных нпц.
  26. Добавляем разные элементы на HUD. Добавляем ручную перезарядку оружия.
  27. Доделываем поддержку скелетной одежды и шапок. Добавляем анимацию для оружия от первого лица.
  28. Делаем интерфейс для работы с нашей системой экипировки.
  29. Начинаем делать торговую систему и компонент менеджмента денег.
  30. Продолжаем делать торговлю, создавая и настраивая компонент торговли.
  31. Делаем отмену торговли, а так же настраиваем анимацию перезарядки.
  32. Создаем транспорт со своим инвентарем, фарами и переключением вида. Создаем фонарик.
  33. Создаем строительство (а точнее систему размещения объектов перед собой).
  34. Делаем интерфейс для строительства, делаем привязку для стен.
  35. Создаем ещё несколько видов конструкций: Палатка, кровать, стул, стол, лампа, дверь. сундук, костер.
  36. Добавляем крышу, окна. Доделываем выравнивание относительно других конструкций.
  37. Делаем небольшое поселение, а так же населяем его NPC, которые так же создаем в этом уроке.
  38. Начинаем делать систему диалогов для наших жителей.
  39. Настраиваем туман и постобработку. Импортируем модель зомби и настраиваем ему анимации.
  40. Доделываем систему диалогов.
  41. Делаем взаимодействие с предметами от третьего лица, а так же модификаторы для брони.
  42. Создаем главное меню, меню паузы и настройки графики. А так же собираем первую сборку игры.
  43. Реализуем расписание для уникальных жителей.А так же что бы городские NPC убегали от атаки.
  44. Добавляем контекстное меню в инвентарь, а так же фиксим некоторые баги нашего инвентаря.
  45. Добавляем отдачу, разброс, анимацию выстрела и возможность ударить для огнестрельного оружия.
  46. Доделаем агрессивных и городских NPC, фиксим разные баги, связанные с ними.
  47. Настраиваем анимации для главного персонажа. Добавляем различную одежду.
  48. Исправляем различные ошибки в нашей игре.
  49. Исправляем различные ошибки крафта, NPC и экипировки в нашей игре.
  50. Немного дорабатываем карту и собираем последний билд.

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

Что такое игра с точки зрения программиста-инженера

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

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

Практически любая современная (да и не очень) игра включает в себя следующие универсальные модули:

  1. Графический движок. Отвечает за картинку, которую в итоге видит игрок. Часто (и, наверное, к сожалению) является основным компонентом любой игры. Крайне важен, ведь как не крути, любой человек оценивает игры прежде всего по их графике.
  2. Звуковой движок. Модуль, отвечающий за звуковое сопровождение в игре. Если звук, как таковой, не требуется, то этот модуль может вовсе не реализовываться.
  3. Скриптовый (если проще – логический) движок. Подсистема любой игры, отвечающая за ее логику, то есть за взаимосвязь всех компонентов и модулей игры. Для реализации логики игры зачастую применяют специальные сценарии, по факту являющиеся мини-программами. Такие сценарии и называются скриптами.

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

Какой движок выбрать

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

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

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

Все игровые движки делятся на два класса:

  1. Конструкторы игр. Позволяют быстро (10-15 минут) собрать прототип игры, однако серьезно ограничивают разработчика. Хорошим примером конструкторов игр станут многим известные системы Construct и Game Maker .
  2. Настоящие среды разработки. Такие системы дают разработчику свободу действий, однако на их освоение уйдет большое количество времени. Отлично владеющий такими инструментами разработчик сможет создать интересный и качественный продукт.

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

Выбор игрового движка для первого проекта

Если мы говорим о серьезных продуктах, то существует лишь 3 основных платформы: CryEngine , Unity , Unreal Engine .

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

Unity имеет гораздо меньший порог входа, нежели Unreal и больше заточен именно под двухмерную графику. Графическая составляющая в трехмерном пространстве «из коробки» достаточно посредственна и для получения стильной и красивой картинки придется изучить языки шейдерного программирования, а также логику работы графического адаптера. Unity не поддерживает самые современные графические технологии (например, воксельное объемное освещение), однако является хорошим вариантом для новичка, ибо в качестве основного скриптового языка движок использует дружелюбный к пользователю C#.

Unreal Engine, напротив, гораздо сложнее, но зато это самый технологичный современный движок. Все графические технологии прежде всего завозят именно сюда. От разработчика не требуется знаний в области шейдерного программирования (например, языка GLSL, который необходим при работе с шейдерами в Unity), достаточно разобраться в простой системе визуального программирования. Для написания игровой логики движок располагает мощным визуальным скриптовым языком под названием BluePrints. Однако, если разработчику угодно, то описывать игровую логику, да и вообще все что угодно можно с помощью языка C++, что дает большую свободу действий и позволяет оптимизировать игру.

Загрузка и установка Unreal Engine 4

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

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

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

  1. Установка движка и его основная настройка.
  2. Импорт «ассетов», то есть ресурсов.
  3. Построение первой сцены.

Для установки, запуска и последующего использования игрового движка Unreal Engine 4 необходимо использовать программу-ланунчер Epic Games Launcher . Установщик можно скачать с официального сайта Unreal Engine 4. Для запуска загрузки нужно нажать кнопку Get Started Now .

Также будет необходимо завести аккаунт в Epic Games. После того, как вы скачали и установили программу, откройте ее. Вы увидите следующее окно:

Введите данные от аккаунта и нажмите кнопку Sign In. После входа, вы увидите окно управления:

Необходимо выбрать вкладку Unreal Engine и запустить процесс загрузки файлов движка с их последующей установкой, нажав соответствующую кнопку в диалоговом окне. В диалоговом окне установщика желательно выбрать следующие компоненты движка: Starter Content, Templates and Feature Packs, Engine Source для загрузки и установки.

  1. Starter Content – это коллекция ассетов (ресурсов), которые вы можете использовать в ваших проектах бесплатно. Коллекция включает в себя различные материалы, модели и анимации.
  2. Templates and Feature Packs – шаблоны включают в себя большие комплекты исходных кодов, практически полностью реализующий функционал поведения объектов для игр выбранного жанра игры. Например, при выборе жанра First Person, будет автоматически создан и настроен проект, включающий в себя шаблон главного персонажа, а также основные классы, необходимые для создания игр данного жанра.
  3. Engine Source – это полный исходный код игрового движка Unreal Engine 4. Компания Epic Games разрешает любому энтузиасту изменять, дополнять и улучшать исходный код движка, тем самым увеличивая функционал. Например, если вам необходима какая-либо функция редактора, которой нет в стандартном модуле редактора, вы можете поискать плагин, реализующий ее или написать нужный вам функционал, редактируя исходный код движка.

Далее, установщик спросит сборки под какие платформы вы хотите установить. Обязательно выберите свою платформу (ту, на которой вы будете разрабатывать игру), иначе, не сможете проверить и поиграть в билд (готовую к работе сборку) игры. Остальные платформы можно не устанавливать. Для начала они не нужны. После того, как вы выбрали все необходимые компоненты, нажмите кнопку Install. Запустится процесс загрузки и распаковки всех необходимых архивов. Это займет около 30 минут, при условии наличия быстрого соединения и мощного процессора. На этом этапе можно сделать перерыв и выпить чашечку кофе или чая (ну, или еще чего-нибудь).

Создание проекта

Для того, чтобы создать первый проект нужно нажать на кнопку Launch. Начнётся загрузка игрового движка и подготовка к работе (в первый раз, это может занять до 10 минут). По окончанию загрузки вы увидите приветственное окно менеджера проектов.

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

Разбор интерфейса редактора движка

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

Сам редактор состоит из нескольких опорных панелей:

  1. Content Browser: На этой панели отображаются все файлы, задействованные в вашем проекте. Используйте данный инструмент для создания папок и логической организации файлов. Вы можете искать свои файлы с помощью панели поиска, а также с помощью фильтров.
  2. Modes: Данная панель нужна для того, что бы переключаться между различными инструментами просмотра и редактирования сцены.
  3. World Outliner: Данная панель нужна для отображения списка всех объектов на просматриваемой (редактируемой) сцене. Вы можете создавать новые объекты, удалять их, а также редактировать.
  4. Details: Практически любой объект в Unreal Engine 4 имеет определенные свойства, которые можно (и порой необходимо редактировать). Для этого служит панель Details. Она предоставляет очень удобный набор разноплановых инструментов для редактирования свойств игровых объектов.
  5. Toolbar: Название говорит само за себя. Панель содержит иконки для запуска и остановки различных функций движка. Одна из наиболее часто используемых – функция Play.
  6. Viewport: Панель, отображающая ваш уровень (редактируемую сцену) во всех деталях. Вы можете управлять камерой, зажав правую кнопку мыши с помощью стандартного набора клавиш WASD.

Импорт ресурсов (ассетов)

Последнее, что мы рассмотрим сегодня – это импорт различных ресурсов в движок. Пустая сцена – это не интересно. Давайте выведем на экран хоть что-нибудь, например, футбольный мяч (скачать тестовый fbx-файл 3d модели).

Распакуйте его и переместите в папку с вашим проектом. Перед тем, как вы сможете использовать скаченный файл в качестве 3d-модели, нужно импортировать его. Используйте кнопку Import для того чтобы открыть окно загрузки.

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

Использование ассетов

После того, как движок импортировал все необходимое, можно приступать к использованию ассетов. В панели Content Browser , выберите объект Ball _ FBX и перетащите его на вкладку Viewport . Вы увидите что-то наподобие этого:

Мы не видим мячик, так как очень маленький. Перейдите во вкладку Details и установите параметр Scale в 100.0 по всем трем осям. Вы увидите нечто подобное:

Расположите мячик так, как вам нравиться и нажмите кнопку Play на панели Toolbar. Вот и все, ваша первая сцена готова!

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