Saltearse al contenido

Plantillas de NPC

Descripción general

Las plantillas de NPC son archivos de rol Abstract que definen comportamiento, estadísticas y lógica de IA comunes compartidos por una familia de NPCs. Los roles concretos referencian una plantilla a través del campo Reference y sobrescriben valores selectivamente vía Modify. El sistema de Parameters permite que las plantillas declaren valores predeterminados con nombre y documentación que los roles concretos pueden sobrescribir sin cambiar la plantilla en sí.

Ubicación de archivos

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

El patrón Reference / Modify

Un archivo de rol Variant se vincula a una plantilla y sobrescribe campos específicos:

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

El motor fusiona la definición completa de la plantilla con el bloque Modify. Los campos no listados en Modify conservan el valor de la plantilla. El valor de Reference es el nombre del archivo sin la extensión .json.

El sistema Parameter / Compute

Las plantillas declaran Parameters — valores con nombre con un valor predeterminado y una descripción:

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

Los campos de nivel superior en la plantilla leen de estos parámetros usando la abreviación Compute:

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

Un rol concreto Variant sobrescribe un parámetro proporcionando un nuevo valor en su propio bloque 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"
}
}
}

Esquema — Campos de plantilla (Abstract)

FieldTypeDescripción
Type"Abstract"Marca este archivo como una plantilla base no aparecible.
StartStatestringEstado inicial de IA, p.ej. "Idle".
ParametersobjectDefiniciones de parámetros con nombre. Cada entrada tiene Value, TypeHint opcional y Description.
AppearanceComputeResuelto desde Parameters.Appearance.
MaxHealthComputeResuelto desde Parameters.MaxHealth.
DropListComputeResuelto desde Parameters.DropList.
NameTranslationKeyComputeResuelto desde Parameters.NameTranslationKey.
MotionControllerListarrayControladores de locomoción (Walk, Fly, Swim).
InstructionsarrayÁrbol de comportamiento de IA completo compartido por todas las variantes.
KnockbackScalenumberMultiplicador de retroceso predeterminado.
DisableDamageGroupsstring[]Grupos de daño bloqueados por defecto.

Plantillas base disponibles

PlantillaFamilia de comportamientoValores predeterminados clave
Template_PredatorCazador agresivo, ataca y luego huye si se siente amenazadoViewRange: 24, AlertedRange: 28, FleeIfNotThreatened: true
Template_Animal_NeutralAnimal presa pasivo, huye cuando se siente amenazadoViewRange: 16, AlertedRange: 18, StartState: Idle
Template_LivestockAnimal de granja domesticable con pastoreo y producciónAlertedActionRange: 6, GrazingBlockSet: Grass
Template_Birds_PassiveAve pasiva voladora con comportamiento de bandadaFlockArray: ["Template_Birds_Passive"], MotionControllerList: [Fly]
Template_IntelligentNPC de facción con IA de combate y llamada de ayudaAlertedRange: 45, ChanceToBeAlertedWhenReceivingCallForHelp: 70
Template_Beasts_Passive_CritterCriatura pasiva pequeñaEstadísticas mínimas, comportamiento de manada a escala de criatura
Template_Edible_CritterCriatura pasiva que puede ser comidaExtiende criatura con interacción de alimento
Template_SpiritEntidad espiritual con movimiento especialLocomoción espiritual, partículas predeterminadas
Template_Summoned_AllyInvocación aliada del jugadorActitud amistosa hacia el jugador por defecto
Template_Swimming_AggressiveNPC acuático agresivoLocomoción acuática, IA hostil
Template_Swimming_PassiveNPC acuático pasivoLocomoción acuática, comportamiento de huida
Template_TempleNPC guardián del temploIA de guardián, salud alta

Ejemplo — Template_Animal_Neutral (abreviado)

Esta es la plantilla de la que heredan Chicken, Deer, Moose y otros animales neutrales:

{
"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"
}
}
}

Páginas relacionadas