Cómo agregar nuevos mapas al cliente de MU Online
Aprende a agregar un nuevo mapa al cliente de MU Online desde cero: carpeta World, archivos EncTerrain, height map, lightmap, objetos BMD y la sincronización obligatoria con el servidor.
Agregar un nuevo mapa al cliente de MU Online es una de las tareas más completas que un administrador puede enfrentar del lado del cliente: implica entender cómo el juego representa terreno, colisión, altura, iluminación y objetos tridimensionales, y cómo todos esos archivos deben conversar entre sí
Agregar un nuevo mapa al cliente de MU Online es una de las tareas más completas que un administrador puede enfrentar del lado del cliente: implica entender cómo el juego representa terreno, colisión, altura, iluminación y objetos tridimensionales, y cómo todos esos archivos deben conversar entre sí y, principalmente, con el servidor. No es un trabajo de "copiar y pegar una carpeta"; es un ejercicio de comprender la arquitectura de mundo de MU y respetar las dependencias entre cliente y emulador. Este tutorial fue escrito para el administrador avanzado que ya domina la estructura básica de un servidor y ahora quiere expandir el mundo del juego con un mapa nuevo, sea un escenario personalizado de evento, una arena de PvP o una zona de farm exclusiva. Como siempre en el universo de los emuladores, los nombres exactos de archivos, los IDs y la estructura de carpetas varían por season y cliente; trata los ejemplos de abajo como ilustración de conceptos reales y revisa siempre la organización de tu propio paquete antes de aplicar.
Requisitos previos
Antes de tocar cualquier archivo, asegúrate de tener el entorno y el conocimiento mínimos para trabajar con seguridad:
- Backup completo de la carpeta
Datadel cliente y de los archivos de configuración de mapa del servidor. Este es el paso innegociable. - Un cliente de prueba separado del que usan los jugadores, para no distribuir archivos rotos.
- Un editor de mapas de MU compatible con tu season (comúnmente llamado World Editor, MU Map Editor o similar).
- Herramientas de cifrado/descifrado de archivos
EncTerrainy conversores deOZB,OZJyOZTde tu paquete. - Acceso a los archivos de configuración de mapa del servidor (definiciones de gates, zonas seguras, movimiento y spawns).
- Si aún no has montado la base del servidor, empieza por la guía de cómo crear un servidor de MU Online antes de avanzar aquí.
> Trabaja siempre en copias. Un solo byte equivocado en un archivo cifrado de terreno puede colgar el cliente en la pantalla de carga sin ningún mensaje de error claro.
Cómo representa el cliente un mapa
En MU Online, cada mapa es una cuadrícula (grid) de celdas, tradicionalmente 256 por 256 en el engine clásico. Cada celda carga información de textura, altura, iluminación y atributos de colisión. El cliente arma ese escenario leyendo un conjunto de archivos que están dentro de una carpeta de mundo, normalmente nombrada WorldN, dentro de Data. La convención más común asocia la carpeta World1 al mapa de ID 0 (Lorencia), World2 al ID 1 (Dungeon), y así sucesivamente — es decir, N = ID + 1. Esa correspondencia varía por cliente, así que lo primero que hay que hacer es abrir la carpeta Data y mapear qué WorldN corresponde a qué mapa conocido de tu paquete.
Cada carpeta de mundo reúne, típicamente, los siguientes archivos, que trabajan en conjunto:
| Archivo (ejemplo) | Función | Observación |
|---|---|---|
EncTerrain1.att | Atributos de colisión: celda bloqueada, transitable, zona segura, agua | Cifrado; define por dónde puede caminar el jugador |
EncTerrain1.map | Capas de textura: qué tile aparece en cada celda | Cifrado; controla el visual del suelo |
EncTerrain1.obj | Posición, rotación y escala de los objetos BMD del escenario | Cifrado; arma árboles, casas, estatuas |
TerrainHeight.OZB | Mapa de altura del terreno | Define el relieve; un OZB es un BMP cifrado |
TerrainLight.OZJ | Lightmap: iluminación estática del escenario | Un OZJ es un JPG cifrado |
Tile*.OZJ / .OZT | Texturas de los tiles del suelo | Pasto, tierra, piedra, arena |
El número en el nombre de los archivos EncTerrain acompaña al mapa. En muchos paquetes el EncTerrain1.* pertenece al World1; en otros la numeración es distinta. No lo presumas: verifícalo.
Paso a paso para crear la carpeta del mapa nuevo
El camino más seguro para empezar es partir de un mapa existente parecido al que quieres, y transformarlo, en vez de generar todo desde cero. Así heredas una estructura de archivos que ya funciona.
- Elige el slot de mapa. Decide si vas a reutilizar un slot poco usado o registrar un ID nuevo. Reutilizar es más simple y compatible; un ID inédito exige soporte en el ejecutable y en el emulador.
- Duplica una carpeta base. Copia, por ejemplo,
World1a una carpeta nueva, digamosWorld52, si tu cliente acepta ese ID. Renombra los archivos internos según la convención (ej.:EncTerrain52.att,EncTerrain52.map,EncTerrain52.obj). - Ábrela en el editor de mapas. Carga la carpeta descifrada en tu World Editor. Es ahí donde vas a redibujar el terreno, pintar texturas, ajustar altura y posicionar objetos.
- Edita el terreno y las texturas. Pinta las capas de tile, esculpe el relieve mediante el height map y ajusta el lightmap para la atmósfera deseada.
- Posiciona los objetos BMD. Árboles, portones, estatuas y estructuras son modelos
.bmdreferenciados por el archivo de objetos. Deben existir en la carpeta de objetos correspondiente del mundo. - Define los atributos de colisión. En el archivo de atributos, marca celdas bloqueadas (paredes, agua intransitable), zonas seguras (donde no hay PvP ni daño) y áreas transitables.
- Vuelve a cifrar los archivos. Al terminar, genera de vuelta los
EncTerraincifrados y losOZB/OZJen el formato que el cliente lee.
> Las zonas seguras mal marcadas son una fuente clásica de quejas: jugadores muriendo en lo que debería ser un área protegida, o PvP imposible en una arena. Revisa el .att con calma.
Height map, lightmap y la atmósfera del escenario
El height map (TerrainHeight.OZB) es lo que da relieve al mapa. Es, esencialmente, una imagen en tonos de gris donde el valor de cada píxel representa la altura de esa celda: más claro, más alto; más oscuro, más bajo. Editarlo permite crear colinas, depresiones, rampas y mesetas. Un error común es generar variaciones de altura demasiado bruscas, creando "paredes" invisibles donde el personaje se traba. Trabaja con transiciones suaves y prueba caminando por el mapa.
El lightmap (TerrainLight.OZJ) controla la iluminación estática. Es donde defines si el mapa tiene un clima soleado, sombrío, rojizo (típico de mapas infernales) o azulado (mapas helados). Como es un OZJ —un JPG cifrado—, puedes editarlo en cualquier editor de imagen después de convertirlo, pintando áreas de luz y sombra. La combinación de un height map bien esculpido y un lightmap coherente es lo que hace que un mapa parezca profesional en vez de "plano".
Objetos BMD del escenario
Los objetos que pueblan el mapa —construcciones, vegetación, decoración— son modelos .bmd almacenados en la carpeta de objetos del mundo (algo como Object52, acompañando el número del mundo). El archivo de objetos (.obj) del terreno guarda, para cada instancia, qué modelo usar y dónde posicionarlo, con rotación y escala. Si referencias un índice de objeto que no existe en la carpeta, el cliente puede colgarse o simplemente no renderizar ese ítem. Al traer objetos de otro mapa, copia tanto el .bmd como sus texturas (OZJ/OZT) a la carpeta del nuevo mundo.
# Ilustracion conceptual de una entrada de objeto en el escenario
# (el formato binario real lo genera el editor; esto es solo didactico)
ObjectIndex : 12 # que BMD de la carpeta Object del mundo
PositionX : 128.0 # coordenada en el grid
PositionY : 96.0
PositionZ : 40.0 # altura, alineada al height map
Rotation : 0,0,90 # grados en los ejes
Scale : 1.0
Sincronización obligatoria con el servidor
Aquí está el punto que separa a quien entiende de arquitectura de MU de quien solo toca archivos: el mapa no existe solo porque el cliente lo dibuja. El servidor es la autoridad sobre por dónde puede ir el jugador, cuáles son las zonas seguras reales, dónde están los gates (puntos de teleporte/entrada) y qué monstruos aparecen. El cliente y el servidor deben coincidir en el mismo ID de mapa.
Del lado del servidor, agregar el mapa implica, típicamente:
- Registrar el ID del mapa en las definiciones de mapas del emulador.
- Configurar los gates (archivo de movimiento/portales) para que exista una forma de entrar y salir del mapa nuevo — por comando, NPC de teleporte o conexión con otro mapa.
- Definir zonas seguras y reglas de PvP del lado servidor, que deben coincidir con lo que marcaste en el
.attdel cliente. - Agregar spawns de monstruos si el mapa es de farm, referenciando el mismo ID.
Si el cliente tiene el World52 pero el servidor no reconoce el mapa 51 (recordando la convención N = ID + 1), el jugador será desconectado o verá el escenario sin colisión coherente. La regla de oro: mismo ID en ambos lados, siempre.
Distribución vía launcher
Después de probar exhaustivamente en entorno local, el mapa necesita llegar a los jugadores. Es el launcher/updater quien lo hace: empaquetas la carpeta WorldN completa (archivos EncTerrain, OZB, OZJ, tiles) y la carpeta de objetos correspondiente, y agregas esos archivos al patch. Cuando el jugador abre el juego, el launcher descarga los archivos nuevos antes de conectar. Sin los archivos locales, el cliente no logra armar el escenario —por lo tanto, la distribución no es opcional. Mantén el versionado del patch organizado para que quien ya tiene el mapa no descargue todo de nuevo, y para que los jugadores nuevos reciban el conjunto completo.
Errores comunes y soluciones
| Síntoma | Causa probable | Solución |
|---|---|---|
| El cliente se cuelga en la pantalla de loading | Archivo EncTerrain corrupto o mal recifrado | Restaura del backup y vuelve a cifrar con la herramienta correcta |
| El jugador es desconectado al entrar al mapa | ID del mapa no registrado en el servidor | Registra el mismo ID del lado servidor y sincroniza |
| Escenario sin objetos u objetos invisibles | Índice de objeto sin BMD correspondiente en la carpeta | Copia los .bmd y texturas a la carpeta de objetos del mundo |
| El personaje se traba al caminar en el relieve | Height map con variaciones demasiado bruscas | Suaviza las transiciones de altura en el editor |
| Muerte en un área que debería ser segura | Zona segura marcada en el cliente pero no en el servidor | Alinea las zonas seguras en el .att y en la config del servidor |
| Las texturas del suelo aparecen mal o parpadeando | Tiles OZJ/OZT ausentes o con nombre cambiado | Verifica que todos los tiles referenciados existan en la carpeta |
Lista de verificación de lanzamiento
- Backup completo de la carpeta
Datadel cliente y de las configs de mapa del servidor - Slot/ID de mapa definido y confirmado en ambos lados (cliente y servidor)
- Carpeta
WorldNcreada con todos losEncTerrain, height, light y tiles - Objetos BMD y sus texturas presentes en la carpeta de objetos del mundo
- Atributos de colisión y zonas seguras revisados en el
.att - Height map probado caminando por todo el mapa
- Lightmap coherente con la atmósfera pretendida
- Archivos recifrados en el formato que el cliente lee
- Servidor con ID registrado, gates, zonas seguras y spawns configurados
- Entrada y salida del mapa probadas por comando y/o NPC
- Paquete del mapa agregado al launcher/updater y versionado
- Prueba final con un cliente "limpio" descargando vía patch
Agregar un mapa es, en el fondo, un trabajo de coordinación: decenas de archivos que deben ser coherentes entre sí y con el servidor. Ve con calma, prueba cada etapa por separado y nunca te saltes el backup. Un mapa nuevo bien hecho es una de las formas más marcantes de dar identidad a tu servidor y sorprender a jugadores que ya vieron todos los escenarios clásicos de MU.
Preguntas frecuentes
¿Necesito tocar el servidor para que aparezca un mapa nuevo?
Sí. El cliente dibuja el escenario, pero el mapa solo existe de verdad cuando el servidor conoce el ID, define zonas seguras, gates y spawns. Cliente y servidor deben usar exactamente el mismo número de mapa.
¿Cuál es la relación entre la carpeta WorldN y el ID del mapa?
En la mayoría de los clientes la carpeta World1 corresponde al mapa de ID 0, World2 al ID 1 y así sucesivamente, es decir, N = ID + 1. Esto varía por season y cliente, así que confírmalo en tu paquete antes de crear la carpeta.
¿Puedo crear un mapa totalmente inédito o solo reutilizar slots?
Depende de cuánto soporten el ejecutable y el emulador. Muchos proyectos reutilizan un slot de mapa existente y cambian el contenido; agregar un ID realmente nuevo puede requerir soporte en el main y en el emulador.
¿Los archivos EncTerrain están cifrados?
Sí. El prefijo Enc indica terreno cifrado por XOR. Editas la versión descifrada en un editor de mapas y la vuelves a cifrar antes de distribuir, usando las herramientas propias de tu paquete.
¿Cómo distribuyo el mapa nuevo a los jugadores?
Empaqueta la carpeta WorldN y los objetos en el launcher/updater. El jugador descarga los archivos junto al patch, y nadie puede entrar al mapa sin los archivos locales correspondientes.