El mayor portal de MU Online de Brasil — desde 2003
Tutorial Avanzado Admin

Wipe parcial vs total en MU Online: cómo hacerlo bien

Entiende la diferencia entre wipe parcial y total en MU Online y ejecuta cada uno con seguridad, preservando cuentas, rankings y economía cuando sea necesario.

GA Gabriel · Actualizado el 30 jun 2024 · ⏱ 22 min de lectura
Respuesta rápida

Pocas decisiones de administración de un servidor de MU Online causan tanto impacto como un wipe. Hecho en el momento correcto y con el método adecuado, un wipe renueva la economía, corrige distorsiones acumuladas y trae jugadores de vuelta a una competencia justa. Hecho de forma apresurada —sin bac

Pocas decisiones de administración de un servidor de MU Online causan tanto impacto como un wipe. Hecho en el momento correcto y con el método adecuado, un wipe renueva la economía, corrige distorsiones acumuladas y trae jugadores de vuelta a una competencia justa. Hecho de forma apresurada —sin backup, sin aviso o borrando la tabla equivocada— destruye la confianza de la comunidad y, en el peor caso, deja la base de datos inconsistente y el servidor imposible de arrancar. Esta guía separa los dos grandes tipos de wipe, muestra exactamente qué toca cada uno en la base y presenta un procedimiento reproducible para ejecutar cada uno con seguridad.

A lo largo del texto los ejemplos usan el schema clásico del MuServer (SQL Server, base MuOnline, tablas como MEMB_INFO, Character, Guild). Los nombres de tabla y columna varían por season/emulador — IGCN, MuEMU, X-Files, Season 6 y las seasons modernas tienen diferencias. Trata cada comando como un ejemplo para adaptar a tu base, nunca como algo para pegar a ciegas en producción.

Requisitos previos

Antes de tocar cualquier tabla, confirma que tienes:

  • Acceso administrativo al SQL Server (SA o una cuenta con permiso de DELETE, TRUNCATE y BACKUP DATABASE) vía SQL Server Management Studio o sqlcmd.
  • Acceso al panel/servicios del servidor para detener GameServer, ConnectServer, JoinServer y cualquier daemon auxiliar (event server, ranking, sitio).
  • Backup completo y probado de la base antes de empezar. Si todavía no tienes un flujo de backup, resuelve eso primero: mira el paso de abajo.
  • Ventana de mantenimiento definida y comunicada a los jugadores.
  • Documentación del schema de tu distribución, para saber qué tablas guardan progreso y cuáles guardan configuración.

Si estás montando el servidor ahora y todavía no tienes esa base, empieza por la guía de cómo crear un servidor de MU Online y vuelve aquí cuando el entorno esté estable.

Qué es el wipe parcial y qué es el wipe total

Los términos se usan de forma suelta en la comunidad, así que vale fijar definiciones operativas:

Wipe total (full wipe / reset de mundo). Borra todos los datos de juego: personajes, ítems, zen, resets, guilds, rankings, warehouse, eventos. En la práctica el servidor recomienza desde cero. Hay dos variantes: preservar las cuentas (MEMB_INFO) para que los jugadores mantengan login y contraseña, o borrar también las cuentas (wipe "hard", raro y agresivo).

Wipe parcial (soft wipe). Pone en cero solo un subconjunto del progreso, preservando el resto. Ejemplos comunes: poner en cero solo los resets y el ranking manteniendo ítems; poner en cero zen y economía manteniendo personajes; remover un ítem específico introducido por bug; o poner en cero solo los puntajes de un evento estacional.

La tabla de abajo resume el alcance típico de cada enfoque. Los nombres de tabla son ejemplos y varían por season/emulador.

DatoTabla típicaWipe parcial (economía)Wipe parcial (resets)Wipe total (mantiene cuentas)
Cuentas/loginMEMB_INFOPreservaPreservaPreserva
PersonajesCharacterPreservaPone en cero resets/levelBorra
ZenCharacter.MoneyPone en ceroPreservaBorra (con el char)
Ítems equipados/inventarioCharacter.InventoryLimpia ítemsPreservaBorra
Warehouse (baúl)warehouseLimpiaPreservaBorra
GuildsGuild, GuildMemberPreservaPreservaBorra
Ranking/resetsCharacter.ResetCount, views de rankPreservaPone en ceroBorra
Eventos (CS, BC)tablas de eventoOpcionalOpcionalBorra

Cuándo hacer cada tipo

Elegir el tipo equivocado es el error más caro. Usa estos criterios:

Haz wipe parcial cuando el problema está localizado. ¿Un dupe bug que inyectó millones de zen? Pon en cero la economía sin borrar personajes. ¿El ranking quedó distorsionado por un exploit de reset? Pon en cero solo los resets y recompón el rank. ¿Un ítem bugueado circulando? Remueve solo ese ítem. El wipe parcial preserva el vínculo emocional del jugador con el personaje y reduce el abandono.

