Разное

Unreal engine 4 на русском: Unreal Engine 4 по-русски

Основы UE4 — Unreal Engine 4 по-русски

Оглавление

  1. 1 Основы редактора
  2. 2 Режимы редактора
  3. 3 Актеры и геометрия
  4. 4 Менеджер контента
  5. 5 Освещение
  6. 6 Материалы и Шейдеры
  7. 7 Визуальное программирование схемами
  8. 8 Программирование
  9. 9 Тестирование вашей игры

Основы редактора

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

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

В редакторе Unreal (Unreal Editor) сцены, содержащие логику игры и геометрию, принято называть Уровнями (Levels). Вы можете представлять их как 3D-пространства, которые наполняются объектами и геометрией, составляющей окружение, в котором будет действовать игрок.

Каждый объект в вашей игре — это Актер (Actor). Технически актер — это программный класс, описывающий объект, для которого определены координаты в 3D-пространстве, поворот и масштаб. Для простоты же можно сказать, что Актер — это любой объект, который можно разместить на Уровне.

Режимы редактора

Панель режимов (Modes) содержит набор различных режимов редактора. Различные режимы предназначены для выполнения различных операций: размещение ассетов* в пространстве, создания геометрии и пространственных контейнеров, рисование на каркасах объектов, генерация растительности и скульптинг ландшафтов.

Актеры и геометрия

На самом простом уровне создание уровней сводится к размещению различных объектов в редакторе Unreal. Такими объектами могут быть различные декорации, создаваемые Кистями (Brushes), статическими 3D-объектами (Static Meshes), источниками света, точками начала игры, оружием или механизмами — все зависит от выбранного разработчиками рабочего процесса.

Менеджер контента

Менеджер контента (Content Browser) служит для создания, импорта, сортировки, просмотра и редактирования ассетов* в редакторе Unreal. Также он позволяет управлять файловой системой проекта с возможностями организации структуры ассетов. С его помощью можно выполнять поиск и получить доступ ко всем ассетам игры.

Освещение

Освещение сцен достигается использованием Актеров-ИС** (Light Actors). Помимо базовых характеристик света, вроде интенсивности и цвета свечения, они определяют каким именно образом излучается свет, предлагая выбрать один из нескольких типов ИС, вроде точечного света (point light — излучает свет равномерно во всех направлениях), прожектора (spot light — излучение света происходит в определенном направлении в форме конуса) или направленного света (directional light — лучи света параллельны и излучение происходит в выбранном направлении; обычно такое освещение характерно для ИС, расположенных на очень большом расстоянии от сцены, вроде Солнца).

Материалы и Шейдеры

Материал (Material) — это ассет, который может быть применен к каркасному объекту (mesh), чтобы визуально сымитировать материал, из которого этот объект якобы сделан. Говоря совсем простым языком, это способ «покрасить» объект. На самом деле, все несколько сложнее, так как материал определяет еще и физические свойства поверхности объекта: его шероховатость, способность пропускать и отражать свет, и т. п., что позволяет сымитировать практически любой тип материала — металл, камень, дерево, стекло, пластик и т. д.

Unreal Engine 4 использует физически-корректную модель затенения поверхностей. Это буквально означает, что при настройке материалов вместо того, чтобы задавать некие довольно абстрактные величины, вроде диффузного цвета (diffuse color) и степени зеркальности (specular power), вы будете работать с более приближенными к реальному миру свойствами поверхностей: основной цвет (base color), металлистичность (metallic), зеркальность (specular), шероховатость (roughness) и т. п.

Визуальное программирование схемами

Визуальное программирование с использованием Blueprint’ов (Blueprints Visual Scripting) — это замечательная полноценная система программирования игровых сценариев (scripts) на основе нодов***. Эта система обладает невероятной гибкостью и мощностью, предоставляя практически все те же самые возможности, что и классическое программирование с использованием программного кода. К тому же она очень наглядна.

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

Реализация игрового процесса и внесение изменений в работу движка — базовые аспекты любого игрового проекта. Unreal Engine позволяет реализовывать все это как при помощи написания кода на C++, так и при помощи программирования с Blueprint’ами. С помощью этих инструментов можно описать управление игровым процессом и даже создать плагины, которые изменяют или расширяют функционал редактора и движка, реализуя совершенно уникальный функционал.

