Проекты Упаковки в Unreal Engine 4

0
10
Проекты Упаковки UE4

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

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

В главном меню File есть подменю Package Project. Это подменю предоставляет список всех поддерживаемых платформ, для которых вы можете упаковать свой проект.

Для упаковки на Android будет много вариантов. Дополнительную информацию см. на странице Форматы Текстуры Android.

Настройка Game Default Map

Прежде чем упаковать игру, вам сначала нужно установить Game Default Map (карту игры по умолчанию), которая будет загружаться при запуске вашей упакованной игры. Если вы не установите карту и используете пустой проект, вы увидите только черный экран, когда начнется упакованная игра. Если вы использовали одну из карт шаблонов, например шаблон First Person, то загрузится стартовая карта.

Чтобы установить Game Default Map, нажмите Edit > Project Settings > Maps & Modes в главном меню Редактора:

установить Game Default Map UE4Создание Пакетов

Чтобы упаковать проект для определенной платформы, нажмите File > Package Project > [PlatformName] в главном меню Редактора:упаковать проект UE4

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

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

Упаковка проекта UE4Индикатор состояния также предоставляет кнопку Cancel, чтобы остановить процесс упаковки. Кроме того, ссылка Show Log может использоваться для отображения расширенной информации журнала вывода, которая полезна для выяснения того, что пошло не так, если процесс упаковки завершился неудачно, или для обнаружения предупреждений, которые могут выявить потенциальные ошибки в продукте:

Сообщение об ошибке UE4Наиболее важные сообщения журнала, такие как ошибки и предупреждения, регистрируются в обычном окне Message Log (журнала сообщений):

журнал сообщений UE4

Если эти окна не видны, к ним можно получить доступ через опцию Window >Developer Tools > Output Log / Message Log.

Запуск Упакованных Игр

При упаковке вам будет предложено выбрать каталог для вывода процесса упаковки. Ваша упакованная игра будет размещена в подкаталоге на основе его платформы. Например, если вы выбрали каталог C:/PackagedOutput/, сборка Windows будет размещена в C:/PackagedOutput/WindowsNoEditor/. В этом подкаталоге вы найдете упакованную игру в формате, соответствующем платформе. Например, игры для Windows будут иметь файл .exe, игры для Android будут иметь файлы .apk и .obb вместе с установщиком .bat и iOS будут иметь .ipa файл. Количество и тип создаваемых файлов будут различаться в зависимости от целевой платформы. На следующем рисунке показан пример вывода для проекта Windows внутри подкаталога WindowsNoEditor:

Запуск Упакованных Игр UE4Distribution – распределение

Чтобы отправить игру iOS или Android в App Store или в Google Play Store, вам необходимо создать свой пакет в режиме распространения. Для этого перейдите в параметр Packaging Settings в меню Packaging  и установите флажок Distribution.

В iOS вам нужно будет создать сертификат распространения и MobileProvision на веб-сайте разработчика Apple. Установите сертификат распространения так же, как и сертификат разработки, и укажите свое распределение с префиксом «Distro_» рядом с другим (так что у вас будет как Distro_MyProject.mobileprovision, так и MyProject.mobileprovision).

На Android вам нужно будет создать ключ для подписи файла .apk и предоставить некоторую информацию нашим инструментам сборки с помощью файла SigningConfig.xml. Этот файл существует в каталоге установленного движка (Engine/Build/Android/Java/). Если вы отредактируете этот файл, он будет применяться ко всем вашим проектам. Однако вы можете скопировать этот файл в каталог вашего проекта Build/Android/(без подкаталога Java/), и он будет использоваться только для этого проекта. Инструкции о том, как сгенерировать ключ и заполнить файл, находятся в самом файле.настройка упаковки проекта UE4

В настоящее время они включают:

