Para ajudar suas Ilhas a funcionar em todas as plataformas compatíveis, o Fortnite tem algumas limitações de memória.
No Unreal Editor para Fortnite (UEFN), você pode usar recursos de memória expandidos para criar experiências maiores e mais diversificadas. Para aproveitar os recursos ao máximo, é preciso entender a maneira como o uso da memória é calculado no UEFN.
World Partition
O World Partition é a mágica por trás da construção de uma grande experiência em uma Ilha. Essa funcionalidade divide automaticamente o mundo em uma grade e transmite apenas as células necessárias.
O World Partition usa Transmissão, que carrega e descarrega células, e Nível de Detalhe Hierarquizado (HLOD), que agrupa e diminui a quantidade de detalhes nos ativos conforme a câmera do jogador se afasta.
Para obter mais informações sobre World Partition, Transmissão e HLODs, consulte Transmissão e HLODs.
Como a memória é calculada
O UEFN calcula o uso de memória a partir dos dados produzidos no tempo de preparação. Isso significa:
Resultados rápidos em ilhas grandes.
Números consistentes sempre que você executa o cálculo na mesma versão da ilha, compilação do Fortnite e dispositivo.
Amplo suporte para mais tipos de ativos e para o Scene Graph.
O sistema de cálculo de memória no UEFN é executado apenas no momento da edição e não pode ser usado para avaliar o uso da memória no momento do jogo. Ele é usado para verificar se o uso de memória de base de uma ilha não excede um limite razoável.
No entanto, a lógica de tempo de execução personalizada pode levar a um alto uso de memória, o que pode causar problemas para os jogadores, limitando a capacidade deles de jogar na sua ilha. Recomendamos o uso do Gerador de perfil espacial para ter uma ideia melhor de como sua ilha usa a memória e se comporta no momento do jogo, evitando assim problemas de estabilidade ou desempenho para os seus jogadores.
O layout da sessão
Ao carregar sua sessão, você verá uma barra Uso de Memória Atual em HUD.
A barra mostra um máximo de 100.000 unidades de memória para dar a você uma ideia do uso de memória na ilha.
Com a transmissão habilitada, a memória é calculada com base na posição da pessoa jogadora na ilha, e não na memória total usada por todos os ativos da ilha. Realizar um cálculo de memória apresentará os valores de consumo de memória mais precisos para cada célula de transmissão.
Alguns ativos permanecerão na memória independentemente da posição da pessoa e serão adicionados ao uso da memória em qualquer lugar do mapa. A maioria dos ativos será carregada e descarregada à medida que entrarem e saírem da transmissão, e a barra será atualizada para refletir isso.
Todos os ativos referenciados pelo nível (incluindo dispositivos, paisagens, malhas personalizadas e texturas, etc.) contam para o uso total de memória.
Observe que se qualquer área no seu nível ultrapassar 100.000, você não poderá publicar a ilha.
Como usuário do UEFN, você pode exceder o limite de 100.000 termômetros, desde que não publique. Lembre-se que seus colaboradores que usam um console podem atingir um limite de memória no hardware disponível, e isso as expulsarão da sessão. Elas podem se reconectar assim que o problema for resolvido.
Como fazer alterações de conteúdo
O sistema requer dados preparados e atualizados para calcular o uso de memória com precisão. Depois de fazer alterações de conteúdo com a Edição em tempo real ou com a ferramenta Telefone, você verá um prompt de Envio de alterações mesmo que o indicador do Modo de Edição mostre Atualizado, pois a Edição em tempo real não atualiza os dados preparados usados para cálculos de memória.
Até que você envie as alterações, a barra de uso continuará a ser atualizada, mas mostrará um valor desatualizado. O custo das modificações de conteúdo não será refletido.
Como iniciar um cálculo de memória
Sua ilha precisa ser capaz de rodar em todas as plataformas de hardware aceitas para que ela possa ser publicada.
Antes de publicar, é essencial garantir que seu projeto não exceda os limites de memória. No menu suspenso Projeto, selecione Iniciar cálculo de memória.
Este processo calcula a memória usada em cada célula.
Uma caixa de diálogo solicitará que você faça o upload da versão privada. Clique no botão e observe a barra de progresso.
Opcionalmente, você pode adicionar uma descrição para a versão do seu projeto.
Um aviso na parte inferior da tela informará que o cálculo da memória está em andamento.
Quando o upload for concluído, a janela de aviso será alterada para indicar que o cálculo foi iniciado.
No cliente, o resultado do cálculo da memória é exibido. Pressionar Continuar retornará o controle do personagem jogável.
Depois de concluído, o personagem do jogador se teletransporta de volta ao local original antes do início do cálculo, e você verá um dos dois status:
Se você tiver transmissão habilitada no seu projeto, agora poderá voar para ver a quantidade de espaço ocupada por diferentes áreas.
Se a transmissão estiver habilitada, a barra Memória Usada muda durante o sobrevoo. Você pode usar esse item para identificar as áreas no nível que podem estar acima do orçamento.
Se sua ilha estiver acima do orçamento, você precisará corrigir os problemas de memória local antes de publicar.
Minha Ilha está acima do orçamento. O que eu posso fazer?
Existem muitas estratégias para economizar memória depois de atingir o limite. Tente qualquer combinação do seguinte:
Depois do cálculo de memória, você poderá abrir uma planilha com os 100 principais ativos que consomem muita memória na sua ilha. Acesse Janela, Log de Mensagens, Resultados do teste de memória.
A tabela abaixo define cada termo:
Prazo Explicação Recurso
Geralmente, é o nome de um ativo no Navegador de conteúdo. Alguns recursos podem ser exibidos como "Ativo do Fortnite", um nome que atribuímos a recursos não criados no seu projeto, mas que ainda adicionamos ao uso de memória da sua ilha.
Tipo
Esse é o tipo de recurso/ativo. Exemplos incluem textura, material, nível e muito mais.
Número de referências de ator
O número de atores que fazem referência ao recurso, direta ou indiretamente.
Número de referências de pacotes
O número de pacotes preparados que fazem referência ao recurso. Esse número geralmente aumentará se um recurso for referenciado por várias células do World Partition.
Tamanho
O tamanho do recurso. É o valor que um recurso específico contribui para a barra de Uso de memória atual na posição amostrada.
Faça a transmissão de texturas sempre que possível. Isso significa criar texturas para serem compatíveis com transmissão (com dimensões em potência de dois) e configurar as texturas para que mipmapas sejam gerados. Se as texturas não puderem ser transmitidas, elas sempre usarão a quantidade máxima de memória, independentemente da distância em que estejam sendo usadas. Informações adicionais podem ser encontradas em Como redimensionar texturas.
Ative a transmissão no painel World Partition. Embora isso seja obrigatório para ilhas grandes, ilhas menores também podem se beneficiar da transmissão, especialmente se o conteúdo ficar muito denso.
Quando a transmissão estiver ativada, certifique-se de que os atores tenham a opção É Carregado Espacialmente habilitada sempre que possível. Caso contrário, eles serão preparados no pacote de nível principal e sempre serão carregados. Isso é especialmente relevante para atores de proxy de transmissão de Paisagem, pois estes podem conter muitos dados de colisão que você geralmente deseja transmitir sob demanda.
Distribua o conteúdo da sua Ilha de maneira uniforme. Concentrar muitos atores em uma área pequena não permitirá que o conteúdo seja transmitido e contribuirá para exceder seu orçamento de memória.
Reduza o número de dispositivos que sua Ilha está usando. Dispositivos estão entre os atores mais caros que você pode colocar. No entanto, colocar instâncias do mesmo dispositivo gera custos de memória muito menores.
Verifique a janela Tamanho do Projeto. Se você vir alguns objetos com muita memória no disco, é provável que eles também tenham muita memória em tempo de execução. Para verificar o tamanho do seu projeto, clique no menu suspenso Projeto e selecione Tamanho do Projeto.
Reduza o nível de qualidade em LODs de ativos personalizados, especialmente nos ativos visíveis apenas de longe.
Reutilize ativos várias vezes. Em uma floresta composta por 100 árvores, use 5 variações e duplique-as em vez de usar 100 árvores únicas. Isso fará uma enorme diferença no consumo de memória.
Se estiver usando HLODs, gere-os ao longo do processo do projeto e certifique-se de gerá-los apenas para objetos que você pode ver de longe.
Use Camadas de dados se suas ilhas puderem ser subdivididas em configurações que não devem ser exibidas todas de uma vez. Por exemplo, uma masmorra subterrânea que não é acessível a menos que o jogador entre em um santuário.
Reduza a complexidade da malha do seu conteúdo personalizado. Malhas com alta contagem de polígonos geram custos de memória mais altos. Edite a malha clicando duas vezes nela no Navegador de Conteúdo e ajuste o valor Manter porcentagem de triângulos em Configurações do Nanite. Usar um valor mais baixo diminuirá a complexidade da malha e reduzirá o custo de memória do ator.
Como solucionar outros problemas
Para validar adequadamente, espera-se que os Criadores tenham a transmissão habilitada, e também espera-se que os mipmapas sejam gerados para texturas. Se alguma de suas texturas tinha a opção MipGenSettings definida como Sem Mipmapas, ela não era sinalizada anteriormente quando sua Ilha era enviada para publicação. No entanto, agora, se uma textura no seu projeto tiver MipGenSettings definida como Sem Mipmapas, ela falhará na validação.
Confira as seguintes exceções a esse requisito para transmissão e mipmapas:
Essa regra se aplica apenas a texturas com mais que 1 milhão de texels. Então, por exemplo, se as dimensões de uma textura, quando multiplicadas, forem menores que 1.048.576, ela será aprovada na validação mesmo com MipGenSettings definida como Sem Mipmapas.
As texturas no grupo de interfaces não precisam ter a transmissão habilitada.