Тестирование вашей игры

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


* asset — в дословном переводе с английского означает «актив» в смысле «ресурс» или «имущество». В терминах компьютерного дизайна или компьютерной графики имеется ввиду любой набор объектов, кистей, «деталей», из которых создается законченный продукт. Автору представляется, что в данном случае употребление заимствованного слова более уместно, чем его не совсем точные русскоязычные аналоги.

** ИС — источник(и) света.

*** nodes — на русский язык можно перевести как «узлы» в смысле «блоки» блоксхемы; однако такое значение слова «узел» непривычно для русского языка и для сферы компьютерной графики и программирования — автор считает заимствование оригинальной терминологии уместным и более корректным.

Локализация игр в Unreal Engine 4 — Денис Кузнецов на DTF

Hello there! Моё имя Денис Кузнецов, и я работаю в движке Unreal Engine 4 (уже в 5).

5381 просмотров

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

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

Локализация в UE реализована шикарно, и если помнить, что достаточно весь текст, который будет переводиться, хранить в FText (Text в Blueprint’ах) полях, то в целом, с выхватом текста из игры нет никаких проблем. Достаточно открыть Localization Dashboard, потыкать пару кнопок — и вуаля.

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

Как хранить текст

Ребята из Epic Games упростили сборку текста до максимума, сводя все к одному клику и дальнейшему переводу. Все очень просто — для локализации используется тип данных FText (Text в Blueprint’ах), в который сохраняется текст, и этот текст в дальнейшем собирается системой локализации и предоставляется для перевода.

Как это работает?

FText — это не стандартный тип данных, который хранит в себе данные. Он, конечно, хранит в себе данные, но не те, которые мы ожидаем.

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

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

Когда запускается сбор текста, то система локализации собирает все Text — переменные из всех блюпринтов, виджетов и таблиц, и выкатывает один огромный список текста, который можно экспортировать в *. po и переводить.

Наша экономическая стратегия — игра в интерфейсы.

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

И вот тут начинается сложность. Если мы будем в каждом виджете заново писать названия отделов, то в какой-то момент в одном из виджетов название отделов будет написано не так. Осложняется это дело тем, что сами «описания» (например, описание отдела) в большом кол-ве знаков сложно отследить, чтобы везде были одинаковыми (естественно, мы так не делали) . Еще больше веселья в том, что у нас большая часть виджетов используется, как шаблон, в который залетают данные из различных источников, и исходя из того, какой это был источник, меняются названия и тексты внутри кода.

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

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

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

Перевод — дело человеческое. Если будет возможность ошибиться, человеки обязательно ошибутся. И чтобы этого избежать или хотя бы минимизировать, нужно сводить все тексты к единому шаблону. То есть, вывести куда-то в одно место, откуда текст будет браться во всех частях кода. И который будет переведен лишь единожды, чтобы свести риски ошибок до минимума. Казалось бы, можно использовать DataTable, но и там кроется ряд проблем — чтобы сохранить просто названия чего-то, нам нужно создавать целые таблицы, которые будут хранить эти названия.

Поковырявшись в документации Epic Games, я обратил внимание на String Tables (далее «строковые таблицы») . Оказалось, это идеальный вариант — хранить текст в отдельной специальной для текстов таблице, которая создана именно для того, чтобы подключаться в FText — переменным. То есть, мы можем создать таблицу, которая будет хранить в себе текст. И этот текст мы можем подключать к любой переменной — будь то переменная в таблице данных, переменная в виджете, переменная в коде — все сводится к одному месту, где хранится текст.

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

Строковые таблицы создаются в движке, как и таблицы данных в разделе «miscellaneous»:

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

После того, как строковая таблица создана, текст теперь можно подключать к FText — переменной:

Говорим Yes локализации.

Ниже в Referenced Text указывается таблица и ключ к тексту.

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

Локализация.

Теперь нам остается только собрать весь текст и начать с ним работать. Для этого нам необходимо запустить Localization Dashboard и начать настройки локализации. Запустить таблицу можно через меню Window->Localization Dashboard.

И перед вами откроется примерно такое окно:

В этом окне нужно обязательно указать цель (модуль) , из которого будет выдергиваться текст. В нашем случае, это игра — Game.

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

