✨ Sistema de Estados (Status Effects)
Estudio técnico sobre cómo funcionan los efectos de estado, debuffs y auras en el motor de Hytale.
⚙️ Funcionamiento Base
Los estados en Hytale son componentes lógicos que se aplican a las entidades para modificar su comportamiento, apariencia o estadísticas durante un tiempo determinado. Se definen mediante archivos JSON en el servidor y se sincronizan con el cliente para la representación visual.
| Componente | Descripción |
|---|---|
| Definición JSON | Controla la lógica, duración y efectos visuales. |
| StatusEffectIcon | Ruta al icono PNG que aparecerá en el HUD del jugador. |
| ApplicationEffects | Efectos visuales como tintes de modelo, partículas y Screen Effects. |
| OverlapBehavior | Determina qué pasa si se aplica el mismo efecto dos veces (Extend, Reset, Stack). |
🧪 Anatomía de un Estado (Ejemplo: Poison)
A continuación se muestra un desglose de un archivo de estado típico:
{
// Efectos visuales al aplicarse
"ApplicationEffects": {
"EntityBottomTint": "#000000",
"EntityTopTint": "#008000",
"EntityAnimationId": "Hurt",
"Particles": [{ "SystemId": "Effect_Poison" }]
},
// Lógica de daño o beneficio
"DamageCalculator": {
"BaseDamage": { "Poison": 10 }
},
"Debuff": true,
"StatusEffectIcon": "UI/StatusEffects/Poison.png",
"Duration": 16,
"Infinite": false
}
📂 Categorías de Estados
Hytale clasifica los estados en varias carpetas dentro de Assets/Server/Entity/Effects/:
- Status: Efectos clásicos como Poison, Burn, Freeze, Stun.
- Movement: Modificadores de velocidad, saltos o inmovilización (Root).
- Food/Potion: Estados temporales derivados de ingerir consumibles.
- GameMode: Estados persistentes según el modo de juego (ej. Invulnerabilidad en Creativo).
🛠️ Implementación en Mods
Para crear un nuevo estado en un mod (como el estado "Sucio" de PlayerPoop):
- Crear el icono en
src/main/resources/Common/UI/StatusEffects/mi_estado.png. - Definir el JSON en
src/main/resources/Server/Entity/Effects/Status/MiEstado.json. - Aplicar el efecto mediante código usando el
StatusEffectComponentde la entidad.
Nota sobre Iconos
Los iconos deben tener un fondo transparente y ser legibles en tamaños pequeños para el HUD.
Los iconos deben tener un fondo transparente y ser legibles en tamaños pequeños para el HUD.