El mayor portal de MU Online de Brasil — desde 2003
Tutorial Avanzado Economía

Cómo generar reportes automáticos de economía para tu servidor de MU Online

Arma un pipeline de reportes automáticos que monitorea el Zen en circulación, la inflación de ítems, el drop de jewels y la salud de la economía de tu servidor de MU Online, con consultas SQL listas y alertas configurables.

BR Bruno · Actualizado el 1 ago 2025 · ⏱ 17 min de lectura
Respuesta rápida

Toda economía de un servidor de MU Online tiende a la inflación si nadie está observando los números — el Zen se acumula, las jewels se acumulan, y el ítem que era raro en el lanzamiento se convierte en commodity pocos meses después. La diferencia entre un servidor que mantiene la economía saludable

Toda economía de un servidor de MU Online tiende a la inflación si nadie está observando los números — el Zen se acumula, las jewels se acumulan, y el ítem que era raro en el lanzamiento se convierte en commodity pocos meses después. La diferencia entre un servidor que mantiene la economía saludable por años y uno que "muere" de inflación en pocos meses generalmente no es la tasa de drop configurada inicialmente, sino la capacidad de detectar el desequilibrio a tiempo y actuar. Los reportes automáticos de economía son exactamente esa capacidad: un conjunto de consultas y alertas que corren solas y avisan al administrador antes de que el problema se vuelva visible para todos los jugadores. Este tutorial arma ese pipeline desde cero.

Por qué automatizar los reportes de economía

Mirar la economía "a ojo" — vía feedback de jugadores en Discord o impresión personal del administrador — siempre llega tarde. Cuando los jugadores empiezan a quejarse de que "el precio de todo subió", la inflación ya está en etapa avanzada y la corrección (reducir el drop, agregar un sink de Zen) causa más fricción de la que habría causado si se hubiera hecho a tiempo. Los reportes automáticos, corriendo diaria o semanalmente, dan visibilidad continua y permiten ajustes pequeños y graduales en vez de correcciones bruscas e impopulares.

Métricas esenciales de una economía de MU saludable

MétricaQué mideSeñal de alerta
Zen total en circulaciónSuma del Zen en todas las cuentas + personajesCrecimiento muy por encima del número de jugadores activos
Zen promedio por cuenta activaZen total / cuentas activasSubida constante indica poco "sink" de Zen en el juego
Jewels en circulación (por tipo)Suma de Bless, Soul, Life, Chaos, etc.Crecimiento desproporcionado al número de jugadores
Precio promedio de ítem clave en el mercadoPrecio de venta observado (tienda de jugador/marketplace)Alza constante = inflación; caída brusca = saturación
Distribución de riqueza (top 1% vs. resto)Zen/ítems concentrados en las cuentas más ricasConcentración extrema aleja al jugador nuevo del mercado
Tasa de sink de ZenZen gastado en NPC, reparación, tasas / Zen generado por dropSink muy por debajo de la generación = inflación garantizada

Fuentes de datos: dónde viven los números

La mayoría de los emuladores de MU (IGCN, MuEMU, X-Team) guarda esta información en tablas relativamente previsibles, aunque los nombres varían:

DatoTabla típicaColumna relevante
Zen del personajeCharacterMoney
Zen guardado en el almacén/bancoWarehouse o AccountWarehouseMoney
Inventario de ítemsCharacter_Inventory / Warehouse_ItemsItemIndex, ItemLevel
Log de dropMonsterDropLog (si existe)ItemId, Timestamp
Log de transacción de mercadoMarketLog / PersonalShopLogPrice, ItemId

Si tu emulador no mantiene log de drop o transacción por defecto, vale la pena habilitar ese log vía configuración (la mayoría tiene la opción, aunque desactivada por defecto) antes de necesitarlo — sin historial, solo puedes analizar el estado actual, no la tendencia.

Paso 1 — Consulta de Zen total en circulación

SELECT
    (SELECT COALESCE(SUM(Money), 0) FROM Character) +
    (SELECT COALESCE(SUM(Money), 0) FROM Warehouse) AS zen_total_circulacao,
    (SELECT COUNT(DISTINCT AccountID) FROM Character WHERE LastLogin > NOW() - INTERVAL 7 DAY) AS contas_ativas_7d;

Corre esta consulta diariamente y guarda el resultado en una tabla histórica propia (no en las tablas del juego), para poder comparar la evolución a lo largo del tiempo:

CREATE TABLE eco_report_daily (
    report_date DATE PRIMARY KEY,
    zen_total BIGINT,
    contas_ativas INT,
    zen_medio_por_conta DECIMAL(20,2)
);

Paso 2 — Consulta de jewels en circulación por tipo

SELECT
    ItemIndex,
    CASE ItemIndex
        WHEN 14 THEN 'Jewel of Bless'
        WHEN 15 THEN 'Jewel of Soul'
        WHEN 22 THEN 'Jewel of Life'
        WHEN 31 THEN 'Jewel of Chaos'
        ELSE 'Otro'
    END AS jewel_nome,
    COUNT(*) AS quantidade_total
