20/05/2020
Administrar un servidor de DayZ puede ser una experiencia increíblemente gratificante, pero también presenta sus propios desafíos. Uno de los problemas más comunes y frustrantes es mantener los mods del servidor sincronizados con las actualizaciones constantes de la Steam Workshop. Un solo mod desactualizado puede impedir que los jugadores se conecten, generando frustración y tiempo de inactividad. Afortunadamente, existe una solución poderosa para este problema: la automatización. En esta guía completa, te mostraremos cómo crear un sistema que descarga y actualiza automáticamente los mods de tu servidor antes de cada reinicio, asegurando una experiencia de juego fluida para tu comunidad.

¿Qué es la Workshop en DayZ? Aclarando la Confusión
Antes de sumergirnos en los detalles técnicos, es importante aclarar un punto que a menudo confunde a los nuevos jugadores. En DayZ, el término "Workshop" puede referirse a dos cosas muy diferentes:
- El Edificio "Workshop" en el Juego: Se trata de un tipo de edificio industrial que se encuentra disperso por el mapa de Chernarus. Son una buena fuente de botín, especialmente de piezas de vehículos y herramientas. Este no es el Workshop del que hablaremos en esta guía.
- La Steam Workshop: Esta es la plataforma de Steam que permite a los creadores de contenido compartir mods, mapas y otros elementos para los juegos. Para DayZ, la Steam Workshop es el corazón de la comunidad de modding, un lugar donde puedes encontrar desde nuevas armas y vehículos hasta sistemas de construcción de bases mejorados y expansiones de mapas completas. Es esta plataforma la que nos interesa para automatizar nuestro servidor.
El objetivo es asegurar que los mods a los que tu servidor está suscrito en la Steam Workshop se descarguen y actualicen sin intervención manual, eliminando los molestos errores de "versión de PBO incorrecta".
La Solución: Un Script Batch para Dominarlos a Todos
La magia detrás de esta automatización reside en un archivo batch de Windows (`.bat`) modificado. Este script ejecutará una serie de comandos antes de iniciar el servidor de DayZ. A grandes rasgos, el proceso es el siguiente:
- El script utiliza SteamCMD, la versión de línea de comandos de Steam, para iniciar sesión y forzar la descarga de las últimas versiones de todos los mods especificados en una lista.
- Luego, utiliza Robocopy, una herramienta de copia de archivos muy robusta integrada en Windows, para sincronizar (o "espejar") los archivos de mods recién descargados desde la carpeta de la Workshop de Steam a la carpeta de tu servidor DayZ.
- Finalmente, el script recopila los nombres de las carpetas de los mods y los inserta automáticamente en el parámetro de lanzamiento del servidor, para luego iniciar el servidor con todos los mods actualizados y cargados correctamente.
Requisitos Previos
Antes de comenzar, asegúrate de tener lo siguiente:
- Un servidor de DayZ funcionando en una máquina con Windows.
- SteamCMD instalado en tu máquina. Puedes encontrarlo fácilmente buscando en la web.
- Una cuenta de Steam que posea una copia de DayZ.
- Tu archivo `.bat` de inicio del servidor existente, que vamos a modificar.
Paso 1: Modificando tu Archivo de Inicio del Servidor
Abre tu archivo `.bat` de inicio del servidor con un editor de texto como Notepad++. Vamos a añadir y modificar varias secciones.

