Pular para o conteúdo

Máscaras de Mundo

Visão Geral

Arquivos de máscara de mundo definem a estrutura em larga escala do mundo procedural. O Mask.json de nível superior conecta as sub-máscaras de forma de continente, temperatura, intensidade e clima, e declara zonas únicas (pontos de spawn, templos). Arquivos de sub-máscara usam geradores de ruído e atenuações baseadas em distância para produzir campos escalares que o gerador de mundo amostra para decidir qual bioma ocupa uma coordenada dada. Um arquivo companheiro Zones.json mapeia cores de máscara para listas de zonas nomeadas.

Localização dos Arquivos

Assets/Server/World/
Default/
Mask.json
World.json
Zones.json
Mask/
Blend_Inner.json
Blend_Outer.json
Continent.json
Intensity.json
Temperature.json
Climate/
Cold.json
Hot.json
Temperate.json
Island/
Tier1.json
Tier2.json
Tier3.json
Continent/
Blend_Inner.json
Blend_Outer.json
Continent_Inner.json
Continent_Outer.json
Temperature/
Temperature_Inner.json
Temperature_Outer.json
Flat/
Void/
Instance_Creative_Hub/
Instance_Dungeon_Goblin/
Instance_Forgotten_Temple/

Schema

Mask.json (nível superior)

FieldTypeRequiredDefaultDescription
RandomizerRandomizerNãoRandomizador de ruído global aplicado a toda amostragem de máscara.
NoiseNoiseConfigSimReferências às sub-máscaras de continente, temperatura e intensidade, mais limiares de terra/oceano.
ClimateClimateConfigSimDefinições de zonas climáticas e parâmetros de mesclagem.
UniqueZonesUniqueZone[]Não[]Zonas nomeadas posicionadas em locais específicos do mundo (ex: spawn, templos).

Randomizer

FieldTypeRequiredDefaultDescription
GeneratorsGenerator[]SimArray de geradores de ruído que contribuem para a aleatorização.

Generator

FieldTypeRequiredDefaultDescription
SeedstringNãoString de semente determinística.
NoiseTypestringSimAlgoritmo de ruído: "SIMPLEX", "OLD_SIMPLEX", "POINT".
ScalenumberSimEscala espacial do ruído.
AmplitudenumberNão1Multiplicador de amplitude da saída.
OctavesnumberNão1Número de oitavas fractais.
PersistencenumberNão0.5Decaimento de amplitude por oitava.
LacunaritynumberNão2.0Multiplicador de frequência por oitava.

NoiseConfig

FieldTypeRequiredDefaultDescription
ThresholdsThresholdsSimLimiares escalares que separam terra, ilha, praia e oceano raso.
ContinentFileRefSimReferência à sub-máscara de forma do continente.
TemperatureFileRefSimReferência à sub-máscara de gradiente de temperatura.
IntensityFileRefSimReferência à sub-máscara de intensidade.

Thresholds

FieldTypeRequiredDefaultDescription
LandnumberSimValor de ruído acima do qual o terreno é considerado terra.
IslandnumberSimValor de ruído acima do qual o terreno é considerado uma ilha.
BeachSizenumberSimLargura da faixa de transição de praia.
ShallowOceanSizenumberSimLargura da faixa de oceano raso ao redor da terra.

ClimateConfig

FieldTypeRequiredDefaultDescription
FadeModestringNão"CHILDREN"Como as fronteiras climáticas desvanecem: "CHILDREN" usa configurações por filho.
FadeRadiusnumberNãoRaio da zona de transição climática.
FadeDistancenumberNãoDistância sobre a qual o desvanecimento ocorre.
ClimatesFileRef[]SimReferências a arquivos individuais de definição de clima.

Climate Definition (ex: Cold.json)

FieldTypeRequiredDefaultDescription
NamestringSimNome de exibição para este clima (ex: "Zone 3").
ColorstringSimCor hexadecimal usada para representar este clima em mapas de debug.
PointsClimatePoint[]SimCoordenadas de temperatura/intensidade que definem onde este clima aparece.
ChildrenClimateTier[]Não[]Sub-níveis dentro deste clima com cores de bioma distintas e configs de ilha.

ClimateTier

FieldTypeRequiredDefaultDescription
NamestringSimNome de exibição do nível (ex: "Tier 1").
ColorstringSimCor hexadecimal para o bioma terrestre deste nível.
ShorestringNãoCor hexadecimal para áreas de costa neste nível.
OceanstringNãoCor hexadecimal para oceano profundo neste nível.
ShallowOceanstringNãoCor hexadecimal para oceano raso neste nível.
IslandFileRefNãoReferência a um arquivo de máscara de ilha para este nível.
PointsClimatePoint[]SimCoordenadas climáticas com Modifier opcional.

ClimatePoint

FieldTypeRequiredDefaultDescription
TemperaturenumberSimValor do eixo de temperatura (0–1).
IntensitynumberSimValor do eixo de intensidade (0–1).
ModifiernumberNão1Modificador de mesclagem para transições de nível.

UniqueZone