FROM Character_Inventory
WHERE ItemIndex IN (14, 15, 22, 31)
GROUP BY ItemIndex
ORDER BY quantidade_total DESC;

Ajusta los ItemIndex según la tabla de ítems de tu emulador — los valores anteriores son ilustrativos y varían según season/cliente.

Paso 3 — Detectando concentración de riqueza

SELECT AccountID, SUM(Money) AS zen_conta
FROM Character
GROUP BY AccountID
ORDER BY zen_conta DESC
LIMIT 20;

Compara la suma de esas 20 cuentas con el zen_total_circulacao calculado en el Paso 1. Si las 20 cuentas más ricas concentran, por ejemplo, más del 40% del Zen total, esto ya es señal de desequilibrio que vale la pena investigar — puede ser farm legítimo de jugadores muy dedicados, o puede ser señal de exploit/bot a escala.

Paso 4 — Calculando la tasa de sink de Zen

El "sink" es el Zen que sale de circulación (gastado en NPC, reparación de ítem, tasa de mercado). Si tu emulador no registra esto directamente, una aproximación es comparar el Zen total en dos puntos en el tiempo contra una estimación de generación (drop promedio × jugadores activos):

-- Comparación simple entre dos reportes diarios
SELECT
    d2.report_date,
    d2.zen_total - d1.zen_total AS variacao_zen,
    d2.contas_ativas
FROM eco_report_daily d1
JOIN eco_report_daily d2 ON d2.report_date = d1.report_date + INTERVAL 1 DAY
ORDER BY d2.report_date DESC
LIMIT 30;

Una variación positiva constante y creciente, sin correspondencia con jugadores nuevos, es la señal más directa de inflación en curso.

Paso 5 — Automatizando la ejecución (cron/planificador)

En Linux, programa las consultas vía cron llamando a un script (PHP, Python o incluso un .sql vía mysql -e) que corre las consultas y guarda el resultado en la tabla de historial:

# crontab -e
0 6 * * * /usr/bin/php /var/www/scripts/eco_report_daily.php >> /var/log/mu_eco_report.log 2>&1

El script (eco_report_daily.php) debe: conectarse a la base de datos, correr las consultas del Paso 1 al 4, guardar el resultado en eco_report_daily, y opcionalmente enviar un resumen a un webhook del Discord administrativo.

Paso 6 — Alertas automáticas por umbral

Configura el script para disparar una alerta (webhook de Discord, correo) cuando algún indicador supere un umbral definido:

IndicadorUmbral de alerta sugerido
Variación de Zen total+15% en 7 días sin aumento de jugadores activos
Concentración en las top 20 cuentasPor encima del 40% del Zen total
Jewel específica en circulaciónCrecimiento de +25% en 7 días
Cuentas activas cayendoCaída de 20%+ en la semana
if ($variacao_percentual_zen > 0.15 && $crescimento_jogadores < 0.05) {
    enviarAlertaDiscord("Alerta de inflación: el Zen creció {$variacao_percentual_zen}% sin crecimiento proporcional de jugadores.");
}

Paso 7 — Transformando datos en decisiones

Un reporte solo tiene valor si lleva a una acción. Establece respuestas estándar para cada señal:

Señal detectadaAcción recomendada
Inflación de Zen constanteAgregar sink (tasa de NPC, mayor costo de reset/reforma)
Jewel específica en excesoReducir la tasa de drop de esa jewel en 10-20%
Concentración extrema de riquezaInvestigar las cuentas del tope (farm legítimo vs. exploit)
Caída de jugadores activosRevisar la causa antes de tocar la economía (puede no ser económica)

Paso 8 — Reporte semanal consolidado para el equipo

Además de las alertas diarias automáticas, arma un resumen semanal (aunque sea manual, copiando los números del historial) con un gráfico simple de evolución de Zen total, jewels en circulación y cuentas activas. Compartir este resumen con todo el equipo de administración — no solo quien se encarga de la economía — ayuda a que las decisiones relacionadas (eventos, drop de ítems nuevos) consideren el estado actual de la economía.

Errores comunes y soluciones

SíntomaCausa probableSolución
El reporte no corre automáticamenteCron mal configurado o permiso de archivoPrueba el script manualmente y revisa el crontab
Los números no coinciden con la percepción de los jugadoresLog de mercado/drop desactivado, faltan datosHabilita los logs relevantes en la configuración del emulador
Alertas disparándose demasiado (falso positivo)Umbrales configurados demasiado bajosCalibra los umbrales observando 2-4 semanas de historial primero
Inflación identificada pero sin acciónFalta de proceso de respuesta definidoDocumenta la acción estándar para cada tipo de alerta
Historial incompleto tras una caída del servidorTabla de reporte sin manejo de fallasAgrega log de error y reejecución manual del día perdido