ОпцияОписание
Build ConfigurationКонфигурация сборки для компиляции вашего проекта на основе кода. Для отладки проекта кода выберите DebugGame. Обратите внимание, что проекты только для Blueprint не будут иметь эту возможность. Для большинства других разработок с минимальной поддержкой отладки, но с большей производительностью выберите Development. Для окончательной сборки загрузки, в которой нет информации отладки и нет функций для отладки (например, рисование форм отладки или печать отладочных сообщений на экране), выберите Shipping.
Staging DirectoryКаталог, который будет содержать вашу упакованную сборку. Это будет автоматически обновляться при выборе другого каталога в целевом каталоге.
Full RebuildОпределяет, нужно ли компилировать весь ваш код. Если опция отключена, будет скомпилирован только модифицированный код. Это может ускорить процесс упаковки. Для сборки загрузки вы всегда должны делать полную перестройку, чтобы убедиться, что ничего не пропало и не устарело. Эта опция включена по умолчанию.
Use Pak FileУпаковывает активы вашего проекта в виде отдельных файлов или одного пакета. Если опция включена, все активы будут помещены в один файл .pak вместо копирования всех отдельных файлов. Если ваш проект использует много файлов активов, то использование файла .pak может облегчить его распространение, поскольку оно уменьшает количество файлов, которые вам нужно передать. По умолчанию этот параметр отключен.
Generate ChunksОпределяет, нужно ли собирать фрагменты .pak файлов, которые можно использовать для потоковой установки.
Build Http Chunk Install DataОпределяет, нужно ли собирать данные для установщика HTTP chunk. Это позволяет размещать эти данные на веб-сервере, который будет установлен во время выполнения.
Http Chunk Install Data DirectoryЭто каталог, в котором данные будут установлены после его создания.
Http Chunk Install Data VersionЭто имя версии для данных HTTP chunk install.
Include Prerequisites InstallerЭто указывает, следует ли включать инсталляторы для предпосылок упакованных игр, таких как распространяемые компоненты операционной системы.
Directories to Always CookСписок каталогов с файлами, которые нужно всегда готовить. По умолчанию функция упаковки автоматически обнаруживает и готовит весь контент, на который ссылается ваша игра. Некоторый требуемый контент может не упоминаться напрямую, например, текстуры для пользовательского интерфейса Slate UI. Каталоги, в которых находится такой контент, должны быть перечислены здесь, чтобы также включить его в пакет.

Подписание и Шифрование

Файлы Pak могут быть подписаны или зашифрованы, как правило, чтобы препятствовать извлечению данных или подделке при распространении в отправленном продукте. Чтобы активировать, деактивировать или настроить криптографические настройки в вашем проекте, перейдите в меню Project Settings и найдите раздел Crypto.

Подписание и Шифрование проекта UE4Криптографические параметры в меню Project Settings.

В этом меню доступны следующие настройки:

ОпцияОписание
Encrypt Pak .ini FilesШифрует все .ini файлы, которые существуют в .pak файлах вашего проекта. Это предотвратит легкую добычу или несанкционированное использование данных конфигурации для вашего продукта при минимальных затратах времени исполнения.
Encrypt Pak IndexШифрует индекс .pak файла, который запрещает открывать UnrealPak, просматривать и распаковывать .pak файлы вашего продукта при минимальной стоимости исполнения.
Encrypt UAsset FilesШифрует файлы .uasset в .pak файле. Эти файлы содержат информацию заголовка об активах внутри, но не фактические данные Asset. Шифрование этих данных обеспечивает дополнительную безопасность ваших данных, но добавляет небольшую стоимость исполнения и увеличение энтропии данных, что может увеличить размеры патчей.
Encrypt AssetsПолностью шифрует все активы в .pak файле. Обратите внимание, что этот параметр оказывает заметное влияние на производительность ввода – вывода во время выполнения и увеличивает количество энтропии в ваших окончательных упакованных данных, что делает систему патчей распределения менее эффективной.
Enable Pak SigningАктивирует или деактивирует подпись .pak файла.

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

Приготовление Контента

Как разработчик, при повторении нового или измененного игрового контента вы не всегда можете пройти через длительный процесс упаковки всего в промежуточный каталог и затем запустить его оттуда. Поэтому можно готовить контент только для конкретной целевой платформы, не упаковывая его, нажав File > Cook Content > [PlatformName].

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

Оптимизация времени загрузки

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

