Pular para o conteúdo

Modelos de Servidor

Visão Geral

Arquivos de modelo de servidor definem as propriedades físicas e comportamentais da representação visual de uma entidade no servidor: dimensões da hitbox, altura dos olhos, variação de escala, rastreamento de câmera direcionado a bones, e a biblioteca completa de conjuntos de animação nomeados usados pelos sistemas de IA e física. Eles são separados dos assets visuais exclusivos do cliente — o servidor precisa dos metadados de hitbox e animação para executar lógica de colisão, IA e som. Modelos suportam herança via campo Parent.

Localização dos Arquivos

Assets/Server/Models/
Beast/
Bear_Grizzly.json
Bear_Polar.json
Cactee.json
Boss/
Critter/
Deployables/
Elemental/
Flying_Beast/
Flying_Critter/
Flying_Wildlife/
Human/
Mannequin.json
Player.json
Intelligent/
Instances/
Livestock/
Pets/
Projectiles/

Schema

Nível superior

FieldTypeRequiredDefaultDescription
ModelstringSimCaminho para o arquivo .blockymodel que define a malha visual.
TexturestringNãoCaminho para a textura padrão aplicada ao modelo.
ParentstringNãoID de uma definição de modelo pai para herdar campos não definidos.
EyeHeightnumberSimAltura em unidades dos pés da entidade até a posição dos olhos. Usado para posicionamento de câmera e linha de visão.
CrouchOffsetnumberNão0Deslocamento vertical aplicado à posição dos olhos quando a entidade está agachada.
HitBoxHitBoxSimCaixa delimitadora alinhada aos eixos usada para colisão e detecção de acertos.
MinScalenumberNão1Escala aleatória mínima aplicada a esta entidade ao nascer.
MaxScalenumberNão1Escala aleatória máxima aplicada a esta entidade ao nascer. A escala é escolhida uniformemente entre min e max.
DefaultAttachmentsobject[]Não[]Lista de anexos de itens presentes na entidade por padrão (ex: armas empunhadas).
CameraCameraConfigNãoConfiguração de rastreamento de câmera direcionado a bones.
AnimationSetsobjectSimMapa de nome do conjunto de animação → AnimationSet. Veja abaixo.
IconPropertiesIconPropertiesNãoParâmetros de câmera usados ao renderizar o ícone de inventário da entidade.

HitBox

FieldTypeRequiredDefaultDescription
MinVector3SimCanto mínimo da AABB relativo à origem da entidade (pés).
MaxVector3SimCanto máximo da AABB relativo à origem da entidade.

Vector3

FieldTypeRequiredDefaultDescription
XnumberSimComponente X.
YnumberSimComponente Y (vertical).
ZnumberSimComponente Z.

CameraConfig

FieldTypeRequiredDefaultDescription
PitchCameraAxisNãoConfiguração de rastreamento de pitch.
YawCameraAxisNãoConfiguração de rastreamento de yaw.

CameraAxis

FieldTypeRequiredDefaultDescription
AngleRange.MinnumberSimÂngulo mínimo em graus que a câmera pode rastrear neste eixo.
AngleRange.MaxnumberSimÂngulo máximo em graus que a câmera pode rastrear neste eixo.
TargetNodesstring[]SimNomes dos bones que a câmera mira ao rastrear.

AnimationSet

Um conjunto de animação é um grupo nomeado de um ou mais clipes de animação. O motor reproduz um clipe do grupo (aleatoriamente ou em sequência dependendo do contexto).

FieldTypeRequiredDefaultDescription
AnimationsAnimationEntry[]SimUm ou mais clipes de animação neste conjunto.

AnimationEntry

FieldTypeRequiredDefaultDescription
AnimationstringSimCaminho para o arquivo de animação .blockyanim.
SpeednumberNão1Multiplicador de velocidade de reprodução.
BlendingDurationnumberNão0Tempo em segundos para fazer blend da animação anterior para esta.
LoopingbooleanNãotrueSe a animação entra em loop. Defina como false para animações de disparo único.
SoundEventIdstringNãoEvento de som acionado quando esta animação é reproduzida (ex: sons de passos).