Lista de verificación de implementación del pipeline de reportes

  • Tabla histórica de reportes (eco_report_daily o equivalente) creada.
  • Consultas de Zen total, jewels en circulación y concentración de riqueza validadas.
  • Logs de drop/mercado habilitados en el emulador, si aún no lo estaban.
  • Script de automatización programado vía cron (o equivalente en Windows).
  • Alertas configuradas con umbrales calibrados tras un período de observación.
  • Proceso de respuesta documentado para cada tipo de alerta.
  • Resumen semanal compartido con el equipo de administración.

Con los reportes automáticos monitoreando la salud de la economía, el siguiente paso es usar esos datos para calibrar directamente las tasas de drop y los sistemas de ítems del servidor, cerrando el ciclo entre monitoreo y configuración — un buen punto de partida es revisar las tasas generales en el tutorial de creación de servidor de MU Online.

Preguntas frecuentes

¿Con qué frecuencia debo generar reportes de economía?

Un reporte diario resumido (Zen total en circulación, jewels dropeadas, top farmeadores) y un reporte semanal más completo (comparativo de inflación, distribución de riqueza) cubren bien a la mayoría de los servidores. En períodos de lanzamiento o evento grande, vale la pena revisar diariamente durante al menos dos semanas.

¿Necesito una herramienta de BI cara para esto?

No. La mayor parte del valor viene de consultas SQL bien diseñadas que corren periódicamente, con el resultado exportado a una hoja de cálculo o un dashboard simple (Grafana con conector MySQL, por ejemplo, que es gratuito). Las herramientas de BI de pago solo compensan en servidores muy grandes con equipo dedicado de datos.

¿Qué se considera 'inflación' en el contexto de MU Online?

Es el aumento de la cantidad de Zen e ítems de valor (jewels, ítems excellent/ancient) en circulación sin un aumento proporcional de la demanda, resultando en la caída del poder de compra de cada unidad. Si el precio promedio de una Jewel of Bless en Zen sube consistentemente mes a mes, es señal de inflación.

¿Los reportes de economía ayudan a identificar bots y duplicación de ítems?

Sí, indirectamente. Picos anormales de Zen o ítems en una cuenta específica, o un crecimiento de circulación muy por encima del número de jugadores activos, suelen ser las primeras señales visibles de un bot farmeando a escala o de un exploit de duplicación siendo usado activamente.

¿Vale la pena compartir estos reportes con la comunidad?

Una versión resumida y sin datos sensibles (ej.: 'ajustamos el drop de jewel porque la inflación superó el X%') genera transparencia y confianza. No compartas datos de cuentas individuales ni números que expongan vulnerabilidades explotables por jugadores malintencionados.

BR
Editor de eventos, mapas e ítems

Bruno es especialista en eventos, mapas, bosses y economía de ítems de MU Online. Documenta cada detalle basándose en el juego real.

Sigue leyendo

Artículos relacionados

🎒
Tutorial

Cómo restaurar un ítem perdido por bug en MU Online: guía de soporte y restauración vía base de datos

Aprende el proceso completo para investigar y restaurar ítems perdidos por bug en MU Online, desde el triaje del ticket hasta la restauración segura vía base de datos, sin abrir brechas para el fraude.

14 min · Intermedio ·
🗄️
Tutorial

Cómo instalar SQL Server 2000 para servidor de MU Online clásico

Guía completa para instalar SQL Server 2000 para servidores de MU Online clásico (versiones 0.97/0.99): por qué estas versiones antiguas necesitan SQL 2000 y no versiones modernas, los prerrequisitos de sistema operativo (Windows XP/2003 en máquina virtual recomendado para máxima compatibilidad en Windows 10/11), el paso a paso del instalador de SQL 2000 con las opciones correctas (Mixed Mode, instancia predeterminada), por qué el Service Pack 4 es OBLIGATORIO antes de usar el servidor, cómo usar Enterprise Manager y Query Analyzer (las herramientas de la era SQL 2000), los problemas de compatibilidad en Windows moderno y las soluciones (modo compatibilidad, VM), cómo asegurar el SQL 2000 dado que ya no recibe actualizaciones de seguridad, y cuándo tiene más sentido migrar a SQL 2008 R2 en lugar de usar el SQL 2000.

12 min · Avanzado ·
⚙️
Tutorial

Cómo configurar SQL Server para MU Online — guía completa

Guía completa para configurar SQL Server como base de datos de un servidor de MU Online: por qué SQL Server es la base de datos estándar de MU (y no MySQL ni otros), los pasos exactos para restaurar la base de datos del MuServer (el archivo .bak que viene con la distribución), cómo crear un usuario SQL dedicado para el servidor en lugar de usar 'sa', cómo configurar la conexión ODBC que el MuServer usa para hablar con la base, cómo habilitar el protocolo TCP/IP en SQL Server Configuration Manager, la solución a los 3 errores de conexión más comunes (SQL parado, TCP/IP deshabilitado, Mixed Mode apagado), y cómo hacer backup automático de la base para proteger el progreso de los jugadores.

12 min · Intermedio ·