Definición de Variables
Al principio de tu archivo, donde probablemente ya defines algunas variables, añade el siguiente bloque. Asegúrate de modificar las rutas para que coincidan con tu configuración.
:: ===================================================== :: PARÁMETROS GENERALES :: ===================================================== :: Parámetros del Servidor DayZ set DAYZ_SERVER_LOCATION="C:\Ruta\A\Tu\Servidor" set SERVER_EXE_NAME=DayZServer_x64.exe set LOG_LOCATION="C:\Ruta\A\Tus\Logs" set PORT_NUM=2302 :: Parámetros de BattlEye set BE_FOLDER="%DAYZ_SERVER_LOCATION%\BattlEye" :: ===================================================== :: PARÁMETROS DE ACTUALIZACIÓN DE MODS :: ===================================================== set MOD_LIST="C:\Ruta\A\Tu\Modlist.txt" set STEAM_WORKSHOP="C:\Program Files (x86)\Steam\steamapps\workshop\content\221100" set STEAMCMD_LOCATION="C:\Ruta\A\SteamCMD" set STEAM_USER=TuUsuarioDeSteam set STEAMCMD_DEL=5 setlocal EnableDelayedExpansionExplicación de las variables clave:
MOD_LIST: La ruta completa a un archivo de texto que crearemos más tarde, el cual contendrá la lista de mods a descargar.STEAM_WORKSHOP: La ruta donde Steam descarga el contenido de la Workshop de DayZ (el ID 221100 es el de DayZ). Esta ruta suele ser la predeterminada.STEAMCMD_LOCATION: La ruta a la carpeta donde instalaste SteamCMD.STEAM_USER: Tu nombre de usuario de Steam.
Interrumpiendo el Flujo de Inicio
Busca la sección en tu script que se encarga de reiniciar el servidor. Normalmente se ve algo así:
:killsv taskkill /f /im DayZServer_x64.exe goto startsvVamos a cambiarlo para que, en lugar de iniciar el servidor directamente, primero ejecute nuestro proceso de verificación de mods:
:killsv taskkill /f /im DayZServer_x64.exe goto checkmodsEl Corazón del Script: La Sincronización
Ahora, añade el siguiente bloque de código completo a tu archivo `.bat`. Este es el núcleo de la automatización.

:checkmods cls FOR /L %%s IN (%STEAMCMD_DEL%,-1,0) DO ( cls echo Revisando actualizaciones de mods en %%s segundos... timeout 1 >nul ) echo Leyendo configuracion y actualizando mods de Steam Workshop... @timeout 1 >nul cd %STEAMCMD_LOCATION% for /f "tokens=1,2 delims=," %%g in (%MOD_LIST%) do steamcmd.exe +login %STEAM_USER% +workshop_download_item 221100 "%%g" +quit cls echo ¡Archivos de Steam Workshop actualizados! Sincronizando con el servidor... @timeout 2 >nul cls @for /f "tokens=1,2 delims=," %%g in (%MOD_LIST%) do robocopy "%STEAM_WORKSHOP%\%%g" "%DAYZ_SERVER_LOCATION%\%%h" *.* /mir @for /f "tokens=1,2 delims=," %%g in (%MOD_LIST%) do forfiles /p "%DAYZ_SERVER_LOCATION%\%%h" /m *.bikey /s /c "cmd /c copy @path \"%DAYZ_SERVER_LOCATION%\keys\"" cls echo ¡Sincronizacion completa! @timeout 3 >nul cls set "MODS_TO_LOAD=" for /f "tokens=1,2 delims=," %%g in (%MOD_LIST%) do ( set "MODS_TO_LOAD=!MODS_TO_LOAD!%%h;" ) set "MODS_TO_LOAD=!MODS_TO_LOAD:~0,-1!" ECHO Se iniciara DayZ con los siguientes mods: !MODS_TO_LOAD!% @timeout 3 >nul goto startsvModificando el Inicio del Servidor
Finalmente, asegúrate de que tu sección `:startsv` utilice las variables que hemos creado, especialmente la variable `!MODS_TO_LOAD!` que se genera dinámicamente.
:startsv cls echo Iniciando Servidor de DayZ SA... cd %DAYZ_SERVER_LOCATION% start %SERVER_EXE_NAME% -config=serverDZ.cfg -port=%PORT_NUM% -dologs -adminlog -netlog -freezecheck -BEpath=%BE_FOLDER% -profiles=%LOG_LOCATION% "-mod=!MODS_TO_LOAD!%" :: Puedes añadir un reinicio de BEC o bucles de reinicio aquí si los usas goto killsvPaso 2: Preparando SteamCMD
Para que el script funcione sin problemas, SteamCMD necesita haber iniciado sesión al menos una vez para guardar tus credenciales. Ejecuta `steamcmd.exe` manualmente, escribe `login TUNOMBREDEUSUARIO`, introduce tu contraseña y el código de Steam Guard si te lo pide. Una vez hecho esto, puedes escribir `quit`. La próxima vez que el script lo ejecute, debería iniciar sesión automáticamente.
Paso 3: Creando tu `Modlist.txt`
Este es el archivo de control. Crea un archivo de texto llamado `Modlist.txt` en la ubicación que especificaste en la variable `MOD_LIST`. Dentro de este archivo, cada línea representará un mod, siguiendo un formato estricto: `ID_del_Workshop,@Nombre_de_la_Carpeta_en_el_Servidor`
- ID del Workshop: Es el número que identifica al mod en la página de la Steam Workshop. Lo puedes encontrar en la URL de la página del mod.
- @Nombre de la Carpeta: Es el nombre que tendrá la carpeta del mod dentro de tu directorio del servidor. Es crucial que empiece con una `@`.
Un ejemplo de Modlist.txt se vería así:
1564026768,@Community-Online-Tools 1571965849,@DisableBaseDestruction 1578227776,@Permissions-Framework 2116157322,@DayZ-Expansion-LicensedCon este archivo, el script descargará el mod con ID `1564026768`, y luego sincronizará su contenido a una carpeta llamada `@Community-Online-Tools` en tu servidor. ¡Y hará lo mismo con el resto de la lista!
Comparativa: Gestión Manual vs. Gestión Automatizada
Para entender mejor el beneficio, veamos una tabla comparativa.

