El mayor portal de MU Online de Brasil — desde 2003
Tutorial Intermedio Infraestructura

Cómo gestionar el versionamiento de configuraciones del servidor de MU Online

Estructura un sistema de versionamiento para las configuraciones de tu servidor de MU Online usando Git, convenciones de branch y changelog, para revertir cambios con seguridad y coordinar al equipo sin sobrescribir el trabajo ajeno.

RO Rodrigo · Actualizado el 3 ago 2016 · ⏱ 15 min de lectura
Respuesta rápida

Las configuraciones de un servidor de MU Online cambian todo el tiempo: tasas de drop, cooldown de skills, eventos estacionales, ítems nuevos, balanceo de clases. Sin un sistema de versionamiento, cada cambio es un riesgo silencioso: un archivo editado por error, sin backup reciente, puede tumbar el

Las configuraciones de un servidor de MU Online cambian todo el tiempo: tasas de drop, cooldown de skills, eventos estacionales, ítems nuevos, balanceo de clases. Sin un sistema de versionamiento, cada cambio es un riesgo silencioso: un archivo editado por error, sin backup reciente, puede tumbar el servidor o romper la economía sin que nadie sepa exactamente qué cambió o cómo revertirlo. Este tutorial muestra cómo estructurar el versionamiento de las configuraciones de tu servidor usando Git, convenciones de commit y branch, y un flujo de changelog que permite al equipo trabajar en paralelo sin pisarse el trabajo unos a otros.

Por qué versionar las configuraciones del servidor

Un servidor de MU típico tiene decenas de archivos de configuración dispersos (drop rates, skills, eventos, ítems, NPCs, spawns) y con frecuencia más de una persona los edita: el dueño, un GM de eventos, un desarrollador de scripts. Sin versionamiento, la única forma de saber "qué cambió desde ayer" es comparar archivos manualmente o confiar en la memoria de quien editó. Con Git, cada cambio queda registrado con autor, fecha, motivo (mensaje de commit) y diff exacto, y revertir un cambio problemático se convierte en cuestión de segundos, no de reconstruir todo desde cero a partir de un backup antiguo.

Qué versionar y qué no versionar

Tipo de archivo¿Versionar en Git?Motivo
Configuraciones de drop, skills, ítems (.txt/.ini/.xml)Texto plano, cambia con frecuencia, necesita historial
Scripts de eventos (Lua, JS, etc.)Código, se beneficia directamente del control de versiones
Base de datos (cuentas, personajes, ítems en juego)NoCambia cada segundo en producción, no encaja en diffs de texto
Archivos binarios grandes (cliente, BMD, texturas)No (o Git LFS)El tamaño y la frecuencia de cambio hacen inviable el Git puro
Secretos (contraseñas de base de datos, claves de API, tokens)No (nunca en texto plano)Riesgo de fuga de seguridad; usa variables de entorno o un secrets manager

Paso 1 — Estructurar el repositorio de configuraciones

Crea un repositorio dedicado (separado del código del emulador, si es posible) solo para las configuraciones que tu equipo edita con frecuencia. Una estructura de carpetas típica:

mu-config/
├── gameserver/
│   ├── drop-rates.ini
│   ├── skill-cooldown.txt
│   └── item-list.xml
├── events/
│   ├── devil-square.ini
│   └── blood-castle.ini
├── changelog/
│   └── CHANGELOG.md
└── README.md

Paso 2 — Inicializar Git y definir el .gitignore

cd mu-config
git init
git add .
git commit -m "Configuración inicial versionada"

En el .gitignore, excluye cualquier archivo que contenga secretos o datos volátiles:

*.log
*password*
*secret*
database-credentials.ini

Paso 3 — Definir la convención de mensajes de commit

Una convención simple evita mensajes vagos como "ajustes" o "fix". Sugerencia de patrón:

PrefijoUsoEjemplo
feat:Nueva configuración/sistemafeat: agrega configuración de sockets nivel 5
fix:Corrección de bug de configuraciónfix: corrige el cooldown del stun del Dark Knight
balance:Ajuste de balanceobalance: reduce la drop rate de Excellent en 15%
event:Configuración de evento estacionalevent: activa tasas dobles para Devil Square de julio
revert:Reversión de un cambio anteriorrevert: vuelve el cooldown del Berserker al valor anterior

Paso 4 — Estrategia de branches

Para servidores con equipo (más de una persona editando configuración), una estrategia de branch simple funciona mejor que la complejidad innecesaria:

  • main — configuración estable, es lo que está corriendo en producción ahora.
  • staging — cambios probados en el servidor de pruebas, esperando aprobación para pasar a producción.
  • feature/nombre-del-cambio — branches cortas para un cambio específico (ej.: feature/nuevo-evento-halloween).

El flujo: se crea la branch de feature, se edita y prueba en ambiente de prueba, se abre un merge/pull request hacia staging, se valida, y solo entonces se hace merge a main y se aplica en el servidor de producción.

Paso 5 — Automatizar el deploy de la configuración

Después de que un cambio se aprueba en main, lo ideal es tener un script (o un pipeline de CI simple) que copie los archivos versionados al directorio real del GameServer y reinicie el servicio afectado, evitando la copia manual propensa a errores:

#!/bin/bash
# deploy-config.sh
git pull origin main
cp gameserver/*.ini /srv/muserver/Data/
cp gameserver/*.txt /srv/muserver/Data/
systemctl restart muserver-gameserver
echo "Configuración implementada: $(git rev-parse --short HEAD)"

Paso 6 — Mantener un changelog legible para la comunidad

Además del historial técnico de Git, mantén un CHANGELOG.md con lenguaje orientado al jugador, para publicar en redes sociales y en el sitio del servidor:

## [2024-06-10]
- Reducida la tasa de drop de ítems Excellent en 15% (balanceo de economía).
- Corregido el cooldown del Stun del Dark Knight (estaba 3s por debajo de lo configurado).
- Agregado evento especial de fin de semana con tasas dobles.

Paso 7 — Revertir un cambio problemático

Si una configuración publicada rompe algo (la economía, el balanceo, o incluso el arranque del servidor), Git permite revertir rápidamente:

git log --oneline -- gameserver/drop-rates.ini
git revert <hash-del-commit-problemático>
./deploy-config.sh

Esto restaura el archivo al estado anterior sin perder el historial del intento (el commit de reversión queda registrado, explicando el motivo).

Paso 8 — Controlar el acceso y los permisos del equipo

No todo GM o colaborador debe tener permiso de merge directo a main. Usa permisos de branch protegida (disponibles en GitHub, GitLab y Gitea) exigiendo la revisión de al menos otra persona antes de cualquier merge a producción; esto evita que un cambio de balanceo mal calculado salga al aire sin una segunda mirada.

Errores comunes y soluciones

SíntomaCausa probableSolución
Nadie sabe qué cambió en la última semanaSin versionamiento o commits vagosAdopta una convención de commit y un changelog obligatorio
Un secreto (contraseña de base de datos) se filtró en el repositorioArchivo de credenciales commiteado por errorElimínalo del historial con git filter-repo y rota la contraseña de inmediato
El deploy aplicó la configuración equivocadaDeploy manual sin confirmar branch/commitAutomatiza el deploy y confirma siempre el hash antes de aplicar
Dos GMs sobrescribieron la configuración uno del otroEdición directa sin branch/PRExige branch y revisión antes de hacer merge a main
La reversión no resolvió el problemaEl cambio problemático estaba en más de un archivoRevisa el diff completo del commit, no solo el archivo sospechoso

Lista de verificación de versionamiento de configuraciones

  • Repositorio Git dedicado a las configuraciones creado.
  • .gitignore configurado para excluir secretos y logs.
  • Convención de mensajes de commit definida y documentada.
  • Estrategia de branches (main/staging/feature) adoptada por el equipo.
  • Script de deploy automatizado probado.
  • Changelog legible mantenido para la comunidad.
  • Branch de producción protegida con exigencia de revisión.
  • Proceso de reversión probado al menos una vez en ambiente de prueba.

Con el versionamiento estructurado, tu equipo gana confianza para probar cambios de balanceo sin miedo a romper la producción de forma irreversible. Si todavía estás definiendo la infraestructura básica del servidor, revisa el tutorial de creación de servidor de MU Online antes de aplicar este flujo de versionamiento.

Preguntas frecuentes

¿Necesito saber Git avanzado para versionar las configuraciones del servidor?

No. El uso básico (add, commit, push, branch, revert) ya resuelve el 90% de las necesidades de un servidor de MU. Comandos avanzados como el rebase interactivo rara vez son necesarios para este tipo de proyecto.

¿Debo versionar la base de datos junto con los archivos de configuración?

No directamente. Las bases de datos cambian constantemente con el juego en producción (cuentas, personajes, ítems) y no encajan bien en Git. Versiona solo los archivos de configuración estáticos y mantén backups separados y programados de la base de datos.

¿Cómo revierto una configuración que rompió el servidor?

Si versionaste con Git, basta con usar 'git revert' o hacer checkout del commit estable anterior en ese archivo específico, reiniciar el servicio afectado y confirmar la normalización. Sin versionamiento, dependes de backups manuales, que suelen estar desactualizados.

¿Dónde debo alojar el repositorio de configuraciones: GitHub público, privado o self-hosted?

Siempre en un repositorio privado, ya sea en GitHub, GitLab o un Gitea self-hosted. Los archivos de configuración de un servidor de MU suelen contener información sensible (contraseñas de base de datos, claves, IPs) que nunca debe quedar pública.

¿Vale la pena usar branches separadas para cada evento o temporada?

Sí, sobre todo si haces pruebas de balanceo estacionales. Una branch por temporada/evento permite probar cambios de forma aislada y hacer merge a la branch principal solo cuando esté aprobado, sin arriesgar la configuración estable en producción.

RO
Fundador y editor jefe

Rodrigo mantiene ViciadosMU desde los inicios del portal. Especialista en creación y administración de servidores de MU Online, historia del juego y la evolución de las seasons — escribió buena parte del archivo antes de 2024.

Sigue leyendo

Artículos relacionados

🔧
Tutorial

Cómo versionar la configuración de tu servidor de MU Online con Git

Descubre por qué y cómo versionar las configuraciones de tu servidor de MU Online con Git, qué incluir, qué jamás commitear y cómo revertir cambios con seguridad.

15 min · Intermedio ·
🧯
Tutorial

Cómo probar el plan de recuperación ante desastres de tu servidor de MU Online

Aprende a armar y, sobre todo, probar de verdad un plan de recuperación ante desastres (DRP) para tu servidor de MU Online, con simulaciones de falla de base de datos, de host y de corrupción de datos, y métricas de RTO y RPO.

15 min · Avanzado ·
🏰
Tutorial

Cómo configurar el Castle Siege en tu servidor de MU Online

Guía completa para configurar el Castle Siege (Cerco al Castillo) en tu servidor de MU Online: las 4 fases del Castle Siege (registro, período de candidatura, preparación, y la batalla), los archivos de configuración del EventServer donde se define el horario, cómo configurar el horario semanal del evento, la cuota de inscripción en Zen para que las guilds participen, la duración de la batalla, los beneficios que recibe la guild ganadora (impuestos, áreas exclusivas, buffs de servidor), la relación entre Castle Siege y el sistema de Crywolf en Season 6, los errores más comunes en la configuración del Castle Siege (guilds que no pueden inscribirse, batalla que no inicia, impuestos que no cobran), cómo probar el Castle Siege sin esperar el sábado, y las mejores prácticas de horario para maximizar la participación de jugadores.

12 min · Avanzado ·