Haz wipe total cuando la distorsión es sistémica e irrecuperable: economía colapsada en varios vectores, ítems ilegítimos esparcidos sin trazabilidad, o un cambio de season/rates tan grande que el progreso antiguo ya no tiene sentido. También es el camino para relanzamientos ("grand opening") planeados para atraer una nueva ola de jugadores.

> Regla práctica: si logras escribir un WHERE que aísle el problema, probablemente un wipe parcial lo resuelve. Si el problema está en todos lados, el wipe total es más honesto y más barato de mantener.

Paso 1 — Backup completo y verificado

Nunca saltes esta etapa. El backup es tu única ruta de vuelta.

-- Backup full de la base de juego antes del wipe
BACKUP DATABASE MuOnline
TO DISK = 'D:\Backups\MuOnline_pre_wipe_2024-04-22.bak'
WITH FORMAT, INIT, NAME = 'PreWipe Full', STATS = 10;
GO

-- (Opcional, recomendado) verificar la integridad del archivo generado
RESTORE VERIFYONLY
FROM DISK = 'D:\Backups\MuOnline_pre_wipe_2024-04-22.bak';
GO

Si hay una base de cuentas separada (algunas distribuciones usan MuOnline para juego y otra para ranking/eventos), haz backup de todas. Copia el .bak a un segundo lugar (otro disco o nube) antes de proseguir.

Paso 2 — Detener todos los servicios

Cierra en este orden, para que nadie logre loguearse durante el proceso y para evitar que el caché del GameServer reescriba datos:

  1. ConnectServer — impide nuevas conexiones de cliente.
  2. GameServer(s) — descarga personajes de la memoria a la base y libera locks.
  3. JoinServer / EventServer / daemons de ranking.
  4. Servicios del sitio que escriben en la base (cash shop, donación, VIP).

Confirma que nada esté conectado al SQL antes de continuar:

-- Verificar sesiones activas en la base de juego
SELECT session_id, login_name, host_name, program_name, status
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID('MuOnline');
GO

Si aparecen sesiones de GameServer, todavía están vivas: detén el proceso antes de seguir. Ejecutar el wipe con el GS encendido es la causa número uno de "hice el DELETE pero los ítems volvieron": el caché en memoria sobrescribió tus cambios en el siguiente shutdown.

Paso 3 — Ejecutar un wipe parcial

Abajo, los tres wipes parciales más pedidos. Adapta los nombres de columna a tu season/emulador y córrelos dentro de una transacción para poder revertir.

Poner en cero la economía (zen) manteniendo personajes

USE MuOnline;
GO
BEGIN TRANSACTION;

-- Poner en cero el zen de todos los personajes
UPDATE Character SET Money = 0;

-- (Opcional) definir un zen inicial por defecto en vez de cero
-- UPDATE Character SET Money = 1000000;

-- Revisa el numero de filas afectadas antes de confirmar
-- Si esta correcto:
COMMIT;      -- o ROLLBACK; si algo parece mal
GO

Poner en cero resets y ranking manteniendo ítems

USE MuOnline;
GO
BEGIN TRANSACTION;

UPDATE Character
SET ResetCount = 0,          -- el nombre de columna varia (Resets, ResetCount, etc.)
    cLevel     = 1,          -- vuelve al nivel 1 (ajusta segun tu regla)
    Experience = 0;

-- Si el ranking esta materializado en una tabla propia, limpiala:
-- TRUNCATE TABLE RankingReset;

COMMIT;
GO

Remover un ítem específico introducido por bug

Los ítems en el MuServer clásico quedan en blobs binarios (Inventory, warehouse), lo que hace la remoción quirúrgica compleja y dependiente del formato de la distribución. Cuando existe una tabla relacional de ítems (algunas seasons modernas), la remoción es directa:

-- Ejemplo: distribucion con tabla relacional de items
DELETE FROM ItemInventory
WHERE ItemGroup = 12 AND ItemIndex = 15;   -- los indices varian por season
GO

Para el formato binario, el camino seguro es usar la herramienta/panel de la propia distribución o un script oficial de limpieza: editar el blob manualmente sin conocer el layout corrompe el inventario entero.

Paso 4 — Ejecutar un wipe total

El wipe total (preservando cuentas) borra los datos de juego manteniendo MEMB_INFO. Hazlo en transacción y respeta el orden de las claves foráneas (borra los hijos antes que los padres).

USE MuOnline;
GO
BEGIN TRANSACTION;

-- 1) Datos dependientes de personaje/guild primero
DELETE FROM GuildMember;
DELETE FROM Guild;
DELETE FROM warehouse;        -- baules/almacen
DELETE FROM AccountCharacter; -- vinculo cuenta<->slots (el nombre varia)

-- 2) Personajes
DELETE FROM Character;

-- 3) Tablas de evento/ranking (los nombres varian por season/emulador)
-- TRUNCATE TABLE Event_CastleSiege;
-- TRUNCATE TABLE Ranking;

-- MEMB_INFO NO se toca: cuentas y contrasenas permanecen.

COMMIT;
GO

Después del COMMIT, es buena práctica reducir/reindexar para que el servidor arranque limpio:

-- Reconstruir indices de las tablas grandes
ALTER INDEX ALL ON MEMB_INFO REBUILD;
GO
DBCC SHRINKDATABASE (MuOnline, 10);   -- opcional, libera espacio del log
GO

Si optas por el wipe "hard" (borrar también las cuentas), incluye DELETE FROM MEMB_INFO; al final, pero evalúalo bien, porque eso obliga a todos a registrarse de nuevo y suele quemar buena parte de la base.

Paso 5 — Preservar lo que importa en un relanzamiento

Un wipe total no tiene por qué ser tierra arrasada. Puedes cargar selectivamente:

  • Nombres de cuenta y guild: exporta MEMB_INFO (login) y la lista de nombres de guild antes del wipe para ofrecer "reserva de nick/guild" en el relanzamiento.
  • Founder rewards: guarda una lista de quién jugó en la season anterior para dar un obsequio de fidelidad en el regreso.
  • Configuraciones: procedimientos, triggers y tablas de configuración NO son progreso, no los borres. El wipe es sobre datos de jugadores, no sobre la estructura de la base.
-- Exportar nombres de guild antes de un wipe total (para reserva en el relanzamiento)
SELECT G_Name, G_Master
INTO GuildNames_Backup_20240422
FROM Guild;
GO

Paso 6 — Arrancar el servidor y validar

Con el wipe concluido:

  1. Arranca JoinServer → ConnectServer → GameServer en el orden inverso al apagado.
  2. Crea un personaje de prueba y valida: nivel/reset en cero (o como se espera), zen correcto, inventario limpio, ranking recomenzando.
  3. Verifica los logs del GameServer por errores de lectura de tabla (indican columna faltante o tipo incompatible).
  4. Solo entonces libera el acceso público.

Errores comunes y soluciones

SíntomaCausa probableSolución
Ítems/zen "vuelven" tras el wipeEl GameServer estaba encendido; el caché reescribió en el shutdownDetén todos los GS antes del wipe y rehaz el procedimiento
Error de foreign key al borrar CharacterTablas hijas (guild, warehouse) todavía referencian al charBorra los dependientes primero; sigue el orden del Paso 4
El servidor no arranca tras el wipe totalUn procedimiento/trigger fue borrado juntoRestaura solo la estructura del backup; no borres objetos de configuración
Los jugadores no logran loguearseMEMB_INFO fue truncada por errorRestaura MEMB_INFO del backup previo al wipe
El ranking muestra datos antiguosView/tabla materializada no fue recalculadaCorre el job de recomputación o TRUNCATE en la tabla de ranking
El DELETE demoró y trabó el servidorTransacción enorme sin batching, log llenoUsa DELETE TOP (N) en lotes o TRUNCATE cuando no hay FK

Lista de verificación de lanzamiento

  • Backup full hecho, copiado a un segundo lugar y verificado con RESTORE VERIFYONLY
  • Tipo de wipe decidido (parcial o total) y alcance documentado
  • Aviso a los jugadores publicado con al menos 7 días de antelación
  • Todos los servicios detenidos (Connect, Game, Join, event, sitio) y sesiones SQL en cero
  • Comandos de wipe probados en transacción, con conteo de filas verificado antes del COMMIT
  • Nombres de cuenta/guild exportados (si es relanzamiento con reserva de nick)
  • Reindex/shrink ejecutados tras el wipe total
  • Personaje de prueba validado (nivel, zen, inventario, ranking)
  • Logs del GameServer sin errores de tabla/columna
  • Backup posterior al wipe (nuevo baseline limpio) realizado antes de liberar el acceso
  • Acceso público reabierto y anuncio de "en el aire" publicado

Preguntas frecuentes

¿El wipe parcial borra las cuentas de los jugadores?

No. Un wipe parcial preserva la tabla MEMB_INFO y normalmente los personajes. Solo pone en cero el progreso elegido —resets, zen, ranking o ítems— manteniendo el login y la contraseña de cada jugador.

¿Cuál es la diferencia práctica entre wipe total y recrear la base?

El wipe total borra todos los datos de juego pero mantiene la estructura y los procedimientos de la base. Recrear la base desde cero también recrea tablas y configuraciones, lo que exige reimportar el schema de tu distribución.

¿Necesito detener el servidor para hacer wipe?

Sí, siempre. GameServer, ConnectServer y cualquier proceso que mantenga conexión con el SQL deben cerrarse antes del wipe, si no el caché en memoria sobrescribe tus cambios y corrompe registros.

¿Cómo aviso a los jugadores sin perder la base?

Anuncia con al menos 7 días de antelación, ofrece recompensas de founder y migra nombres de cuenta/guild. La retención depende más de la comunicación que del wipe en sí.

¿El wipe resuelve la inflación de zen e ítems duplicados?

Un wipe total lo resuelve, porque pone en cero la economía. Un wipe parcial de zen e ítems también ayuda, pero si la causa (dupe bug, drop mal configurado) no se corrige antes, la inflación vuelve en semanas.

GA
Editor de guías y builds

Gabriel cubre gameplay, builds de clases, PvP y progresión. Prueba cada estrategia en un servidor antes de publicar.

Sigue leyendo

Artículos relacionados