| Característica | Método Manual | Método Automatizado |
|---|---|---|
| Activación de Actualización | El administrador debe hacerlo manualmente. | Automático en cada reinicio del servidor. |
| Tiempo de Inactividad | Mayor, depende de la disponibilidad del admin. | Mínimo, solo el tiempo de descarga y reinicio. |
| Riesgo de Error Humano | Alto (olvidar un mod, copiar mal una carpeta). | Muy bajo, el proceso es consistente. |
| Esfuerzo del Administrador | Constante y repetitivo. | Configuración inicial única. |
Preguntas Frecuentes (FAQ)
¿Este script funciona en servidores Linux?
No. Este script está diseñado específicamente para máquinas Windows, ya que utiliza comandos como `taskkill` y `robocopy` que son nativos de este sistema operativo. Para Linux se requeriría un script de shell (`.sh`) con comandos equivalentes.
¿Qué es Robocopy y por qué se utiliza?
Robocopy (Robust File Copy) es una utilidad de línea de comandos de Windows mucho más potente que el comando `copy` tradicional. La usamos por su modificador `/mir`, que "espejea" un directorio. Esto significa que no solo copia los archivos nuevos y actualizados, sino que también elimina de la carpeta de destino cualquier archivo que ya no exista en el origen, manteniendo tus mods perfectamente limpios y sincronizados.

¿Cómo encuentro el ID de un mod de la Workshop?
Ve a la página del mod en la Steam Workshop. Mira la URL en la barra de direcciones de tu navegador. El número al final de la URL es el ID. Por ejemplo: `https://steamcommunity.com/sharedfiles/filedetails/?id=1564026768`. El ID es `1564026768`.
¿Qué pasa si un mod es eliminado de la Workshop?
SteamCMD arrojará un error indicando que no puede encontrar ese ítem, pero el script continuará con los demás mods. Gracias al comando `robocopy` con el modificador `/mir`, la próxima vez que el script se ejecute, la carpeta de ese mod eliminado también será borrada de tu servidor, ya que ya no existe en la carpeta de origen de la Workshop.
Si quieres conocer otros artículos parecidos a Automatiza los Mods de tu Servidor de DayZ puedes visitar la categoría Guías.