Так же нам необходимо указать, какие языки будут использоваться для перевода и какой язык будет нативным (основным) . Очень рекомендую, если вы пишите и говорите на русском языке — указывать русский язык (или любой другой ваш основной язык) . Это связано с тем, что если вы не знаете хорошо английский язык, то указав его основным, вы усложняете себе перевод на английский с «английского». Поэтому, лучше заранее указать ваш язык, как основной, и все тексты писать на вашем родном языке, чтобы потом облегчить себе и другим переводы.

Так же в UE4 есть шикарная возможность создавать переводы прямо в движке, не экспортируя тексты для сторонних программ. Для этого нужно собрать весь актуальный текст в игре, нажав на кнопку № 1. И после этого запустить редактор (кнопка № 2):

Откроется окно редактирования перевода на нужный вам язык.

Сборка

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

В нашем случае, Internationalization Support установлен на All. То есть, наш проект будет поддерживать все типы языков от сложных иероглифов до простых английских букв. А вообще, есть 5 пакетов:

  • English (чистый английский) .
  • EFIGS (English, French, Italian, German, and Spanish) .
  • efigscjk (То же, что и выше + Chinese, Japanese, and Korean ).
  • CJK (Chinese, Japanese, and Korean) .
  • All (Все языки) .

Однако в случаях, когда важен каждый байт в проекте (пакет All весит 15мбайт, а EFIGS 2мбайта) , стоит более внимательно отнестись к тому, какой пакет нужно выбрать.

Настройка локализации в коде

Переключение текста происходит в Runtime, то есть вам не нужно перезагружать игру, не нужно париться на тему оптимизации переключения — все делается легко и просто через метод «SetCurrentCulture», где текстом нужно указать, на какой язык вы хотите переключиться.

!ВАЖНО! Помните, что нельзя сменить язык во время игры, если она запущена в движке. Для этого нужно запускать игру в Stand Alone режиме. Иначе вы меняете язык в движке, а не в игре =)

И вот здесь есть некоторая такая загвоздочка. Дело в том, что разных странах есть свои ответвления языка, так, например, есть основной русский язык (ru), а есть беларуский (ru-BY), казахский (ru-KZ), молдавский (ru-MD), украинский (ru-UA) языки, которые попадают под ветку русского языка.

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

Добавление в текст внешних данных в Blueprint’ах.

Если в самом тексте указать фигурные скобки, а в них указать название данных, то в дальнейшем, можно использовать подстановку этих самых данных в текст. Например: «Вы желаете изучить технологию {Tech_Name}?».

И в BP можно использовать ноду «Format Text», которая будет учитывать сам текст и указанные параметры и создавать дополнительные пины для подключения этих самых данных.

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

Локализация ассетов

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

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

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

Для этого нажмите по любому ассету в проекте ПКМ -> Asset Localization -> Create Localized Asset -> (выбрать язык) .

После создания новой копии ассет можно найти в специализированной папке для локализации. Если лень искать — можно кликнуть ПКМ по основному объекту в проекте и через меню локализации выбрать редактирование нужной вам версии.

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

Заключение

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

Добро пожаловать в Unreal Engine 4

19 марта 2014 г.

Тим Суини


Unreal Engine 4 запускается сегодня. То, что мы выпускаем, одновременно простое и радикальное: все.

Цель Epic — сделать движок доступным для всех, кто интересуется созданием игр и 3D-контента, от инди-разработчиков до крупных команд разработчиков, а также для создателей Minecraft. За 19 долларов в месяц вы можете получить доступ ко всему, включая Unreal Editor в готовом к использованию виде и полный исходный код C++ движка, размещенный на GitHub для совместной разработки.

Это комплексная технология, которую мы в Epic используем при создании собственных игр, основанная на многолетнем опыте выпуска таких игр, как Gears of War для Xbox и Infinity Blade для iOS, и теперь заново изобретенная для нового поколения. Наличие полного исходного кода C++ обеспечивает максимальную гибкость и позволяет разработчикам контролировать свои графики и судьбу: все, что вам нужно для создания и выпуска вашей игры, вы можете найти в UE4, найти в сообществе GitHub или создать самостоятельно — и затем поделитесь им с другими.

Разработка в нереальной экосистеме

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