FieldTypeRequiredDefaultDescription
NamestringSimIdentificador de zona referenciado pelo bioma e mapeamento de cores do Zones.json.
ParentstringNãoNome de uma zona única pai para posicionamento relativo.
ColorstringSimCor hexadecimal para renderização em mapa de debug.
RadiusnumberSimRaio da zona em chunks.
OriginXnumberSimOrigem X para cálculos de distância.
OriginYnumberSimOrigem Y para cálculos de distância.
DistancenumberSimDistância máxima da origem para busca de posicionamento.
MinDistancenumberNão0Distância mínima da origem (cria uma área de busca anular).
RulePlacementRuleSimRestrições sobre continente, temperatura, intensidade e valores de desvanecimento.

PlacementRule

Cada chave (Continent, Temperature, Intensity, Fade) contém:

FieldTypeRequiredDefaultDescription
TargetnumberSimValor ideal da máscara para posicionamento.
RadiusnumberSimDesvio aceitável do alvo.
WeightnumberSimImportância desta restrição em relação às outras.

Tipos de Sub-máscara

Arquivos de sub-máscara usam um campo Type para definir seu comportamento:

TypeDescriptionKey Fields
DISTORTEDMáscara baseada em ponto com distorção de ruídoNoise (com NoiseType, X, Y, InnerRadius, OuterRadius), Randomizer
BLENDMescla duas máscaras filhas usando uma máscara alfaAlpha (FileRef), Noise (FileRef[]), Thresholds, Normalize

Zones.json

FieldTypeRequiredDefaultDescription
GridGeneratorGridGeneratorSimControla a grade estilo Voronoi usada para atribuir zonas.
MaskMappingobjectSimMapa de strings de cores hexadecimais para arrays de strings de nomes de zonas.

GridGenerator

FieldTypeRequiredDefaultDescription
ScalenumberSimTamanho da célula da grade.
JitternumberNão0Deslocamento aleatório aplicado aos pontos da grade (0–1).
RandomizerRandomizerNãoGeradores de ruído para jitter da grade.

World.json

FieldTypeRequiredDefaultDescription
Masksstring[]SimArray de referências de arquivos de máscara (ex: ["Mask.json"]).
PrefabStorestringNão"ASSETS"Fonte para dados de prefab: "ASSETS" ou "DISK".
HeightnumberSimAltura do mundo em regiões.
WidthnumberSimLargura do mundo em regiões.
OffsetXnumberNão0Deslocamento horizontal da origem.
OffsetYnumberNão0Deslocamento vertical da origem.
RandomizerRandomizerNãoRandomizador adicional para ruído em nível de mundo.

Exemplos

Máscara de nível superior (Assets/Server/World/Default/Mask.json, condensado):

{
"Randomizer": {
"Generators": [
{ "Seed": "RANDOMIZER", "NoiseType": "SIMPLEX", "Scale": 0.01, "Amplitude": 16.0 }
]
},
"Noise": {
"Thresholds": {
"Land": 0.5,
"Island": 0.75,
"BeachSize": 0.02,
"ShallowOceanSize": 0.08
},
"Continent": { "File": "Mask.Continent" },
"Temperature": { "File": "Mask.Temperature" },
"Intensity": { "File": "Mask.Intensity" }
},
"Climate": {
"FadeMode": "CHILDREN",
"FadeRadius": 50.0,
"FadeDistance": 100.0,
"Climates": [
{ "File": "Mask.Climate.Temperate" },
{ "File": "Mask.Climate.Cold" },
{ "File": "Mask.Climate.Hot" }
]
},
"UniqueZones": [
{
"Name": "Zone1_Spawn",
"Color": "#ff0000",
"Radius": 35,
"OriginX": 0,
"OriginY": 0,
"Distance": 3000,
"Rule": {
"Continent": { "Target": 0.0, "Radius": 0.3, "Weight": 1.0 },
"Temperature": { "Target": 0.5, "Radius": 0.2, "Weight": 1.0 },
"Intensity": { "Target": 0.1, "Radius": 0.3, "Weight": 1.0 },
"Fade": { "Target": 1.0, "Radius": 0.5, "Weight": 0.5 }
}
}
]
}

Sub-máscara de mesclagem de continente (Assets/Server/World/Default/Mask/Blend_Inner.json):

{
"Type": "DISTORTED",
"Noise": {
"NoiseType": "POINT",
"X": 0.0,
"Y": 0.0,
"InnerRadius": 1700.0,
"OuterRadius": 2500.0
},
"Randomizer": {
"Generators": [
{
"Seed": "CONTINENT-INNER-WARP-1",
"NoiseType": "SIMPLEX",
"Scale": 0.00085,
"Octaves": 1,
"Persistence": 0.5,
"Lacunarity": 2.5,
"Amplitude": 450
}
]
}
}

Páginas Relacionadas

  • Geração de Mundo — o pipeline HytaleGenerator que consome essas máscaras
  • Ambientes — arquivos de ambiente atribuídos a zonas definidas pelas máscaras
  • Instâncias — configs de instância que selecionam uma definição de mundo