Antes de distribuir um projeto da Unreal a usuários, ele deve ser empacotado. O empacotamento garante que os códigos e o conteúdo estejam atualizados e no formato correto para execução na plataforma desejada.
No processo de empacotamento, são executadas várias etapas. Primeiro, o código-fonte específico do projeto será compilado. Após a compilação, todo o conteúdo necessário será convertido, ou "preparado", em um formato compatível com a plataforma de destino. Em seguida, o código compilado e o conteúdo preparado serão agrupados em um conjunto de arquivos distribuíveis, como um instalador.
No menu Arquivo principal, há uma opção chamada Pacote de projeto, com um submenu. Esse submenu exibe uma lista com as plataformas compatíveis para empacotar o projeto.
Para empacotar em Android, existem várias opções. Consulte a página Referência do Android para obter mais informações.
Também existem algumas opções Avançadas que podem ser definidas antes do empacotamento.
Como configurar um mapa padrão de jogo
Antes de empacotar o jogo, é preciso definir um Mapa Padrão do Jogo, que será carregado quando o jogo empacotado for iniciado. Se não configurar um mapa e estiver usando um projeto em branco, você verá somente uma tela preta quando o jogo empacotado iniciar. Se tiver usado um dos mapas de modelo, como o modelo Primeira Pessoa ou Terceira Pessoa, o mapa inicial será carregado.
Para definir o mapa padrão do jogo, clique em Editar > Configurações de Projeto > Mapas e Modos no menu principal do Editor:
Como criar pacotes
Para empacotar um projeto para uma plataforma específica, clique em Arquivo > Pacote de projeto > [PlatformName] no menu principal do Editor:
Será exibida uma janela de diálogo para selecionar o diretório de destino. Se o empacotamento for concluído com sucesso, esse diretório incluirá o projeto empacotado.
A confirmação do diretório de destino iniciará o processo real de empacotamento do projeto para a plataforma selecionada. Como o empacotamento pode demorar muito, esse processo é realizado em segundo plano para que você possa continuar usando o editor. Um indicador de status exibirá o progresso no canto inferior direito do editor:
O indicador de status também exibe um botão "Cancel" para interromper o processo de empacotamento. Além disso, o link "Show Log" pode ser usado para exibir informações detalhadas do registro de saída. Isso ajuda a encontrar problemas em caso de falha do empacotamento ou a obter avisos que revelem possíveis bugs no produto:
As mensagens mais importantes, como erros e avisos, são registradas na janela padrão "Message Log":
Se essas janelas não estiverem visíveis, você pode acessá-las pelas opções Janela > Ferramentas de desenvolvedor > Log de Saída / Log de mensagens.
Distribuição
Para publicar um jogo para iOS ou Android na App Store ou Google Play Store, é preciso criar o pacote no modo Distribuição. Para fazer isso, vá até a opção Configurações de pacote no menu Pacote e marque a caixa de seleção Distribuição.
Para iOS, você precisará criar um Certificado de Distribuição e MobileProvision no site de desenvolvedor da Apple. Instale o Certificado de Distribuição da mesma forma que o Certificado de Desenvolvimento. Nomeie a provisão de distribuição com um prefixo "Distro_", ao lado da outra (dessa forma, você terá Distro_MyProject.mobileprovision e MyProject.mobileprovision).
No Android, você precisará criar uma chave para assinar o arquivo .apk e fornecer informações às ferramentas de compilação com um arquivo chamado SigningConfig.xml. Esse arquivo existe no diretório instalado da Engine (Engine/Build/Android/Java/). Se você editar o arquivo, a alteração se aplicará a todos os projetos. No entanto, você pode copiar esse arquivo para o diretório Build/Android/ do seu projeto (sem o subdiretório Java/), e ele será usado apenas para esse projeto. As orientações sobre como gerar a chave e preencher o arquivo estão disponíveis no próprio arquivo.
Configurações avançadas
Se você clicar em Arquivo > Empacotar projeto > Configurações de pacote... ou Editar > Configurações de projeto > Pacote no menu principal, serão exibidas opções de configuração avançada para a funcionalidade de empacotamento.
Por enquanto, elas incluem:
| Opção | Descrição |
|---|---|
Configuração da compilação | A configuração de versão para compilar o projeto baseado em código. Para depurar um projeto em código, selecione "DebugGame". Para a maioria dos outros desenvolvimentos com baixa compatibilidade com depuração, mas melhor desempenho, selecione "Development". Para a versão de lançamento final, que não terá informações de depuração nem funcionalidades para depuração (como desenhos de figuras de depuração ou impressão de mensagens de depuração na tela), selecione "Shipping". Observe que não existe a opção de criar uma versão "DebugGame" para projetos apenas de Blueprint. |
Diretório de preparo | O diretório que conterá a versão empacotada. Isso será atualizado de forma automática ao selecionar um diretório diferente na seleção do diretório de destino. |
Recompilação completa | Determina se todo o código deve ser compilado. Se desabilitada, somente o código modificado será compilado. Isso pode acelerar o processo de empacotamento. Para versões de lançamento, faça sempre uma reconstrução completa para garantir que nada esteja faltando ou esteja desatualizado. Essa opção está habilitada por padrão. |
Usar arquivo de pacote | Determina se os ativos do projeto serão empacotados como arquivos individuais ou como um único pacote. Se habilitada, todos os ativos serão colocados em um único arquivo .pak, em vez de copiar todos os arquivos individuais. Se o projeto usa muitos arquivos de ativo, use um arquivo Pak para facilitar a distribuição, pois ele reduz a quantidade de arquivos a transferir. Essa opção está desabilitada por padrão. |
Gerar partes | Determina se serão gerados pacotes de arquivo .pak que podem ser usados para instalações de transmissão. |
Compilar dados de instalação de parte de http | Determina se serão gerados dados para o instalador de pacote HTTP. Isso permite que esses dados sejam hospedados em um servidor web que será instalado em tempo de execução. |
Diretório de dados de instalação de parte de Http | O diretório onde os dados serão instalados quando estiverem compilados. |
Versão dos dados de instalação de parte de http | O nome da versão para dados de instalação de pacote HTTP. |
Incluir pré-requisitos de instalador | Especifica se é preciso incluir instaladores para pré-requisitos de jogos empacotados, como componentes redistribuíveis do sistema operacional. |
Diretórios para sempre preparar | Lista de diretórios com arquivos que devem sempre ser preparados. Por padrão, a funcionalidade de empacotamento detecta e prepara de modo automático todo o conteúdo referenciado no jogo. Alguns conteúdos obrigatórios podem não ter referência direta, como texturas para uma IU Slate personalizada. Os diretórios que hospedam esse conteúdo devem ser listados aqui para incluí-lo no pacote também. |
Assinatura e criptografia
Com o lançamento da Unreal Engine 4.22, integramos a biblioteca OpenSSL padrão do setor para plataformas de desktop (Windows, Mac e Linux).
Quando distribuídos em um produto lançado, os arquivos .Pak podem ser assinados ou criptografados para impedir a extração ou a alteração de dados. Para ativar, desativar ou ajustar as configurações criptográficas do projeto, vá para o menu Configurações de Projeto e encontre a seção Criptografia.
Nesse menu, você tem acesso às seguintes configurações:
| Opção | Descrição |
|---|---|
Criptografar arquivos Pak INI | Criptografa todos os arquivos |
Criptografar índice Pak | Criptografa o índice de arquivo |
Criptografar arquivos UAsset | Criptografa os arquivos |
Criptografar ativos | Fornece criptografia completa a todos os ativos dentro do arquivo Observe que essa configuração tem um efeito mensurável no desempenho de E/S do arquivo em tempo de execução. Além disso, ela aumenta a quantidade de entropia nos dados empacotados finais, reduzindo a eficiência do sistema de patches de distribuição. |
Habilitar assinatura de pacote | Ativa ou desativa a assinatura do arquivo .pak. |
Além disso, pode-se configurar ou remover chaves para assinar ou criptografar.
Preparação de conteúdo
Como desenvolvedor, ao iterar conteúdo de um jogo novo ou modificado, você nem sempre desejará passar pelo longo processo de empacotar tudo no diretório de montagem e depois executá-lo. Portanto, é possível apenas preparar o conteúdo para uma plataforma de destino específica sem empacotá-lo clicando em Arquivo > Preparar conteúdo > [PlatformName].
Observe que essa funcionalidade atualizará o conteúdo no espaço de trabalho do desenvolvedor local do projeto, mas não copiará ativos para o diretório de montagem. Você pode executar o jogo pelo espaço de trabalho do desenvolvedor local para uma iteração rápida.
Otimização de tempos de carregamento
Tempos de carregamento menores são essenciais para jogos de mundo aberto, mas são importantes em todo tipo de jogo. A Unreal Engine oferece diversos métodos para otimizar o tempo de carregamento do projeto durante o processo de empacotamento. Abaixo, você encontra algumas práticas recomendadas para reduzir o tempo de carregamento nos jogos. Para obter informações sobre como empacotar o projeto, consulte a seção Como empacotar e preparar jogos.
Uso do Event Driven Loader (EDL) e do Asynchronous Loading Thread (ALT)
O Asynchronous Loading Thread (ALT) está desativado por padrão. No entanto, você pode ativá-lo no menu Configurações de Projeto, na seção Engine > Streaming. Engines modificadas podem exigir alguns ajustes. De maneira geral, ALT duplicará a velocidade de carregamento, incluindo jogos com tempos de carregamento "adiantados" e jogos com transmissão de dados constante. O ALT executa códigos de serialização e de pós-carregamento ao mesmo tempo em dois threads separados. Como resultado, ele adiciona o requisito de que construtores de classe
UObject, funçõesPostInitPropertiese funçõesSerializeno código do jogo devem ser seguros para thread. Quando ativado, o ALT duplica a velocidade de carregamento. Confira a página Asynchronous Asset Loading para obter mais informações sobre o uso de métodos de carregamento assíncrono (no C++).O Carregador orientado por evento está ativado por padrão, mas pode ser desativado no menu Configurações de Projeto, na seção Engine > Streaming. Na maioria dos projetos, o EDL reduzirá o tempo de carregamento pela metade. O EDL é estável e pode ser recompilado para versões mais antigas da Unreal Engine. Ele também pode ser ajustado para versões modificadas ou personalizadas da engine.
Compressão do arquivo .pak
Para usar compressão de arquivo
.pakno seu projeto, abra as Configurações de Projeto e encontre a seção Pacote. Nessa seção, abra a parte avançada do cabeçalho "Packaging" e selecione a caixa "Create compressed cooked packages" exibida.A maioria das plataformas não fornece compressão automática, e a compressão dos arquivos
.pakdiminuirá os tempos de carregamento, mas há alguns casos especiais a serem considerados:
| Plataforma | Recomendação |
|---|---|
Steam | A Steam compacta arquivos enquanto são baixados pelos usuários. Assim, os tempos de download iniciais não serão afetados pela compressão do arquivo .pak do jogo. No entanto, o sistema de patch diferencial da Steam funcionará melhor com arquivos não compactados. Arquivos .pak compactados economizam espaço no sistema do cliente, mas podem demorar mais para baixar durante o patching. |
Oculus | Não habilite a compressão do arquivo |
Ordenação do arquivo pak
Um arquivo .pak bem ordenado é fundamental para reduzir o tempo de carregamento. Para ajudar a ordenar o arquivo .pak, de forma otimizada, a UE4 fornece um conjunto de ferramentas para descobrir a ordem em que os ativos de dados são necessários e montar pacotes de carregamento mais rápido. O conceito desse processo é semelhante à otimização guiada por perfil. Siga este método para ordenar nosso arquivo .pak :
Compile e execute o jogo empacotado com a opção de linha de comando
-fileopenlog. Ela faz com que a engine registre a ordem que usará para abrir arquivos.Teste as principais áreas do jogo. Carregue todos os níveis, personagens jogáveis, armas, veículos e assim por diante. Quando tudo estiver carregado, saia do jogo.
No jogo instalado, haverá um arquivo chamado
GameOpenOrder.logque contém as informações necessárias para otimizar a ordem do seu arquivo .pak . Por exemplo, em versões para Windows, o arquivo estará localizado emWindows/(YourGame)/Build/Windows/FileOpenOrder/. Copie este arquivo para o diretório de desenvolvimento no caminho/Build/Windows/FileOpenOrder/. Nas versões para Mac, o arquivo estará emMacNoEditor/(YourGame)/Build/WindowsNoEditor/FileOpenOrder/. Copie este arquivo para o diretório de desenvolvimento no caminhoBuild/Mac/FileOpenOrder/.Com o arquivo de logs no local, recompile o arquivo
.pak. Este e todos os futuros arquivos.pakproduzidos usarão a ordem de arquivo indicada no arquivo de logs.
Em um ambiente de produção, o arquivo de logs deve ser verificado no controle de fonte e atualizado de forma periódica com os resultados de novas execuções do -fileopenlog, incluindo uma execução final quando o jogo estiver pronto para lançamento.