Чтобы помочь вам начать работу, мы доставляем множество готовых материалов, образцов и шаблонов игр. Вы найдете его в Marketplace в Unreal Editor. Прямо сейчас он просто размещает бесплатные материалы от Epic, но его сходство с App Store не случайно: он превратится в полноценную экосистему для обмена контентом, созданным сообществом, платным и бесплатным, и открытый для всех!

Корабельные игры с Unreal

Мы работаем над созданием компании, которая преуспеет, когда преуспеют разработчики UE4. Любой может поставить коммерческий продукт с UE4, заплатив 5% от валового дохода от продаж пользователям. Если ваша игра приносит 1 000 000 долларов, то мы зарабатываем 50 000 долларов. Мы понимаем, что просим о многом, и что это было бы безумным предложением, если только UE4 не позволит вам создавать игры намного лучше и продуктивнее, чем в противном случае!

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

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

Новое начало

Этот первый релиз Unreal Engine 4 — это только начало. В коде C++ вы можете увидеть множество новых инициатив, например, для поддержки Oculus VR, Linux, усилий Steamworks и Steam Box от Valve, а также для развертывания игр в веб-браузерах через HTML5. Все прямо здесь, на виду, в первый день многолетней захватывающей и открытой разработки!

До сих пор нам нравилось создавать Unreal Engine 4, и мы надеемся, что вы присоединитесь к нам в этом путешествии в качестве вкладчика в будущее Unreal!

Тим Суини
Основатель Epic Games

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

Индия, Австралия и Новая Зеландия сделали свой шанс. Теперь очередь Сингапура! Узнайте, как короткометражный фильм на Unreal Engine может стать вашим билетом к творческой радости: 30 000 сингапурских долларов от IMDA присуждаются кандидатам, прошедшим предварительный отбор, за создание короткометражного контента в UE5. Победившая работа получит дополнительный призовой фонд в размере 20 000 сингапурских долларов от IMDA в Сингапурском конкурсе виртуального производства!
 


Прислано вам:

*Обратите внимание, что это независимое задание, которое не спонсируется и не администрируется Epic Games. Для получения дополнительной информации, пожалуйста, свяжитесь с организаторами по адресу https://www.sgga.org.sg/contact-us/


При поддержке:

    Кандидаты должны:

    • Сформировать команду до пяти человек.
    • Создайте презентацию для короткой части контента Unreal Engine. Лучшие кандидаты/проекты будут представлены нашему отраслевому жюри для окончательного выбора. IMDA предоставит отобранным кандидатам до 30 000 сингапурских долларов и восемь недель на создание короткометражного фильма продолжительностью от 90 секунд до трех минут в Unreal Engine 5. Победивший короткометражный фильм получит дополнительный приз в размере 20 000 сингапурских долларов от IMDA. Подробную информацию о процессе подачи заявки см. в положениях и условиях IMDA.
    • Пройдите практическое обучение на интенсивном пятидневном учебном курсе по виртуальному производству Unreal Engine 5 — любезно предоставлено командой Epic Unreal Engine. Обучение открыто для всех, кто может присоединиться онлайн, независимо от того, подаете ли вы заявку на участие в программе. Обучение пройдёт с 22 по 26 мая 2023 года.

    Почему я должен участвовать?

    КОНСУЛЬТАЦИЯ ЭКСПЕРТА
    Получите доступ к бесплатным учебным ресурсам и тренингам для виртуального производства в реальном времени.

    СОХРАНЯЕТ ВСЕ ПРАВА
    Вы сохраняете все права на свой Unreal Engine коротким. Мы просто хотим его продвигать!

    МЕЖДУНАРОДНАЯ ПРОМЫШЛЕННАЯ ЭКСПОЗИЦИЯ
    Финалисты получат возможность увидеть свою работу в лучших творческих студиях и руководителях по приобретению контента со всего мира. Их работы также будут представлены на Сингапурском медиафестивале для еще большего охвата.

    Готовы принять участие в испытании?

    Заявки принимаются до 28 апреля 2023 г.

    ПОДАТЬ ЗАЯВКУ

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

    Бесплатное обучение

    Команда Epic Unreal Engine предлагает бесплатные онлайн-тренировки всем, кто интересуется анимацией в реальном времени и созданием мира. Обучение пройдет 22–26 мая 2023 г. и подходит для всех креативщиков, имеющих опыт создания цифрового 3D-контента.

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

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