Cómo agregar nuevos monstruos (BMD) al cliente de MU Online
Guía técnica para insertar nuevos modelos de monstruo (BMD) en el cliente de MU Online: carpeta Monster, texturas OZT/OZJ, slot de modelo, animaciones y la sincronización con el MonsterList del servidor.
Insertar un monstruo inédito en MU Online es el tipo de personalización que impresiona a cualquier jugador veterano: un jefe de evento exclusivo, una criatura que nadie ha visto en otro servidor, un mob temático que da identidad a un mapa nuevo. Pero detrás de ese efecto está uno de los trabajos más
Insertar un monstruo inédito en MU Online es el tipo de personalización que impresiona a cualquier jugador veterano: un jefe de evento exclusivo, una criatura que nadie ha visto en otro servidor, un mob temático que da identidad a un mapa nuevo. Pero detrás de ese efecto está uno de los trabajos más técnicos del lado del cliente, porque un monstruo en MU no es una imagen: es un modelo tridimensional con malla, esqueleto, animaciones y texturas, empaquetado en el formato BMD y atado a un slot de modelo que el ejecutable del juego espera encontrar. Y, tan importante como eso, ese modelo solo se convierte en un enemigo de verdad cuando el servidor sabe que existe, cuánta vida tiene, qué daño causa y dónde aparece. Este tutorial es para el administrador avanzado que quiere dominar todo el flujo: preparar el BMD, tratar las texturas, encajarlo en el slot correcto del cliente y sincronizarlo con el servidor. Como siempre, los nombres de archivos, la numeración de slots y la estructura de carpetas varían según la season y el cliente; usa los ejemplos como ilustración de conceptos reales y valida en tu propio paquete.
Requisitos previos
Antes de importar cualquier modelo, ten a mano el entorno correcto:
- Copia de seguridad completa de la carpeta
Data\Monsterdel cliente y de los archivos de monstruo del servidor (MonsterList,Monster.txt, spawns). - Un cliente de prueba aislado, para nunca distribuir un modelo roto directamente a los jugadores.
- Una herramienta de manipulación de BMD compatible con tu season (editores/visualizadores de BMD o plugin de importación/exportación para software 3D).
- Conversores de OZT/OZJ para preparar las texturas en el formato cifrado que el cliente lee.
- Acceso al MonsterList/Monster.txt del servidor y a los archivos de spawn.
- Base de servidor ya funcionando. Si aún no la tienes, comienza por la guía de cómo crear un servidor de MU Online.
> Nunca edites el BMD original que ya está en uso. Trabaja sobre copias renombradas y mantén el modelo base intacto para poder dar marcha atrás.
Anatomía de un archivo BMD
El BMD (Binary Model Data) es el corazón de todo lo tridimensional en MU Online. Un único archivo .bmd de monstruo contiene, de forma compactada:
- Malla (mesh): los vértices, caras y coordenadas de textura (UV) que forman la geometría visible.
- Huesos (bones): la jerarquía de esqueleto que permite al modelo deformarse y animarse.
- Acciones (actions): las animaciones, cada una indexada: caminar, atacar, recibir daño, morir. El cliente llama a esas acciones por índice.
- Referencias de textura: los nombres de los archivos de textura (
OZT/OZJ) que usa cada parte de la malla.
El detalle crucial es que el BMD referencia las texturas por su nombre, y esas texturas deben existir en la misma carpeta del modelo. Si importas un monstruo de otro paquete y olvidas traer las texturas —o renombras el BMD sin ajustar las referencias—, el cliente carga la geometría pero la pinta de blanco, negro o hace que el modelo "parpadee".
Dónde viven los monstruos en el cliente
Los modelos de monstruo están, en la mayoría de los clientes, en la carpeta Data\Monster. La convención de nombres suele ser MonsterXX.bmd, donde XX es un número que identifica el slot del modelo, acompañado de sus texturas. Un monstruo puede usar más de una textura: una OZJ para el cuerpo sólido y una OZT para las partes con transparencia, por ejemplo.
| Elemento | Ejemplo de archivo | Función |
|---|---|---|
| Modelo | Monster123.bmd | Malla, huesos, animaciones y referencias de textura |
| Textura sólida | monster123.OZJ | JPG cifrado, sin canal alfa |
| Textura con alfa | monster123_wing.OZT | TGA cifrado, preserva la transparencia |
El número del modelo (123 en el ejemplo) es lo que ata todo: el servidor, al describir un monstruo, informa un tipo que el cliente traduce a un índice de modelo. Ese mapeo de tipo a modelo, según la season, reside en el ejecutable o en un archivo de definición del cliente. Descubrir dónde está ese mapeo en tu paquete es parte esencial del trabajo.
Paso a paso para agregar el monstruo
- Elige un slot de modelo libre. Verifica qué números de
MonsterXX.bmdya están ocupados y elige un índice sin usar, o un slot que pretendas reemplazar. - Prepara el BMD. Si el modelo vino de otro paquete, ábrelo en tu herramienta y confirma que existen las animaciones esenciales: idle/caminar, ataque, daño y muerte. Ajusta la escala y la orientación si es necesario.
- Ajusta las referencias de textura. Asegúrate de que los nombres de textura dentro del BMD coincidan con los archivos que vas a colocar en la carpeta.
- Convierte las texturas. Transforma las imágenes en
OZJ(sólido) uOZT(con alfa) usando el conversor de tu paquete. - Renombra y ubica. Coloca
MonsterXX.bmdy sus texturas enData\Monster, usando el número del slot elegido. - Registra el mapeo de modelo. Haz que el cliente asocie el tipo de monstruo del servidor con el slot de modelo, ya sea en el ejecutable o en el archivo de definición, según tu season.
- Prueba en el cliente local antes de cualquier distribución.
> Un monstruo puede cargarse visualmente sin HP, drop ni IA: eso es responsabilidad del servidor. Confirma primero el aspecto visual y luego ata el comportamiento en el lado del servidor.
Animaciones y acciones: por qué el índice importa
Cada acción de un monstruo (caminar, atacar, morir) es una animación indexada dentro del BMD. El motor de MU llama a esas acciones por número: cuando el servidor ordena al monstruo atacar, el cliente reproduce la acción del índice correspondiente. Si el modelo importado tiene las animaciones en un orden distinto al esperado, verás comportamientos extraños: el monstruo "ataca" haciendo la animación de muerte, o se queda quieto en una pose de daño permanente. Por eso, al traer un modelo de fuera, es común necesitar reordenar o remapear las acciones para que los índices coincidan con lo que el cliente espera para esa categoría de criatura. Los modelos de jefe (boss) y de mob común pueden tener conjuntos de animación diferentes, así que respeta la categoría del slot que estás ocupando.
# Ilustración conceptual de los índices de acción esperados (varía por season/cliente)
Action 0 : Stop/Idle # quieto
Action 1 : Walk # caminando
Action 2 : Attack # ataque
Action 3 : Shock/Damage # recibiendo daño
Action 4 : Die # muerte
Texturas: cuándo usar OZT y cuándo usar OZJ
La elección entre OZT y OZJ no es estética, es técnica, y definirla mal genera artefactos visuales:
- OZJ es un JPG cifrado. No tiene canal alfa (transparencia). Úsalo para superficies sólidas: piel, armadura, piedra, metal. Es más ligero y comprime bien los colores continuos.
- OZT es un TGA cifrado. Preserva el canal alfa, es decir, transparencia real. Úsalo para alas, membranas, efectos, cabellos calados, cualquier parte que necesite bordes transparentes.
Si aplicas una textura sólida (OZJ) en una parte que debería ser calada, el monstruo gana "rectángulos" opacos alrededor de las alas o los tentáculos. Si aplicas OZT innecesariamente, desperdicias memoria. Prefiere dimensiones potencia de dos (256x256, 512x512) para la máxima compatibilidad del motor.
Sincronización con el servidor: MonsterList
El modelo en el cliente es solo la mitad del trabajo. El monstruo existe para el juego cuando el servidor lo define. En el lado del servidor, típicamente en un archivo MonsterList/Monster.txt, declaras los atributos del monstruo: nombre, tipo (que apunta al slot de modelo del cliente), nivel, HP, daño mínimo y máximo, defensa, resistencias, y lo asocias a la tabla de drop y al comportamiento de IA.
# Ilustración conceptual de una entrada de MonsterList (el formato varía por emulador)
# Type Name Level HP MinDmg MaxDmg Def MoveRange AttackType
123 "Guardian Sombrio" 120 45000 850 1100 420 3 1
El campo Type es el puente entre servidor y cliente: es él quien debe corresponder al slot de modelo MonsterXX.bmd. Si el servidor spawnea el tipo 123 pero en el cliente el Monster123.bmd no existe o está mapeado a otra cosa, los jugadores ven un monstruo invisible, un modelo genérico o el cliente se cuelga. Después de registrar el monstruo en el MonsterList, aún necesitas agregarlo al spawn de algún mapa (archivo de spawn/MonsterSetBase), informando el mismo tipo, el mapa, las coordenadas y la cantidad. Cliente, MonsterList y spawn deben hablar el mismo número.
Distribución vía launcher
Una vez probado localmente, el monstruo debe llegar a los jugadores. El MonsterXX.bmd y sus texturas entran en el paquete de patch del launcher/updater: el jugador descarga el modelo y las texturas antes de conectarse. Si un jugador no tiene los archivos, no podrá renderizar la criatura: en el mejor caso ve un modelo genérico, en el peor el cliente se cierra al intentar dibujarlo. Por eso, cada vez que agregas un monstruo que aparece en producción, los archivos del cliente entran en la actualización obligatoria. Versiona el patch para que quien ya lo descargó no repita la descarga y para que los nuevos jugadores reciban el conjunto completo de modelos.
Errores comunes y soluciones
| Síntoma | Causa probable | Solución |
|---|---|---|
| El monstruo aparece blanco, negro o parpadeando | Textura ausente o nombre distinto a la referencia del BMD | Verifica y alinea los nombres de las texturas con lo que el BMD referencia |
| Monstruo invisible en el juego | Slot de modelo equivocado o tipo del servidor sin BMD correspondiente | Asegúrate de que el Type del servidor apunte al MonsterXX.bmd existente |
| La animación de ataque parece de muerte/daño | Índices de acción del BMD fuera del orden esperado | Reordena/remapea las acciones según la categoría del slot |
| Bordes opacos en alas/partes caladas | Textura sólida OZJ donde debería ser OZT con alfa | Reconvierte la parte transparente a OZT |
| El cliente se cuelga al spawnear el monstruo | Modelo corrupto o índice de modelo inexistente | Restaura desde la copia de seguridad y reimporta el BMD con cuidado |
| El monstruo aparece pero no tiene HP/drop | Registrado solo en el cliente, no en el MonsterList | Declara el monstruo en el MonsterList y ata la tabla de drop |
Lista de verificación de lanzamiento
- Copia de seguridad de
Data\Monster(cliente) y de los archivos de monstruo del servidor - Slot de modelo libre elegido y confirmado
- BMD con las animaciones esenciales (idle, caminar, atacar, daño, muerte)
- Referencias de textura del BMD verificadas y alineadas
- Texturas convertidas correctamente (
OZJsólido,OZTcon alfa) MonsterXX.bmdy texturas ubicados enData\Monster- Mapeo de tipo a modelo ajustado según la season
- Monstruo registrado en el
MonsterListcon atributos y drop - Spawn agregado en el mapa con el mismo Type
- Comportamiento probado en el cliente local (visual, ataque, muerte)
- Archivos del modelo agregados al launcher/updater y versionados
- Prueba final con un cliente "limpio" descargando vía patch
Agregar un monstruo es un ejercicio de precisión: el modelo, las texturas, las animaciones y el registro en el servidor deben estar todos coherentes, atados por el mismo número de tipo. Cuando todo encaja, el resultado es una criatura que parece parte nativa del juego, y es exactamente esa sensación de "esto no existe en otro servidor" lo que fideliza a tu comunidad.
Preguntas frecuentes
¿Qué es un archivo BMD?
Es el formato binario de modelo 3D de MU Online. Un BMD guarda la malla (mesh), los huesos (bones), las animaciones (actions) y las referencias a las texturas del modelo, ya sea de personaje, monstruo, ítem u objeto de escenario.
¿Dónde están los modelos de monstruo en el cliente?
Típicamente en la carpeta Data\\Monster, con nombres como MonsterXX.bmd acompañados de sus texturas OZT/OZJ. La ruta exacta varía según la season y el cliente, así que confírmala en tu paquete.
¿Necesito registrar el monstruo también en el servidor?
Sí. El cliente solo dibuja el modelo; el monstruo únicamente cobra vida, HP, daño, drop y spawn cuando se registra en el MonsterList del servidor. El tipo del monstruo debe apuntar al slot de modelo correcto en el cliente.
¿Las texturas del monstruo son OZT u OZJ?
Depende. OZT es un TGA cifrado y preserva la transparencia (alfa), útil para partes caladas; OZJ es un JPG cifrado, sin alfa, para superficies sólidas. Un mismo monstruo puede usar ambos.
¿Por qué mi monstruo nuevo aparece acostado, invisible o parpadeando?
Casi siempre es un slot de modelo equivocado, una textura ausente/renombrada o animaciones incompatibles. El cliente espera índices de acción específicos (caminar, atacar, morir); si el BMD no los tiene, el renderizado se rompe.