30/05/2008
Cualquier veterano de Terraria sabe que la construcción es uno de los pilares del juego. Creamos castillos imponentes, ciudades subterráneas y bases flotantes, pero a menudo, por más detalladas que sean, pueden sentirse vacías, carentes de vida. Colocamos maniquíes con armaduras para simular guardias y estatuas para adornar salones, pero siempre queda esa sensación de que son... inertes. ¿Y si pudieras ir un paso más allá? ¿Si pudieras crear tus propios NPCs que, aunque no funcionen como los aldeanos tradicionales, pueblen tus creaciones, dándoles una atmósfera y personalidad únicas? Este es el mundo de los NPCs decorativos, una fantástica posibilidad que el modding nos ofrece, y en este artículo te guiaremos a través de los conceptos y el código para que puedas empezar a poblar tu mundo.

¿Qué Son Exactamente los NPCs Decorativos?
Cuando hablamos de un NPC decorativo, nos referimos a un personaje no jugador diseñado principalmente con fines estéticos y de ambientación, en lugar de funcionales. Piensa en ellos como la evolución de los maniquíes o las estatuas. En lugar de un objeto estático, podrías tener:
- Guardias inamovibles flanqueando la entrada de tu castillo.
- Clientes sentados en las mesas de una taberna que has construido, levantando sus jarras de vez en cuando.
- Enanos mineros picando en una veta de mineral dentro de tu mina personalizada.
- Un mercader estático detrás de un puesto en un mercado, con el que quizás se pueda interactuar para ver un diálogo simple.
La clave es que su propósito es enriquecer visualmente el entorno. Pueden tener animaciones simples, diálogos de ambientación e incluso reaccionar de formas básicas, pero no se mudarán, no venderán objetos complejos (a menos que se programe específicamente) ni participarán activamente en el sistema de aldeanos del juego. Son, en esencia, muebles vivientes.
Primeros Pasos: Preparando el Entorno de Modding
Antes de empezar a escribir código, necesitas tener tu entorno de desarrollo listo. La creación de mods para Terraria se realiza a través de tModLoader, una versión modificada del juego que permite cargar y gestionar mods. Asumiremos que ya tienes tModLoader instalado desde Steam y estás familiarizado con la creación de un proyecto de mod básico.
Una vez que tengas tu mod creado, la estructura es fundamental. Dentro de la carpeta de tu proyecto, crea un nuevo directorio llamado NPCs. Aquí es donde residirán todos los archivos relacionados con tus personajes personalizados. Para cada NPC, necesitarás, como mínimo, dos archivos principales:
- Un archivo de código C#: Por ejemplo,
GuardiaEstatico.cs. Aquí es donde definiremos todo el comportamiento y las propiedades de nuestro NPC. - Un archivo de imagen (spritesheet): Por ejemplo,
GuardiaEstatico.png. Esta imagen contiene todos los fotogramas de animación de tu NPC. - Una imagen para la cabeza: Por ejemplo,
GuardiaEstatico_Head.png. Esta se usa para el ícono en el mapa si decides que tu NPC aparezca en él.
Dando Vida al Código: La Estructura Básica
Vamos a crear un ejemplo simple: un Guardia Estático. Empezaremos con la estructura básica del archivo GuardiaEstatico.cs. Este código establece las propiedades fundamentales de nuestro personaje.
using Terraria; using Terraria.ID; using Terraria.ModLoader; namespace MiPrimerMod.NPCs { [AutoloadHead] public class GuardiaEstatico: ModNPC { public override void SetStaticDefaults() { Main.npcFrameCount[Type] = 1; // Solo un fotograma, ya que es estático } public override void SetDefaults() { NPC.townNPC = false; // No es un aldeano que necesite casa NPC.friendly = true; // No atacará al jugador NPC.width = 18; NPC.height = 40; NPC.aiStyle = 0; // ¡La clave! Sin IA predefinida, no se moverá. NPC.damage = 0; NPC.defense = 100; NPC.lifeMax = 250; NPC.HitSound = SoundID.NPCHit1; NPC.DeathSound = SoundID.NPCDeath1; NPC.knockBackResist = 0f; // No se puede empujar } } }Desglosando el Código: Propiedades Clave
La magia para crear un NPC decorativo reside en el método SetDefaults(). Analicemos las líneas más importantes:
NPC.townNPC = false;: Al establecer esto en falso, le decimos al juego que este NPC no forma parte del sistema de aldeanos. No buscará una casa vacía ni contará para el pilón del bioma.NPC.friendly = true;: Para que no sea hostil hacia el jugador.NPC.aiStyle = 0;: Esta es, quizás, la propiedad más crucial. ElaiStyledetermina el patrón de comportamiento de un NPC. tModLoader ofrece muchos estilos predefinidos (caminante, volador, luchador, etc.). Al establecerlo en 0, le quitamos cualquier tipo de inteligencia artificial. El NPC simplemente existirá, sin moverse, atacar o reaccionar por sí mismo.NPC.knockBackResist = 0f;: Poner la resistencia al empuje en cero significa que será completamente inamovible, como una estatua. ¡Perfecto para un guardia en su puesto!
El Dilema de la Aparición: ¿Cómo Coloco a mi Guardia?
Un NPC normal tiene una probabilidad de aparecer bajo ciertas condiciones. Sin embargo, para un NPC decorativo, queremos control total sobre su ubicación. No queremos que nuestros guardias aparezcan aleatoriamente en el mundo. La solución es crear un objeto que, al ser usado, genere al NPC en la ubicación del cursor del ratón.
Para ello, debemos anular la función de aparición natural y crear un objeto de invocación. Primero, nos aseguramos de que no aparezca por sí solo añadiendo esto a nuestro archivo GuardiaEstatico.cs:
public override float SpawnChance(NPCSpawnInfo spawnInfo) { return 0f; // Probabilidad de aparición cero }Luego, crearíamos un nuevo objeto (por ejemplo, en una carpeta Items) que se encargue de invocarlo. Este objeto podría ser una especie de "Silbato de Guardia" o un "Puesto de Guardia" que, al colocarlo, hace aparecer al NPC.

Tabla Comparativa: NPC Funcional vs. NPC Decorativo
Para aclarar las diferencias, aquí tienes una tabla que compara las propiedades típicas de un NPC funcional como el Guía con nuestro hipotético Guardia Estático.
| Característica | NPC Funcional (Ej: Guía) | NPC Decorativo (Ej: Guardia Estático) |
|---|---|---|
NPC.townNPC | true | false |
NPC.aiStyle | 7 (Estilo de aldeano) | 0 (Sin IA) |
knockBackResist | Valor mayor a 0 (ej. 0.5f) | 0f (Inmóvil) |
| SpawnChance | Condición específica de aparición | 0f (Aparición manual) |
| Interacción Principal | Diálogo, tienda, funciones de juego | Presencia visual, diálogo de ambientación |
Preguntas Frecuentes (FAQ)
¿Puedo hacer que mi NPC decorativo sea invulnerable?
¡Sí! Dentro del método SetDefaults(), simplemente añade la línea NPC.dontTakeDamage = true;. Esto lo hará completamente inmune a cualquier tipo de daño, tanto de jugadores como de enemigos.
¿Cómo puedo darle diálogos de ambientación?
Puedes añadir un sistema de chat simple. Sobrescribe el método GetChat() para que devuelva un texto cuando el jugador haga clic derecho sobre él.
public override string GetChat() { string[] chat = { "Mantén el orden.", "Nada que reportar.", "..." }; return Main.rand.Next(chat); }¿Es posible animar a un NPC estático?
Absolutamente. Aunque su aiStyle sea 0, puedes controlar la animación manualmente sobrescribiendo el método FindFrame(). Dentro de este método, puedes programar una lógica para que el NPC cambie su fotograma de animación cada cierto tiempo, simulando una respiración sutil, un parpadeo o cualquier otra animación simple que desees sin que se mueva de su sitio.
¿Un NPC decorativo puede tener una tienda?
Técnicamente sí, pero se aleja del concepto "decorativo". Para añadir una tienda, necesitarías implementar los métodos SetChatButtons() y AddShops(). Esto lo convertiría en un NPC funcional, aunque siga siendo estático. Es una excelente idea para crear tenderos fijos en un mercado que hayas construido.
Conclusión
La creación de NPCs decorativos abre una puerta a un nivel de personalización y construcción de mundos sin precedentes en Terraria. Ya no estás limitado a estructuras sin vida; ahora puedes poblar tus creaciones con personajes que les otorgan contexto, historia y atmósfera. Desde un simple guardia en una torre hasta una bulliciosa taberna llena de clientes, el único límite es tu imaginación. El código base que hemos explorado es solo el punto de partida. Te animamos a experimentar con diferentes propiedades, a crear animaciones personalizadas y a dar vida a esos personajes que siempre has imaginado en tu mundo de Terraria. ¡Ahora ve y convierte tus construcciones en mundos vibrantes!
Si quieres conocer otros artículos parecidos a Guía para Crear NPCs Decorativos en Terraria puedes visitar la categoría Modding.
