Os projetos podem enfrentar desafios de dimensionamento à medida que o número de códigos e ativos cresce juntamente com o tamanho da equipe. Para garantir que seu projeto será executado da melhor maneira possível, a Epic Games fornece diversas ferramentas juntamente com a UE que podem ajudar a:
Distribuir a Engine e o projeto para a equipe.
Reduzir o tempo de compilação e de empacotamento.
Reduzir a quantidade de espaço que o projeto ocupa no disco rígido.
Reduzir o tempo de sincronização para extração de código atualizado e ativos do controle de versão.
Configurar um pipeline de compilação automatizado.
Configurar um pipeline de testes automatizados.
Tudo isso serve para diminuir o atrito que cada membro da equipe sente ao trabalhar com a Unreal Engine e diminuir o tempo de iteração para criar, testar e alterar funcionalidades.
Gerencie seu projeto com um software de controle de versão
Controle de versão é uma parte essencial de qualquer projeto de desenvolvimento de jogos. Um servidor de controle de versão armazena uma cópia centralizada e autoritativa do código e dos arquivos do projeto, já os clientes de controle de versão fornecem uma maneira de os membros da equipe acessarem e atualizarem esses arquivos. Um "repositório" é um agrupamento de arquivos com versões distintas armazenadas em um servidor de controle de versão, e "espaços de trabalho" são os diretórios no cliente que armazenam a cópia do cliente de um repositório específico.
Uma integração de controle de versão fornece maneiras de:
Extraia uma cópia do projeto a uma máquina local.
Revise e confirme código e ativos.
Separe fluxos de trabalho para evitar conflitos.
Confira, bloqueie e libere arquivos para evitar que vários membros da equipe trabalhem no mesmo arquivo.
Compare (diferenciar) e mescle arquivos.
Além disso, o controle de versão mantém uma lista contínua das alterações enviadas ao repositório, o que permite reverter facilmente para uma versão anterior dos ativos ou do código se uma alteração causar problemas.
A UE é compatível com as seguintes integrações de controle de versão:
Perforce
Git com GitLFS
Subversão
Diversão
A primeira coisa a fazer antes de começar a trabalhar em ativos ou códigos é definir uma dessas opções. Todas são aceitáveis, mas a Epic Games usa principalmente o Perforce, e muitos recursos neste guia giram em torno da integração do Perforce da UE. Quando o projeto tiver um repositório, você poderá integrá-lo ao Navegador de Conteúdo para conferir e gerenciar arquivos diretamente no Unreal Editor.
Para obter mais informações sobre como usar o controle de versão com a UE, confira a página [controle de versão](understanding-the-basics\source-control) e a seção [Colaboração e controle de versão](setting-up-your-production-pipeline\collaboration-in-unreal-engine).
Distribua seu projeto com o Unreal Game Sync
O Unreal Game Sync (UGS) é um cliente que interage com o Perforce, a Unreal Build Tool e seu IDE (se aplicável) para facilitar o download ou a compilação de versões funcionais do projeto pelos membros da equipe. Com o UGS configurar, o usuário pode selecionar seu arquivo .uproject, ver a lista de versões do projeto e encontrar as versões que estão funcionando. Se você tiver um IDE instalado, poderá extrair e compilar os arquivos de origem com um único comando. Caso contrário, você pode encontrar versões que vêm com binários pré-compilados e baixá-los.
Para obter mais informações, consulte a documentação do UGS.
Crie instaladores off-line para sua equipe
Se você bifurcou e personalizou o código-fonte da engine, talvez seja uma boa ideia criar uma compilação instalada e empacotá-la como um instalador off-line da Unreal Engine. Para saber mais sobre como criar instaladores off-line, confira as páginas de referência Como criar versões instaladas e Referência a versões instaladas.
Reduza a compilação excessiva de C++ com módulos da Unreal Engine e ICWYU
Quanto mais códigos C++ houver no projeto, mais tempo levará para compilar a partir da IDE. Portanto, é comum que o tempo de compilação de C++ aumente ao longo de um projeto. Especialmente em projetos grandes, isso pode prejudicar o tempo de iteração dos programadores.
A arquitetura da UE divide o código em módulos para mitigar esse problema. Ao organizar o código em módulos, apenas o código do módulo em que você está trabalhando será recompilado. Os outros módulos permanecerão inalterados. Há outros benefícios em usar módulos, sobre os quais você pode ler na seção Módulos da Unreal Engine e na página Módulos do Editor.
A base de código da UE também usa um paradigma "Include What You Use" (IWYU), que também pode reduzir o tempo de compilação usando instruções #include e declarações de encaminhamento com mais eficiência. Para obter mais informações, consulte a página Include What You Use.
Crie versões automatizadas com UAT, BuildGraph e Horde
Embora você possa empacotar projetos pelo Unreal Editor, o comando BuildCookRun da Unreal Automation Tool (UAT) é o mecanismo subjacente para a criação de versões empacotadas, e você pode acessá-lo com qualquer interface de linha de comando para seu sistema operacional. O UAT tem muitos códigos que podem ajudar a automatizar o processo de compilação em situações em que não é viável usar uma interface, como na configuração de um servidor de compilação para compilar automaticamente cada envio ao sistema de controle de versão. Você pode código para seu próprio pipeline de compilação automatizada com o comando BuildCookRun do UAT para uma abordagem direta e simples. Outra opção é usar o BuildGraph para definir um sistema mais detalhado de versões automatizadas.
O Horde é um conjunto robusto de integração contínua construída sobre o framework BuildGraph e inclui diversas ferramentas para monitorar a integridade da compilação, integrar-se com software de rastreamento de tarefa, gerenciar dispositivos de teste remoto e fornecer análises e registros detalhados. Como um benefício adicional, o Horde também fornece suporte para Unreal Build Accelerator (UBA), que pode melhorar a velocidade de compilação distribuindo o trabalho entre vários servidores e/ou estações de trabalho.
Se quiser personalizar o pipeline de compilação, confira a seção Sistema de compilação da Unreal para obter uma referência completa sobre a ferramenta de automação e a ferramenta de compilação.
Acelere o tempo de preparação com a preparação multiprocesso
Quando você empacota um pacote, a UE prepara os ativos do seu projeto para as plataformas de destino, convertendo-os em um formato compatível e aplicando as configurações de compressão que você definiu para ele. Normalmente, esse é um processo único, mas, para acelerar o tempo de preparo, você pode habilitar o preparo multiprocesso e configurar o número de processos de preparo simultâneos que deseja usar. Confira o guia Preparação multiprocesso para obter mais informações.
Simplifique o gerenciamento de ativos com ativos virtuais
À medida que o número e o tamanho dos ativos no projeto crescem, pode reduzir velocidade drasticamente o tempo necessário para os membros da equipe atualizarem o projeto a partir do controle do código-fonte, além de aumentar a quantidade de espaço no disco rígido usada por uma cópia local do projeto.
Para combater isso, a Unreal Engine oferece suporte para ativos virtuais. Eles separam os dados principais dos ativos dos metadados usados para exibição no navegador de conteúdo do editor. Quando os membros da equipe sincronizarem o projeto, serão sincronizados apenas os metadados, o que usa uma quantidade de espaço muito menor do que o ativo completo. Quando é necessário acessar o ativo para visualizá-lo ou alterá-lo, a UE extrai os dados em massa do repositório da equipe ou de um cache de dados derivados (CDD) sob demanda.
Para obter mais informações, consulte a documentação Ativos virtuais.
Reduza o tempo de compilação dos shaders do editor com cache de dados derivados
Muitos ativos na UE usam dados derivados. Por exemplo, quando você cria materiais, a Unreal precisa compilar os shaders depois para que os materiais possam ser exibidos por completo. Os arquivos no sistema de controle de versão contêm as instruções necessárias para criar o shader, que são comuns a todas as plataformas e facilitam a edição. Os dados derivados existem como conceitos e mecanismos distintos, tanto porque armazená-los no mesmo arquivo que os dados de origem pode tornar seu repositório muito grande quanto porque o formato exato de um shader compilado pode ser diferente dependendo do hardware e do sistema operacional em que você está usando. À medida que seu projeto ou equipe cresce, isso pode se tornar um processo complicado quando você precisa buscar grandes alterações, especialmente se você precisar baixar seu projeto do zero.
Caches de dados derivados (CDDs) atuam como um repositório secundário especificamente para esse tipo de dados derivados. Quando um usuário compila ou prepara um ativo, ele adiciona os dados derivados ao CDD. Assim, quando outros usuários com hardware compatível sincronizarem o ativo, a UE poderá extrair o ativo e os dados derivados, evitando a necessidade de recompilar do zero. Ao contrário do controle de versão, os CDDs geralmente não retêm todas as versões de todos os arquivos já enviados, mantendo apenas os dados mais recentes até um limite especificado. Nas raras circunstâncias em que alguém precisa conferir uma versão muito antiga do projeto, os dados derivados podem ser regenerados. Você pode implantar uma grande variedade de CDDs compartilhados em diferentes posições em relação à sua equipe e definir regras de como os membros da equipe os acessam para garantir que eles usarão as fontes mais rápidas e confiáveis.
Para obter mais informações sobre como usar CDDs, consulte a documentação Cache de dados derivados. A UE oferece suporte a vários métodos de hospedagem de um CDD compartilhado, mas recomendamos o Zen Storage Server.
Escalone seu teste com testes automatizados
A UE tem diversos frameworks de testes automatizados para testar códigos em diferentes contextos. Isso pode ajudar a detectar bugs no código mais cedo e com mais frequência, além de dar aos testadores de controle de qualidade mais espaço para se concentrarem nos problemas da experiência do usuário. Para obter mais informações, consulte a seção Framework de teste de automação.