IconProperties

FieldTypeRequiredDefaultDescription
ScalenumberNãoNível de zoom usado ao renderizar o ícone.
Rotation[number, number, number]NãoRotação Euler [X, Y, Z] em graus aplicada ao modelo para renderização do ícone.
Translation[number, number]NãoDeslocamento 2D [X, Y] em pixels aplicado para centralizar o modelo no quadro do ícone.

Nomes Padrão de Conjuntos de Animação

O motor espera conjuntos nomeados específicos. Conjuntos personalizados podem ser adicionados para uso via script.

NamePurpose
IdleParado
Walk / WalkBackwardAndando para frente/trás
RunCorrendo
Crouch / CrouchWalk / CrouchWalkBackwardEstados agachados
Jump / JumpWalk / JumpRunVariantes de pulo
FallCaindo
Swim / SwimIdle / SwimFast / SwimBackwardEstados de natação
Fly / FlyIdle / FlyFast / FlyBackwardEstados de voo
Hurt / DeathReações de dano
AlertedGatilho de aggro
Sleep / Laydown / WakeCiclo de descanso
SpawnAnimação de surgimento
Roar / Search / EatAnimações ambientais

Exemplo

Urso Pardo (Assets/Server/Models/Beast/Bear_Grizzly.json, condensado):

{
"Model": "NPC/Beast/Bear_Grizzly/Models/Model.blockymodel",
"Texture": "NPC/Beast/Bear_Grizzly/Models/Texture.png",
"EyeHeight": 1.5,
"CrouchOffset": -0.3,
"HitBox": {
"Max": { "X": 0.8, "Y": 1.8, "Z": 0.8 },
"Min": { "X": -0.8, "Y": 0.0, "Z": -0.8 }
},
"MinScale": 0.9,
"MaxScale": 1.25,
"DefaultAttachments": [],
"Camera": {
"Pitch": {
"AngleRange": { "Max": 45, "Min": -45 },
"TargetNodes": ["Head"]
},
"Yaw": {
"AngleRange": { "Max": 45, "Min": -45 },
"TargetNodes": ["Head"]
}
},
"AnimationSets": {
"Idle": {
"Animations": [
{ "Animation": "NPC/Beast/Bear_Grizzly/Animations/Default/Idle.blockyanim", "Speed": 0.6 }
]
},
"Run": {
"Animations": [
{ "Animation": "NPC/Beast/Bear_Grizzly/Animations/Default/Run.blockyanim", "SoundEventId": "SFX_Bear_Grizzly_Run", "Speed": 1 }
]
},
"Death": {
"Animations": [
{ "Animation": "NPC/Beast/Bear_Grizzly/Animations/Damage/Death.blockyanim", "Looping": false, "SoundEventId": "SFX_Bear_Grizzly_Death" }
]
}
}
}

Manequim (Assets/Server/Models/Human/Mannequin.json) — usa herança com Parent:

{
"Model": "NPC/MISC/Mannequin/Models/Model.blockymodel",
"Texture": "NPC/MISC/Mannequin/Models/Model_Default.png",
"EyeHeight": 1.6,
"HitBox": {
"Max": { "X": 0.3, "Y": 1.8, "Z": 0.3 },
"Min": { "X": -0.3, "Y": 0.0, "Z": -0.3 }
},
"MinScale": 1,
"MaxScale": 1,
"Parent": "Player",
"DefaultAttachments": [],
"AnimationSets": {
"Hurt": {
"Animations": [
{ "Animation": "Characters/Animations/Damage/Default/Hurt.blockyanim", "BlendingDuration": 0.1, "Looping": false },
{ "Animation": "Characters/Animations/Damage/Default/Hurt2.blockyanim", "BlendingDuration": 0.1, "Looping": false }
]
}
}
}

Páginas Relacionadas