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 costumava criar problemas ao compartilhar o arquivo entre vários usuários, e visualizar o mundo inteiro no contexto se tornava uma tarefa difícil.
World Partition é um sistema automático de gerenciamento de dados e transmissão de nível baseada em distância que fornece uma solução completa para gerenciamento de grandes volumes mundiais. O sistema elimina 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 é compatível com as seguintes funcionalidades:
Como habilitar o World Partition
Existem três maneiras de habilitar o World Partition no Unreal Engine:
Como criar um novo projeto a partir de um modelo na categoria Jogos.
Como criar um novo nível usando o modelo de Mundo Aberto.
Como converter níveis existentes para usar o World Partition.
Como criar 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 World Settings.
Os seguintes modelos usam o World Partition, mas têm a Habilitar transmissão desabilitado por padrão:
Em branco
Primeira pessoa
Terceira pessoa
De cima para baixo
Veículo avançado
Como usar o mapa padrão do Mundo Aberto
O tipo de mapa padrão Mundo Aberto foi projetado para ser um ponto de partida para a criação de grandes mapas de mundo aberto e tem com as seguintes funcionalidades habilitadas por padrão:
World Partition
Um arquivo por ator
Camadas de dados
Níveis de Detalhe Hierarquizados
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, luz do céu, luz direcional, neblina de altura exponencial e nuvens volumétricas.
Para usar o tipo de mapa padrão Mundo Aberto em seu projeto:
Abra o menu Arquivo e selecione Novo nível.
Selecione o tipo de mapa do Mundo Aberto.
Clique no botão Criar para criar um novo mapa.
Como converter os 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 para o 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.exeAdicione o nome do projeto. Aqui,
QAGame.Continue com o nome do commandlet a ser executado,
-run=WorldPartitionConvertCommandlet.Adicione o nome do arquivo de mapa que será convertido. No exemplo acima,
Playground.umap.Finalize 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 o controle de origem, especifique |
-Verbose | Exibe o registro em log detalhado. |
-ConversionSuffix | Acrescenta o sufixo _WP a um mapa convertido. Útil ao converter níveis para fins de teste, mantendo o nível do código-fonte intacto. |
-DeleteSourceLevels | Exclui os níveis de origem após a conversão. |
-ReportOnly | Informa o que aconteceria durante a conversão. Não faz a conversão. |
-GenerateIni | Gera um arquivo |
-SkipStableGUIDValidation | Ignora o processo de validação dos GUIDs de ator instáveis. Níveis com GUIDs de ator instáveis resultarão em uma saída de conversão diferente ao converter várias vezes. Salvar o nível novamente resolve esse problema. |
-OnlyMergeSubLevels | 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=[Path] | Extrai tipos de folhagem como ativos para o caminho fornecido. Use se o nível contiver tipos de folhagem incorporados. |
Se quiser alterar as configurações de conversão, use um arquivo de conversão padrão .ini com o commandlet. O arquivo .ini precisa estar na mesma pasta do arquivo do mapa e ter o mesmo nome do mapa, mas com a extensão .ini. Por exemplo, um arquivo .ini gravado para FirstPersonExampleMap.umap seria nomeado FirstPersonExampleMap.ini.
Aqui está um exemplo de arquivo de conversão padrão .ini:
[/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
Como usar 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 na 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 foi carregado de forma espacial:
|
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 do nível para a equipe.
Para obter mais informações sobre o sistema Um arquivo por Ator e o controle da fonte integrada da Unreal Engine, consulte a documentação do 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 que estão na grade no tempo de execução é determinada por dois fatores:
Fontes de transmissão
Configurações da grade de tempo de execução
A primeira é a posição das fontes de transmissão no nível.
Clique na imagem para ampliar.
Fontes de transmissão são componentes que definem uma posição no mundo e acionam o carregamento de células ao redor. Os controles 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á. Depois que as células da 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 na posição anterior do jogador, as células de grade serão descarregadas.
Como usar o jogador como fonte de transmissão
Cada controle do jogador é usado como uma fonte de transmissão do World Partition através da opção Habilitar fonte de transmissão. Essa opção está habilitada por padrão.
Como usar o componente de Fonte de transmissão do World Partition
A transmissão do World Partition também é feita usando o componente "Fonte de transmissão do World Partition":
O 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. |
Depurar cor | Determina a cor usada para depuração. |
Camada HLOD de destino | Determina a camada do HLOD afetada pela fonte de transmissão. |
Formatos | Determina a lista de formatos usada para criar um formato personalizada para esta fonte de transmissão. Se estiver vazia, será usada uma esfera com um 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. |
Tfonte 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á concluída? retorna true quando o componente termina de transmitir as células de grade com as quais faz interseção.
Configurações da 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 World Settings, na seção Configuração do World Partition.
Uma grade de Hash de tempo de execução 2D é fornecida por padrão. Usar mais de uma grade pode prejudicar o desempenho.
Para obter mais informações sobre a configuração e as definições recomendadas para sua grade de Hash de tempo de execução 2D, consulte o mapa Cidade Grande localizado no projeto Amostra de Cidade.
| Opção | Descrição |
|---|---|
Gnome 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 mede 256 m x 256 m x 256 m. |
Intervalo de carregamento | Determina o intervalo de uma fonte de transmissão em que 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 | Bloqueia o carregamento em situações em que 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. |
Depurar cor | 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. |
Como carregar e descarregar regiões no Editor
Para possibilitar o desenvolvimento de mundos grandes, inicialmente o mundo está descarregado. Quando o Nível abre, o Editor carrega apenas os Atores que têm sua configuração É carregado espacialmente? marcada como False, como cenários de ambiente e gerenciadores. Isso permite o desenvolvimento de mundos grandes, onde é impossível carregar o mapa inteiro no editor.
Como carregar e descarregar regiões usando a janela do World Partition
Na janela World Partition, você pode selecionar manualmente a região para trabalhar. Abra a janela selecionando **Janela > World Partition > Editor do World Partition** no menu principal.
Na janela, clique e arraste uma região. Em seguida, clique com o botão direito na seleção para abrir o menu de contexto e selecione Carregar região da seleção.
Carregar e descarregar regiões usando volumes de localização
Regiões também podem ser carregadas e descarregadas usando volumes de localização.
O volume de localização é um volume exclusivo para editores colocado no nível que representa uma região do mapa na janela do World Partition.
Para adicionar um volume de localização ao nível, siga as etapas a seguir:
Abra a janela Colocar atores, se ainda não estiver aberta.
Pesquise por Volume de localização. Clique nele e arraste um para o nível.
Salve seu nível.
Quando o nível for salvo, uma nova região aparecerá na janela do World Partition com o mesmo nome do volume de localização.
Selecione a região e clique com o botão direito para abrir o menu de contexto. Clique em Carregar região selecionada para carregar a região. Várias regiões podem ser carregadas ou descarregadas ao mesmo tempo ao arrastar e selecionar, ou apertar ctrl e clicar em várias regiões.
Os volumes de localização têm as seguintes configurações compatíveis:
Configurações do pincel
| Configuração | Descrição |
|---|---|
Exibir volume sombreado | Exibe o pincel com um volume sombreado. |
Valor de opacidade do volume sombreado | Define a opacidade do volume sombreado usando um valor de 0,0 a 1,0. |
Muitas das opções na seção Configurações do pincel dependem do Formato do pincel que você selecionar.
World Partition
| Configuração | Descrição |
|---|---|
Carregar e descarregar | Carrega e descarrega a região no volume selecionado. |
Gcomo gerar um minimapa para a janela do World Partition
Você pode gerar um minimapa para facilitar a navegação na janela do World Partition usando a opção Construir minimapa encontrada na seção World Partition do menu Construir ou usando o commandlet World Partition Minimap Builder.
A execução desse commandlet cria uma imagem de minimapa do mundo do seu World Partition e o posiciona na janela do 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 de Projeto. Em seguida, marque a caixa de seleção Habilitar suporte de textura virtual.
Atalhos e opções úteis na janela do World Partition
| Teclas de atalho | Descrição |
|---|---|
Shift + Arrastar | Ajusta a seleção ao tamanho de grade atual de tempo de execução. |
Clique duplo | Move a câmera para a posição em todas as janelas de visualização. |
Shift + Clique duplo | Inicia uma sessão do JNE na posição clicada. |
Ctrl + Clique duplo | Carrega uma região ao redor da posição clicada. |
MMB + Arrastar | Mostra a distância do ponto clicado até o ponto final em unidades Unreal. |
Como gerar Níveis de Detalhe Hierarquizados (HLODs)
Os HLODs são gerados usando a opção Compilar HLODs, localizada na seção do menu Compilação, ou usando o commandlet do compilador de HLODs do World Partition.
A execução desse commandlet cria atores de HLOD para as células do World Partition de acordo com as configurações de geração especificadas nas camadas HLOD. Para obter mais informações sobre como usar os Níveis de Detalhe Hierarquizados (HLODs) no World Partition e usar o commandlet do Construtor de HLODs do World Partition, consulte a documentação World Partition - Níveis de Detalhe Hierarquizados.
Como preparar um mundo do World Partition
Para preparar um mapa do World Partition, você precisa usar o commandlet de preparação:
Comando: UnrealEditor.exe QAGame -run=cook -targetplatform=WindowsNoEditor -Unversioned -map=Playground
Para preparar o 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,
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. Presume-se que os argumentos estejam na versão atual a ser carregada.-map=Playgroundespecifica o nome do mapa, neste casoPlayground.umap.
Para obter mais informações sobre como usar o commandlet Cook, consulte Preparação de conteúdo.
Como usar o World Partition com Blueprint
Tanto as Classes Blueprint quanto os Blueprints de Níveis são suportados em um mundo do World Partition. No entanto, classes de Blueprint são preferidas, pois qualquer ator referenciado no Blueprint de nível será marcado como "Sempre Carregado".
Como testar 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 exibir o hash de tempo de execução do World Partition. O í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 for de 0, menor será a contribuição do ângulo para a importância da célula. |
wp.Runtime.OverrideRuntimeSpatialHashLoadingRange | Define o intervalo de carregamento do tempo de execução. Recebe 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 |
Commandlets do construtor do World Partition
O World Partition apresenta uma estrutura do commandlet do construtor por meio das classes 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 gerar HLODs, dados de navegação de AI ou salvar novamente um grande número de atores.
Para obter mais informações sobre como usar os commandlets do construtor do World Partition, confira a referência dos commandlets do construtor do World Partition.