A compilação de mapas grandes costumava exigir que os desenvolvedores dividissem manualmente os mapas em subníveis e, em seguida, usassem o sistema de transmissão de nível para carregá-los e descarregá-los conforme o jogador atravessava a paisagem. Esse método geralmente criava problemas de compartilhamento de arquivos entre vários usuários, e visualizar o mundo inteiro no contexto tornou-se uma tarefa difícil.
O World Partition é um sistema de gerenciamento automático de dados e transmissão de nível baseado em distância que fornece uma solução completa para gerenciamento de grandes mundos. O sistema remove a necessidade anterior de dividir grandes níveis em subníveis armazenando seu mundo em um único nível persistente separado em células de grade e fornece um sistema de transmissão automático para carregar e descarregar essas células com base na distância de uma fonte de transmissão.
O World Partition trabalha em estreita colaboração com as seguintes funcionalidades:
- Um arquivo por Ator
- World Partition - Camadas de Dados
- Instância de Nível
- World Partition - Níveis Hierárquicos de Detalhe
Habilitando o World Partition
Existem três maneiras de habilitar o World Partition no Unreal Engine:
- Ao criar um novo projeto a partir de um modelo na categoria Jogos.
- Ao criar um novo nível usando o modelo Mundo Aberto.
- Ao converter os níveis existentes para usar o World Partition.
Criando seu projeto usando um Modelo de Jogos
O World Partition é habilitado por padrão em muitos dos modelos de projeto encontrados na categoria Jogos.
Para reduzir a complexidade e fornecer uma solução escalável ao criar novos projetos, a transmissão de célula de grade pode ser habilitada e desabilitada usando a opção Habilitar Transmissão nas Configurações do Mundo.
Os modelos a seguir usam World Partition, mas têm Habilitar transmissão desabilitado por padrão:
- Em branco:
- Primeira pessoa
- Terceira pessoa
- De cima para baixo
- Veículo avançado
Usando o mapa padrão do Mundo Aberto
O tipo de mapa padrão do Mundo Aberto é projetado para ser um ponto de partida para a criação de grandes mapas de mundo aberto e vem com as seguintes funcionalidades habilitadas por padrão:
- World Partition
- Um arquivo por Ator
- Camada de Dados
- Níveis Hierárquicos de Detalhe
O mapa contém uma amostra de paisagem de 2 km x 2 km com material de paisagem e configuração de iluminação para um ambiente externo. Isso inclui uma atmosfera do céu, clarabóia, luz direcional, neblina de altura exponencial e nuvens volumétricas.
Para usar o tipo de mapa padrão do Mundo Aberto em seu projeto:
- Abra o menu Arquivo e selecione Novo Nível.
- Selecione o tipo de mapa Mundo Aberto.
- Clique no botão Criar para criar um novo mapa.
Convertendo Níveis Existentes para Usar o World Partition
Você pode adicionar o World Partition a qualquer nível convertendo-o usando a opção de menu Ferramentas > Converter Nível ou usando o Commandlet de Conversão do World Partition.
Para usar o comando Conversão do World Partition, siga estas etapas:
Comando: UnrealEditor.exe QAGame -run=WorldPartitionConvertCommandlet Playground.umap -AllowCommandletRendering
Para converter seus níveis existentes do World Partition:
-
No Windows, abra uma janela do Prompt de Comando.
-
No prompt, comece navegando até o local do arquivo executável
UnrealEditor.exe. No exemplo acima:c:\Builds\Home_UE5_Engine\Engine\Binaries\Win64. - Em seguida, inicie o comando com o nome do arquivo .exe que executará o commandlet,
UnrealEditor.exe -
Adicione o nome do projeto. Aqui como
QAGame. - Continue com o nome do commandlet a ser executado,
-run=WorldPartitionConversionCommandlet. - Adicione o nome do arquivo de mapa que será convertido. No exemplo acima
Playground.umap. -
Termine o comando com o argumento adicional
-AllowCommandletRendering. - Pressione Enter e o commandlet converterá o mapa para usar o World Partition.
Os seguintes argumentos opcionais estão disponíveis para este commandlet:
| Argumento Opcional | Descrição |
|---|---|
| -SCCProvider=(None,Perforce...) | Especifica qual provedor de controle da fonte usar. Para executar sem controle da fonte, especifique -SCCProvider=None. |
| -Detalhado | Exibe o registro detalhado. |
| -ConversionSuffix | Acrescenta o sufixo _WP a um mapa convertido. Isso é útil ao converter níveis para fins de teste, mantendo o nível da fonte intacta. |
| -DeleteSourceLevels | Exclui níveis da fonte após a conversão. |
| -ReportOnly | Relata o que aconteceria durante a conversão. Não faz a conversão. |
| -GerarIni | Gera um arquivo de conversão .ini padrão para este mapa. Não faz a conversão. |
| -SkipStableGUIDValidation | Ignora o processo de validação do GUIDs de ator instável. Níveis com GUIDs de ator instáveis resultarão em uma saída de conversão diferente ao converter várias vezes. Salvar novamente o nível corrige isso. |
| -SomenteMergeSubLevels | Converte e mescla níveis e subníveis em Um arquivo por Ator sem o World Partition. O Nível convertido pode ser usado como uma Instância de Nível em um Nível do World Partition. |
| -FoliageTypePath=[Caminho] | Extrai Tipos de Folhagem como Ativos para o caminho fornecido. Use se o nível contiver Tipos de Folhagem incorporados. |
Caso queira alterar as configurações de conversão, use um arquivo .ini de conversão padrão com o commandlet. O arquivo .ini precisa estar na mesma pasta que seu arquivo de mapa e ter o mesmo nome de arquivo de seu mapa, mas com a extensão .ini. Por exemplo, um arquivo .ini escrito para FirstPersonExampleMap.umap seria nomeado FirstPersonExampleMap.ini.
Aqui está um exemplo de um arquivo .ini de conversão padrão:
[/Script/UnrealEd.WorldPartitionConvertCommandlet]
EditorHashClass=Class'/Script/Engine.WorldPartitionEditorSpatialHash
RuntimeHashClass=Class'/Script/Engine.WorldPartitionRuntimeSpatialHash
LevelsGridPlacement=(("/Game/Maps/Highrise_Audio", Bounds),("/Game/Maps/Highrise_Collisions_Temp", Bounds),("/Game/Maps/Highrise_Gameplay", Bounds),("/Game/Maps/Highrise_Lights", Bounds),("/Game/Maps/Highrise_Vista", AlwaysLoaded))
HLODLayerAssetsPath=
DefaultHLODLayerName=
[/Script/Engine.WorldPartitionEditorSpatialHash]
CellSize=51200
WorldImage=None
WorldImageTopLeftW=(X=0.000000,Y=0.000000)
WorldImageBottomRightW=(X=0.000000,Y=0.000000)
[/Script/Engine.WorldPartitionRuntimeSpatialHash]
Grids=(GridName="MainGrid",CellSize=3200,LoadingRange=25600.000000,DebugColor=(R=0.500000,G=0.500000,B=0.500000,A=1.000000))
Usando o World Partition
O sistema do World Partition funciona armazenando seu mundo em um único arquivo de nível persistente e subdividindo o espaço em células de grade que podem ser transmitidas usando uma grade de tempo de execução configurável. Essas células são carregadas e descarregadas em tempo de execução pela presença de fontes de transmissão, como o jogador. Dessa forma, o Unreal Engine carrega apenas as partes do Nível que o jogador vê e interage em um determinado momento.
Atores no World Partition
Ao editar o mundo, os Atores podem ser adicionados em qualquer lugar e são atribuídos automaticamente a uma célula de grade com base em sua configuração É Carregado Espacialmente, encontrada na seção World Partition do painel Detalhes.
| Opção | Descrição |
|---|---|
| Grade de Tempo de Execução | Determina em qual grade de partição este Ator é colocado. Se None, a grade será escolhida pelo sistema de partição. |
| É Carregado Espacialmente | Determina se o Ator é carregado espacialmente:
|
Como os atores são salvos em seus próprios arquivos individuais usando a funcionalidade Um arquivo por Ator, você não precisa verificar o arquivo Nível do controle da fonte para fazer alterações nos atores do mundo. Isso libera o arquivo de nível para outras pessoas em sua equipe.
Para obter mais informações sobre o sistema Um arquivo por Ator e o controle da fonte integrada do Unreal Engine, consulte a documentação Um arquivo por Ator.
Atores que fazem referência a outros Atores no Nível serão agrupados e carregados ao mesmo tempo.
Fontes de Transmissão
A transmissão de células de grade dentro da grade em tempo de execução é determinado por dois fatores:
- Fontes de Transmissão
- Configurações de Grade de Tempo de Execução
A primeira é a posição das fontes de transmissão no Nível.