Использование Event Driven Loader и Asynchronous Loading Thread

  • Asynchronous Loading Thread (Асинхронный загрузочный поток) (ALT) отключен по умолчанию, но его можно включить в меню Project Settings в разделе Engine – Streaming. Для модифицированных движков могут потребоваться некоторые настройки, но в целом ALT должен удвоить скорость загрузки, в том числе игры с «начальным» временем загрузки и играми, которые постоянно передают данные. ALT работает, одновременно выполняя сериализацию и запуск послезагрузочного кода одновременно на двух отдельных потоках, и в результате он добавляет требование, чтобы конструкторы классов UObject, функции PostInitProperties функции Serialize в вашем игровом коде должны быть потоко – безопасными. При активации ALT удваивает скорость загрузки. Для получения дополнительной информации об использовании методов асинхронной загрузки (на C++) см. страницу Загрузки асинхронных активов.
  • Event-Driven Loader (Загрузчик, управляемый событиями) активируется по умолчанию, но его можно деактивировать в меню Project Settings в разделе Engine – Streaming. Для большинства проектов EDL сократит время загрузки вдвое. EDL стабилен и может быть перенесен в более старые версии Unreal Engine или может быть изменен для модифицированных или настроенных версий движков.настройки Engine Streaming UE4

Сжатие вашего .pak файла 

  • Чтобы использовать сжатие .pak файла в вашем проекте, откройте Project Settings и найдите раздел Packaging. В этом разделе откройте расширенную часть заголовка Packaging и установите флажок “Create compressed cooked packages”.
  • Большинство платформ не обеспечивают автоматическое сжатие, а сжатие ваших .pak файлов уменьшает время загрузки, но есть несколько особых случаев, которые следует учитывать:
ПлатформаРекомендация
Sony PlayStation 4Сжатие .pak файла будет избыточным, если сжатие будет автоматически применено к каждому заголовку PlayStation 4 и приведет к увеличению времени загрузки без уменьшения размера файла. Поэтому не рекомендуется сжимать .pak файлы для релизов PlayStation 4.
Nintendo SwitchСжатые .pak файлы на коммутаторе иногда загружаются медленнее из-за времени процессора, необходимого для распаковки данных, но иногда быстрее загружаются из сжатых файлов. Рекомендация для названий коммутаторов – проверять время загрузки с каждым заголовком и принимать индивидуальные решения.
Microsoft XBoxOneСжатие имеет решающее значение для достижения максимально быстрого времени загрузки на платформе XBoxOne.
SteamSteam сжимает файлы во время их загрузки пользователями, поэтому первоначальное время загрузки не будет зависеть от сжатия .pak файла вашей игры. Тем не менее, дифференциальная патч – система Steam будет работать лучше с несжатыми файлами. Сжатые .pak файлы экономят место в системе пользователя, но при их загрузке потребуется больше времени.

Сжатие pak файла UE4Установите этот флажок, чтобы включить сжатие в ваших .pak файлах. 

Упорядочивание .pak файла 

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

  1. Создайте и запустите упакованную игру с опцией командной строки «-fileopenlog», которая заставляет движок регистрировать порядок, в котором он открывает файлы.
  2. Используйте все основные области игры. Загружайте каждый уровень, каждый воспроизводимый персонаж, каждое оружие, каждое транспортное средство и т.д. Как только все будет загружено, выйдите из игры.
  3. В развернутой игре под названием GameOpenOrder.log будет файл, содержащий информацию, необходимую для оптимизации вашего .pak файла. Например, в WindowsNoEditor/(YourGame)/Build/WindowsNoEditor/FileOpenOrder/ 
    Windows файл будет найден в WindowsNoEditor/(YourGame)/Build/WindowsNoEditor/FileOpenOrder/
    Скопируйте этот файл в каталог разработки в каталоге /Build/WindowsNoEditor/FileOpenOrder/.

  4. С помощью log file (файла журнала) восстановите .pak файл. Этот и все будущие .pak файлы будут использовать порядок файлов, указанный в файле журнала.

В рабочей среде log file должен быть проверен в исходном элементе управления и периодически обновляться с результатами новых запусков “-fileopenlog”, включая окончательный запуск, когда игра готова к отправке.