Pular para o conteúdo

Templates de NPC

Visao Geral

Templates de NPC sao arquivos de role Abstract que definem comportamento, atributos e logica de IA comuns compartilhados por uma familia de NPCs. Roles concretos referenciam um template pelo campo Reference e sobrescrevem valores seletivamente via Modify. O sistema de Parameters permite que templates declarem padroes nomeados com documentacao que roles concretos podem sobrescrever sem alterar o template em si.

Localizacao dos Arquivos

Assets/Server/NPC/Roles/_Core/Templates/*.json

O Padrao Reference / Modify

Um arquivo de role Variant vincula-se a um template e sobrescreve campos especificos:

{
"Type": "Variant",
"Reference": "Template_Predator",
"Modify": {
"Appearance": "Fox",
"MaxHealth": 38
}
}

O engine faz o merge da definicao completa do template com o bloco Modify. Campos nao listados em Modify mantem o valor do template. O valor de Reference e o nome do arquivo sem a extensao .json.

O Sistema Parameter / Compute

Templates declaram Parameters — valores nomeados com um padrao e uma descricao:

{
"Parameters": {
"MaxHealth": {
"Value": 100,
"Description": "Max health for the NPC"
},
"Appearance": {
"Value": "Bear_Grizzly",
"Description": "Model to be used"
}
}
}

Campos de nivel superior no template leem desses parametros usando o atalho Compute:

{
"MaxHealth": { "Compute": "MaxHealth" },
"Appearance": { "Compute": "Appearance" }
}

Um role Variant concreto sobrescreve um parametro fornecendo um novo valor no seu proprio bloco Parameters dentro de Modify:

{
"Type": "Variant",
"Reference": "Template_Predator",
"Modify": {
"MaxHealth": 38,
"Appearance": "Fox"
},
"Parameters": {
"NameTranslationKey": {
"Value": "server.npcRoles.Fox.name",
"Description": "Translation key for NPC name display"
}
}
}

Schema — Campos do Template (Abstract)

FieldTypeDescricao
Type"Abstract"Marca este arquivo como template base nao spawnavel.
StartStatestringEstado inicial de IA, ex: "Idle".
ParametersobjectDefinicoes de parametros nomeados. Cada entrada tem Value, TypeHint opcional e Description.
AppearanceComputeResolvido a partir de Parameters.Appearance.
MaxHealthComputeResolvido a partir de Parameters.MaxHealth.
DropListComputeResolvido a partir de Parameters.DropList.
NameTranslationKeyComputeResolvido a partir de Parameters.NameTranslationKey.
MotionControllerListarrayControladores de locomocao (Walk, Fly, Swim).
InstructionsarrayArvore de comportamento de IA completa compartilhada por todas as variantes.
KnockbackScalenumberMultiplicador de knockback padrao.
DisableDamageGroupsstring[]Grupos de dano bloqueados por padrao.

Templates Base Disponiveis

TemplateFamilia de ComportamentoPadroes Principais
Template_PredatorCacador agressivo, ataca e foge se ameacadoViewRange: 24, AlertedRange: 28, FleeIfNotThreatened: true
Template_Animal_NeutralAnimal presa passivo, foge quando ameacadoViewRange: 16, AlertedRange: 18, StartState: Idle
Template_LivestockAnimal de fazenda domesticavel com pastejo e producaoAlertedActionRange: 6, GrazingBlockSet: Grass
Template_Birds_PassivePassaro passivo voador com comportamento de bandoFlockArray: ["Template_Birds_Passive"], MotionControllerList: [Fly]
Template_IntelligentNPC de faccao com IA de combate e pedido de ajudaAlertedRange: 45, ChanceToBeAlertedWhenReceivingCallForHelp: 70
Template_Beasts_Passive_CritterPequena criatura passivaAtributos minimos, comportamento de bando em escala de criatura
Template_Edible_CritterCriatura passiva que pode ser comidaEstende criatura com interacao de comida
Template_SpiritEntidade espiritual com movimento especialLocomocao de espirito, padroes de particulas
Template_Summoned_AllyInvocacao aliada do jogadorAtitude amigavel ao jogador por padrao
Template_Swimming_AggressiveNPC aquatico agressivoLocomocao de natacao, IA hostil
Template_Swimming_PassiveNPC aquatico passivoLocomocao de natacao, comportamento de fuga
Template_TempleNPC guardiao de temploIA de guardiao, vida alta

Exemplo — Template_Animal_Neutral (abreviado)

Este e o template que Chicken, Deer, Moose e outros animais neutros herdam:

{
"Type": "Abstract",
"StartState": "Idle",
"Parameters": {
"Appearance": {
"Value": "Deer_Stag",
"Description": "The NPC's model."
},
"ViewRange": {
"Value": 16,
"Description": "The view distance of the NPC, in blocks."
},
"ViewSector": {
"Value": 180,
"Description": "The view sector of the NPC, in degrees."
},
"HearingRange": {
"Value": 8,
"Description": "The hearing distance of the NPC, in blocks."
},
"AbsoluteDetectionRange": {
"Value": 4,
"Description": "The range at which a target is guaranteed to be detected, in blocks."
},
"AlertedRange": {
"Value": 18,
"Description": "The range within which the target can be seen when alerted, in blocks."
},
"AlertedActionRange": {
"Value": 8,
"Description": "The range at which an NPC will react to players, in blocks."
},
"DropList": {
"Value": "Empty",
"Description": "The NPC's drop list."
},
"AttractiveItemSet": {
"Value": [],
"TypeHint": "String",
"Description": "Items that are deemed attractive when held nearby."
},
"MaxHealth": {
"Value": 100,
"Description": "Max health for the NPC"
},
"NameTranslationKey": {
"Value": "server.npcRoles.Template.name",
"Description": "Translation key for NPC name display"
}
}
}

Paginas Relacionadas