Fontes de transmissão são componentes que definem uma posição no mundo e acionam o carregamento de células ao seu redor.W Os Controladores do Jogador são uma fonte de transmissão. Outras fontes de transmissão podem ser adicionadas ao mundo usando o componente Fonte de Transmissão do World Partition. Por exemplo, um componente de fonte de transmissão pode ser ativado no local para o qual um jogador se teletransportará, para que ele possa carregar as células lá. Assim que as células de grade forem carregadas, o jogador se teletransporta para o local e o componente de fonte de transmissão é desativado. Como não há mais uma fonte de transmissão no local anterior do jogador, essas células de grade seriam descarregadas.
Usando o Jogador como Fonte de Transmissão
Cada Controlador do Jogador é usado como uma fonte de transmissão do World Partition usando a opção Habilitar Fonte de Transmissão. Isto está habilitado por padrão:
Usando o componente da Fonte de Transmissão do World Partition
A transmissão do World Partition também é feita usando o componente da Fonte de Transmissão do World Partition:
Este componente tem as seguintes opções:
| Opção | Descrição |
|---|---|
| Intervalo de Carregamento do Visualizador Padrão | Determina o tamanho da grade do visualizador de depuração quando o visualizador está habilitado. |
| Grade de Destino | Determina a grade de transmissão afetada por esta fonte. |
| Cor de Depuração | Determina a cor usada para depuração. |
| Camada do HLOD de Destino | Determina a camada do HLOD afetada pela fonte de transmissão. |
| Formas | Determina a lista de formas usada para criar uma forma personalizada para esta fonte de transmissão. Se estiver vazio, usará uma esfera com raio igual ao intervalo de carregamento da grade. |
| Prioridade | Determina a prioridade da fonte de transmissão. Se uma célula de grade interceptar várias fontes de transmissão, sua prioridade será a prioridade mais alta entre todas as fontes de transmissão. |
| Fonte de Transmissão Habilitada | Determina se este componente está habilitado. |
| Estado de Destino | Determina em qual estado a célula de grade de interseção deve estar (tanto Carregada ou Ativada). Se uma célula de grade interceptar várias fontes de transmissão, o estado de destino será o valor de destino mais alto (onde ativado for maior que carregado). |
As funções do Blueprint Habilitar Fonte de Transmissão e Desabilitar Fonte de Transmissão habilitarão e desabilitarão a transmissão com este componente.
A função Blueprint A Transmissão está Completa retorna para true quando o componente termina de transmitir as células de grade com as quais faz interseção.
Configurações de Grade de Tempo de Execução
O segundo fator que determina se uma célula de grade é carregada ou descarregada em tempo de execução são as configurações da própria grade de tempo de execução. As configurações da grade de tempo de execução estão localizadas no painel Configações do Mundo, na seção Configuração do World Partition.
Uma grade Hash de Tempo de Execução 2D é fornecida por padrão. O uso de mais de uma grade pode afetar negativamente o desempenho.
Para obter mais informações sobre a configuração e as configurações recomendadas para sua grade Hash de tempo de execução 2D, consulte o mapa Cidade Grande localizado em Amostra de Cidades.
| Opção | Descrição |
|---|---|
| Nome da Grade | Contém o nome da grade de tempo de execução. |
| Tamanho da Célula | Determina o tamanho das células de grade que são usadas para gerar os níveis de transmissão. No exemplo, o Tamanho da Célula é de 256 metros quadrados. |
| Intervalo de Carregamento | Determina o intervalo de uma fonte de transmissão onde as células são carregadas. Na imagem acima, o Intervalo de Carregamento é um raio de 768 metros em torno de uma fonte de transmissão. |
| Bloqueio em Transmissão Lenta | Blocos carregando em situações onde as células da grade não estão carregando rápido o suficiente. |
| Prioridade | Determina a prioridade da fonte de transmissão. Se uma célula de grade interceptar várias fontes de transmissão, sua prioridade será a prioridade mais alta entre todas as fontes de transmissão. |
| Cor de Depuração | Determina a cor das linhas de grade que são mostradas quando Pré-visualizar Grades está habilitado. |
| Pré-visualizar Grades | Quando habilitado, exibe as linhas de grade na janela de visualização. |
| Tamanho da Grade de Folhagem Instanciada | Determina o tamanho da grade para Atores de Folhagem Instanciados. |
| Configurações do World Partition Padrão | Redefine as configurações de grade atuais de volta ao padrão ou salva as configurações atuais como o novo padrão. |
| Tamanho da Célula do Editor do World Partition | Determina o tamanho da célula do editor do World Partition. Novos tamanhos entrarão em vigor na próxima recarga do mundo. |
Carregando e Descarregando Regiões no Editor
Para apoiar o desenvolvimento de grandes mundos, todas as células de grade são inicialmente descarregadas. Quando o Nível abrir, o Editor carregará apenas os Atores que tiverem sua configuração É Carregado Espacialmente marcada como False, como cenários de ambiente e gerentes. Isso suporta o desenvolvimento de grandes mundos onde é impossível carregar o mapa inteiro no Editor.
Na janela World Partition, você pode selecionar manualmente a região para trabalhar. Abra a janela selecionando Window > World Partition > World Partition Editor no menu principal.
Na janela, clique e arraste uma região. Em seguida, clique com o botão direito do mouse na seleção para abrir o menu de contexto e selecione Carregar região da seleção.
Gerando um Minimapa para a janela World Partition
Você pode gerar um Minimapa para facilitar a navegação na janela World Partition usando a opção Compilador Minimapa encontrada na seção World Partition do menu Compilar, ou usando o comando Compilador de Minimapas World Partition.
Executar este comando cria uma imagem de Minimapa do seu mundo World Partition e o coloca na janela World Partition.
Caso queira compilar seu Minimapa e ele não aparecer na janela World Partition, você precisará habilitar o suporte a Texturas Virtuais em seu projeto. Para habilitar as Texturas Virtuais, no menu principal, vá para Editar > Configurações do Projeto. Em seguida, habilite a caixa de seleção Habilitar suporte de textura virtual.
Gerando Níveis Hierárquicos de Detalhe (HLODs)
HLODs são gerados usando a opção Compilar HLODs localizada na seção World Partition do menu Compilar ou usando o comando Compilador de HLODs do World Partition.
Executar este commandlet cria os Atores do HLOD para suas células do World Partition de acordo com as configurações de geração que você especificou em suas Camadas do HLOD. Para obter mais informações sobre como usar Níveis Hierárquicos de Detalhe (HLODs) no World Partition e usar o comando do Compilador HLODs do World Partition, consulte a documentação World Partition - Níveis Hierárquicos de Detalhe.
Preparar um mundo do World Partition
Preparar um mapa do World Partition requer o uso do commandlet Preparar:
Comando: UnrealEditor.exe QAGame -run=cook -targetplatform=WindowsNoEditor -Unversioned -map=Playground
Para preparar seu mapa do World Partition:
- No Windows, abra uma janela do Prompt de Comando.
- No prompt, comece navegando até o local do arquivo executável
UnrealEditor.exe. - Em seguida, inicie o comando com o nome do arquivo .exe que executará o commandlet,
UnrealEditor.exe. - Adicione o nome do projeto. Aqui como
QAGame. - Continue com o nome do commandlet a ser executado,
-run=cook. - Termine o comando com os seguintes argumentos:
-targetplatform=WindowsNoEditorprepara o projeto para plataformas Windows.-UnVersionedsalva todos os pacotes preparados sem versões. Estes são então assumidos como a versão atual no carregamento.-map=Playgroundespecifica o nome do mapa, neste casoPlayground.umap.
Para obter mais informações sobre como usar o comando Preparar, consulte Preparação de Conteúdo.
Usando o World Partition com o Blueprint
Tanto as Classes Blueprint quanto os Blueprints de Níveis são suportados em um mundo do World Partition. No entanto, as Classes do Blueprint são preferidas, pois quaisquer Atores referenciados no Blueprint de Nível serão marcados como Sempre Carregado.
Testando um Mundo Particionado
Substituições de Depuração e Tempo de Execução
Existem vários comandos de console úteis para depurar um mundo do World Partition durante o tempo de execução.
| Comando do Console | Descrição |
|---|---|
| wp.Runtime.ToggleDrawRuntimeHash2D | Alterna a exibição de depuração 2D do hash de tempo de execução do world partition. |
| wp.Runtime.ToggleDrawRuntimeHash3D | Alterna a exibição de depuração 3D do hash de tempo de execução do world partition. |
| wp.Runtime.ShowRuntimeSpatialHashGridLevel | Escolhe qual nível de grade exibir ao mostrar o hash de tempo de execução do world partition. |
| wp.Runtime.ShowRuntimeSpatialHashGridLevelCount | Escolhe quantos níveis de grade exibir ao mostrar o hash de tempo de execução do world partition. |
| wp.Runtime.ShowRuntimeSpatialHashGridIndex | Mostra uma grade específica ao mostrar o hash de tempo de execução do world partition. Um índice inválido mostrará tudo. |
| wp.Runtime.RuntimeSpatialHashCellToSourceAngleContributionToCellImportance | Assume um valor entre 0 e 1 que modula a contribuição do ângulo entre o vetor da célula da fonte de transmissão e o vetor de encaminhamento da fonte para a importância da célula. Quanto mais próximo o valor de 0, menos o ângulo contribuirá para a importância da célula. |
| wp.Runtime.OverrideRuntimeSpatialHashLoadingRange | Define o intervalo de carregamento do tempo de execução. Conduz os seguintes argumentos:
|
| wp.Runtime.MaxLoadingLevelStreamingCells | Limita o número de células de transmissão do World Partition de carregamento simultâneo. |
| wp.Runtime.HLOD 0 | Mostra o mundo sem HLODs usando wp.Runtime.HLOD. |
Commandlets do Compilador do World Partition
O World Partition apresenta uma estrutura do commandlet do compilador por meio da classe base UWorldPartitionBuilderCommandlet e UWorldPartitionBuilder.
Esses commandlets são usados para automatizar processos em lote e gerar ou modificar dados em Níveis do World Partition. Mundos grandes não precisarão ser carregados de uma só vez para fazer coisas como gerar HLODs, AI Nav Data ou salvar novamente um grande número de Atores.
Compilador de HLODs do World Partition
HLODs são gerados usando o comando Compilador de HLODs do World Partition. Executar este commandlet cria os Atores do HLOD para suas células do World Partition de acordo com as configurações de geração que você especificou em suas Camadas do HLOD.
Comando: UnrealEditor.exe "C:\Users\user.name\Documents\Unreal Projects\MyProject\MyProject.uproject" "/Game/ThirdPersonBP/Maps/OpenWorldTest" -run=WorldPartitionBuilderCommandlet -AllowCommandletRendering -builder=WorldPartitionHLODsBuilder
Para obter mais informações sobre como usar Níveis Hierárquicos de Detalhe (HLODs) no World Partition e usar o comando da WorldPartitionHLODsBuilder, consulte a documentação World Partition - Níveis Hierárquicos de Detalhe.
Compilador do Minimapa do World Partition
O comando Compilador do Minimapa do World Partition gera ou atualiza o minimapa exibido na janela do Editor do World Partition.
Comando: UnrealEditor.exe "C:\Users\user.name\Documents\Unreal Projects\MyProject\MyProject.uproject" "/Game/ThirdPersonBP/Maps/OpenWorldTest" -run=WorldPartitionBuilderCommandlet -AllowCommandletRendering -builder=WorldPartitionMiniMapBuilder
Compilador Duplicado de Renomeação do World Partition
O commandlet Compilador Duplicado de Renomeação do World Partition automatiza o processo de renomeação ou duplicação de um Nível do World Partition existente e todos os seus atores.
Comando: UnrealEditor.exe "C:\Users\user.name\Documents\Unreal Projects\MyProject\MyProject.uproject" "/Game/ThirdPersonBP/Maps/OpenWorldTest" -run=WorldPartitionBuilderCommandlet -SCCProvider=None -builder=WorldPartitionRenameDuplicateBuilder -NewPackage=/Game/ThirdPersonBP/Maps/NewPackage
Isso criará um Nível do World Partition duplicado do mapa OpenWorldTest chamado NewPackage e deixará o mapa original intacto.
Para renomear seu mapa do World Partition em vez de fazer uma cópia, adicione o argumento -Rename.
Compilador de Atores do Restaurador do World Partition
O commandlet Compilador de Atores do Restaurador do World Partition salva novamente todos os atores de um Nível do World Partition e oferece suporte a um filtro de classe para salvar novamente apenas um subconjunto de atores.
Comando: UnrealEditor.exe "C:\Users\user.name\Documents\Unreal Projects\MyProject\MyProject.uproject" "/Game/ThirdPersonBP/Maps/OpenWorldTest" -run=WorldPartitionBuilderCommandlet -SCCProvider=None -builder=WorldPartitionResaveActorsBuilder
Ao executar o exemplo acima, todos os pacotes do Ator no nível OpenWorldTest são salvos novamente.
Você pode usar o argumento -ActorClass para especificar apenas um subconjunto de atores a serem salvos novamente. Por exemplo, adicionar -ActorClass=StaticMeshActor salvará novamente apenas os Atores da Malha Estática no nível especificado.
Compilador de Folhagem do World Partition
Em um mapa do World Partition, o Tamanho da Grade de Folhagem Instanciada padrão para Instâncias de Folhagem é de 256 metros. O commandlet Compilador de Folhagem do World Partition é usado para alterar o Tamanho da Grade de Folhagem Instanciada para o nível do World Partition existente.
Comando: UnrealEditor.exe QAGame Playground.umap -run=WorldPartitionBuilderCommandlet -Builder=WorldPartitionFoliageBuilder -NewGridSize=Value
Para obter mais informações sobre como usar o Modo de Folhagem com o World Partition, consulte a documentação do Modo de Folhagem documentation.
Compilador de Dados de Navegação de World Partition
O commandlet Compilador de Dados de Navegação de World Partition recompila a navmesh em seu Nível do World Partition.
Comando: UnrealEditor.exe "C:\Users\user.name\Documents\Unreal Projects\MyProject\MyProject.uproject" "/Game/ThirdPersonBP/Maps/OpenWorldTest" -run=WorldPartitionBuilderCommandlet -AllowCommandletRendering -builder=WorldPartitionNavigationDataBuilder -SCCProvider=None
Este commandlet aceita os seguintes argumentos:
| Argumento Opcional | Descrição |
|---|---|
| -SCCProvider | Especifica qual provedor de controle da fonte usar. Para executar sem controle da fonte, especifique -SCCProvider=None. |
| -Detalhado | Exibe o registro detalhado. |
| -Registro | Registro de saída para um arquivo específico. |
| -CleanPackages | Limpa todos os pacotes de dados de navegação em vez de criá-los. |
Compilador de Coleção de Objetos Inteligentes do World Partition
O commandlet Compilador de Coleção de Objetos Inteligentes do World Partition recompila a coleção de objetos inteligentes de todos os componentes de objetos inteligentes em seu Nível do World Partition.
Comando: UnrealEditor.exe "C:\Users\user.name\Documents\Unreal Projects\MyProject\MyProject.uproject" "/Game/ThirdPersonBP/Maps/OpenWorldTest" -run=WorldPartitionBuilderCommandlet -builder=WorldPartitionSmartObjectCollectionBuilder
Ao executar o exemplo acima, toda a Coleção de Objetos Inteligentes no nível OpenWorldTest é recompilada. Você pode usar o argumento -SCCProvider com este commandlet para especificar qual provedor de controle da fonte usar.