Cómo Migrar tu Servidor MU Online de Season 6 a Season 13
Guía completa para migrar tu servidor MU Online de Season 6 a Season 13: base de datos, configuración de archivos, compatibilidad de clientes y pruebas post-migración.
Migrar un servidor MU Online de Season 6 a Season 13 es una de las operaciones más complejas en la administración de servidores privados. No se trata únicamente de reemplazar binarios: implica transformar el esquema de base de datos, adaptar archivos de configuración, reconciliar ítems y habilidades que cambiaron entre temporadas, y garantizar que los jugadores no pierdan su progreso.
Esta guía cubre el proceso completo de forma ordenada. Se asume que tienes experiencia básica administrando servidores MU, acceso completo al servidor (Windows Server 2016 o superior) y permisos de administrador en SQL Server.
> [!ATENCION] > Haz un backup completo de la base de datos y de todos los archivos de configuración antes de comenzar. Una migración mal ejecutada puede resultar en pérdida irreversible de datos. Trabaja siempre en un entorno de prueba antes de aplicar cambios en producción.
1. Inventario previo a la migración
Antes de tocar cualquier archivo, necesitas documentar el estado actual de tu instalación de S6. Esto te servirá como referencia y como punto de rollback.
Información a registrar:
- Versión exacta del servidor S6 (número de build o fecha del ejecutable)
- Versión del cliente que usan tus jugadores
- Versión de SQL Server y collation de la base de datos (
SQL_Latin1_General_CP1_CI_ASes la más común) - Número total de cuentas activas, personajes y gremios
- Addons o modificaciones personalizadas aplicadas sobre la base de S6 (eventos custom, sistemas de reset, tiendas, etc.)
Ejecuta las siguientes consultas en tu base de datos MuOnline para obtener conteos iniciales:
-- Conteo general de entidades antes de migrar
SELECT 'Cuentas' AS Entidad, COUNT(*) AS Total FROM MEMB_INFO
UNION ALL
SELECT 'Personajes' AS Entidad, COUNT(*) AS Total FROM Character
UNION ALL
SELECT 'Gremios' AS Entidad, COUNT(*) AS Total FROM MuGuild
UNION ALL
SELECT 'Items' AS Entidad, COUNT(*) AS Total FROM MuItemStorage;
→ Guarda estos resultados: los usarás para validar la integridad post-migración.
-- Detectar ítems con código fuera del rango válido en S13
SELECT CharacterId, ItemSlot, ItemCode
FROM CharacterItems
WHERE ItemCode NOT IN (SELECT Code FROM ItemList_S13_Valid)
ORDER BY ItemCode;
→ Los registros devueltos son ítems que requieren conversión manual o eliminación.
2. Preparación del entorno de S13
Instala el servidor de Season 13 en una ruta separada de tu instalación de S6. No sobreescribas los binarios existentes; ambas instalaciones deben coexistir durante el proceso de transición.
Estructura de directorios recomendada:
C:\MuServers\
S6_Backup\ ← copia íntegra del servidor S6 actual
S13_Install\ ← instalación limpia de Season 13
GameServer\
ConnectServer\
DataServer\
JoinServer\
EventServer\
Configura el servidor S13 apuntando a una base de datos separada (por ejemplo MuOnline_S13_Test) durante las pruebas. No conectes el S13 a tu base de datos de producción hasta que hayas validado toda la migración.
En el archivo GameServer\GameServer.ini, verifica que los parámetros de conexión apunten al entorno de prueba:
[GameServerInfo]
GameServerCode = 0
ServerPort = 55901
ConnectServerIP = 127.0.0.1
ConnectServerPort = 44405
[DataBase]
DBServer = localhost
DBName = MuOnline_S13_Test
→ base de datos de prueba, no producción
DBUser = mu_admin
DBPassword = ****
→ Confirma que SQL Server acepta conexiones mixed-mode si usas autenticación SQL.
3. Migración del esquema de base de datos
Este es el paso más delicado. El esquema de MuOnline cambió significativamente entre S6 y S13. Las diferencias más relevantes incluyen:
- La tabla
Characterincorpora columnas para clases maestras y atributos de S13 (MasterLevel,MasterExp,MasterPoint) - La tabla
CharacterItemstiene un campo ampliado de opciones de ítem (ItemOptionpasó de 32 bits a 64 bits en algunas builds de S13) - Las tablas de Quest (
CharacterQuest,QuestProgress) fueron rediseñadas - Se añaden tablas nuevas para el sistema de Runas y el Inventario de Bodega ampliado
Proceso recomendado:
- Crea la base de datos S13 desde cero usando los scripts de creación de tu build de S13. Esto garantiza que el esquema base sea correcto.
- Exporta los datos de S6 tabla por tabla con
BCPo con scripts deINSERT INTO ... SELECT. - Transforma los datos durante la importación para adaptar diferencias de esquema.
Ejemplo de migración de la tabla Character con transformación de columnas:
-- Insertar personajes de S6 en el esquema S13
-- Las columnas nuevas reciben valores por defecto seguros
INSERT INTO MuOnline_S13_Test.dbo.Character
(
AccountID, Name, cLevel, LevelUpPoint, Class,
Strength, Dexterity, Vitality, Energy, Leadership,
Money, PkCount, CtlCode, MapNumber, MapPosX, MapPosY,
Dir, Resets, MasterLevel, MasterExp, MasterPoint
)
SELECT
s6.AccountID,
s6.Name,
s6.cLevel,
s6.LevelUpPoint,
s6.Class,
s6.Strength,
s6.Dexterity,
s6.Vitality,
s6.Energy,
s6.Leadership,
s6.Money,
s6.PkCount,
s6.CtlCode,
s6.MapNumber,
s6.MapPosX,
s6.MapPosY,
s6.Dir,
ISNULL(s6.Resets, 0),
0 AS MasterLevel,
→ los personajes empiezan sin nivel maestro
0 AS MasterExp,
0 AS MasterPoint
FROM MuOnline_S6_Backup.dbo.Character s6
WHERE s6.AccountID IN (
SELECT memb___id FROM MEMB_INFO WHERE mail_chek = 1
);
→ Filtra solo cuentas verificadas para evitar importar bots o cuentas abandonadas.
> [!CONSEJO] > Ejecuta la migración de tablas en este orden para respetar las dependencias de clave foránea: MEMB_INFO → Character → CharacterItems → MuGuild → MuGuildMember → MuGuildBattle → MuItemStorage. Invertir el orden genera errores de constraint que pueden interrumpir el proceso.
4. Adaptación de archivos de configuración del GameServer
Los archivos de configuración de S13 tienen una estructura diferente a S6. No copies directamente los archivos .ini o .dat de una versión a la otra; en su lugar, aplica tus configuraciones personalizadas sobre los archivos base de S13.
Archivos que requieren revisión y adaptación manual:
| Archivo | Cambio principal respecto a S6 |
|---|---|
ItemBagList.dat | Nuevos rangos de código de ítem para loot de S13 |
MonsterSetBase.txt | Posiciones y atributos de mobs actualizados |
SkillRequire.dat | Árbol de habilidades con clases maestras incorporadas |
ShopItemList.dat | Referencias a ítems que no existen en S6 |
EventCalendar.ini | Nuevos eventos de S13 (Blood Castle 8, Illusion Temple 6) |
Para las tasas de experiencia, drop y configuración de resets, localiza los parámetros equivalentes en el nuevo esquema. Los nombres de las claves cambiaron en algunos archivos. Por ejemplo, en S6 la experiencia se configuraba con ExpRate en GameServer.ini, mientras que en algunas builds de S13 migró a GameServerInfo\ExpMultiplier en un archivo XML separado.
> [!ATENCION] > Los mapas nuevos de S13 (Swamp of Calm, Nars, Vulcanus ampliado) requieren sus propios archivos de gate y spawn. Si no los configuras correctamente, los personajes que intenten acceder quedarán desconectados o bloqueados en coordenadas inválidas. Verifica que MapGate.ini y MonsterSetBase.txt estén completos antes de abrir el servidor.
5. Validación post-migración
Con el servidor S13 de prueba corriendo contra la base de datos migrada, ejecuta las siguientes comprobaciones antes de dar por buena la migración:
Checklist de validación:
- Comparar los conteos de entidades con los registrados en el paso 1. La diferencia debe ser cero o explicable (cuentas filtradas, ítems inválidos eliminados).
- Conectarse con un personaje de cada clase disponible en S6 y verificar que el inventario, habilidades y estadísticas sean correctos.
- Probar el acceso a los mapas principales: Lorencia, Noria, Devias, Atlans, Dungeon, Tarkan.
- Verificar que el sistema de Gremios funciona: crear gremio, invitar miembro, declarar guerra.
- Comprobar que el Castle Siege y los eventos de horario (Blood Castle, Devil Square) cargan sin errores en los logs.
-- Verificar integridad referencial: personajes sin cuenta asociada
SELECT c.Name, c.AccountID
FROM Character c
LEFT JOIN MEMB_INFO m ON c.AccountID = m.memb___id
WHERE m.memb___id IS NULL;
→ Resultado vacío = migración íntegra. Registros presentes = datos huérfanos a limpiar.
-- Verificar ítems migrados sin propietario válido
SELECT i.ItemSlot, i.ItemCode, i.Owner
FROM CharacterItems i
LEFT JOIN Character c ON i.Owner = c.Name
WHERE c.Name IS NULL;
→ Elimina o reasigna estos ítems antes de abrir al público.
La migración de Season 6 a Season 13 requiere paciencia y atención al detalle en cada paso, pero con un proceso ordenado y validaciones intermedias es completamente viable sin pérdida de datos para tus jugadores.
Perguntas frequentes
¿Puedo migrar directamente de S6 a S13 sin pasar por versiones intermedias?
Sí, es posible hacer la migración directa, pero implica más trabajo de adaptación manual en los scripts SQL y en los archivos de configuración del GameServer. Si tienes tiempo disponible, migrar por etapas (S6 → S9 → S13) reduce el riesgo de errores acumulados, ya que cada salto de versión introduce cambios incrementales en el esquema de base de datos.
¿Los personajes y el inventario de los jugadores se conservan?
Los personajes, atributos base y equipamiento se migran correctamente si ejecutas los scripts de conversión en el orden indicado. Sin embargo, algunos ítems exclusivos de S6 que fueron eliminados en temporadas posteriores pueden quedar huérfanos en la base de datos. Debes generar un reporte con la consulta de ítems inválidos y decidir si los conviertes a equivalentes de S13 o los eliminas.
¿Qué sucede con los Gremios y los Rankings durante la migración?
Las tablas de Gremios (MuGuild, MuGuildMember) son compatibles estructuralmente entre S6 y S13 con ajustes menores de columnas. Los rankings de PvP y Resets deben ser recalculados post-migración ejecutando los procedimientos almacenados del nuevo servidor, ya que la lógica de puntuación cambió entre temporadas.
¿Es obligatorio actualizar el cliente de los jugadores?
Sí, el cliente de Season 13 no es compatible con el protocolo de red de Season 6. Los jugadores deberán actualizar su cliente. Se recomienda comunicar la migración con al menos una semana de anticipación, publicar instrucciones claras de actualización y mantener el servidor antiguo en modo de solo lectura durante 48 horas como respaldo temporal.