Skip to content

Capitulo 9.11: Solucion de Problemas del Servidor ​


Resumen: Diagnostica y soluciona los problemas de servidor DayZ mas comunes -- fallos de inicio, problemas de conexion, crasheos, spawning de loot y vehiculos, persistencia y rendimiento. Cada solucion aqui proviene de patrones de fallo reales a traves de miles de reportes de la comunidad.


Tabla de Contenidos ​


El servidor no inicia ​

Archivos DLL faltantes ​

Si DayZServer_x64.exe crashea inmediatamente con un error de DLL faltante, instala el ultimo Visual C++ Redistributable for Visual Studio 2019 (x64) desde el sitio oficial de Microsoft y reinicia.

Puerto ya en uso ​

Otra instancia de DayZ u otra aplicacion esta ocupando el puerto 2302. Verifica con netstat -ano | findstr 2302 (Windows) o ss -tulnp | grep 2302 (Linux). Termina el proceso en conflicto o cambia tu puerto con -port=2402.

Carpeta de mision faltante ​

El servidor espera mpmissions/<template>/ donde el nombre de la carpeta coincida exactamente con el valor de template en serverDZ.cfg. Para Chernarus, eso es mpmissions/dayzOffline.chernarusplus/ y debe contener al menos init.c.

serverDZ.cfg invalido ​

Un solo punto y coma faltante o un tipo de comilla incorrecto previene el inicio silenciosamente. Presta atencion a:

  • ; faltante al final de lineas de valores
  • Comillas tipograficas en lugar de comillas rectas
  • Bloque {}; faltante alrededor de entradas de clase

Archivos de mod faltantes ​

Cada ruta en -mod=@CF;@VPPAdminTools;@MyMod debe existir relativa a la raiz del servidor y contener una carpeta addons/ con archivos .pbo. Una sola ruta incorrecta previene el inicio.


Los jugadores no pueden conectarse ​

Redireccion de puertos ​

DayZ requiere estos puertos redirigidos y abiertos en tu firewall:

PuertoProtocoloProposito
2302UDPTrafico del juego
2303UDPRed de Steam
2304UDPPuerto de conexion del cliente (clientPort)
27016UDPConsulta del navegador de servidores de Steam

Si cambiaste el puerto base con -port=, todos los demas puertos se desplazan con el mismo offset.

Bloqueo del firewall ​

Agrega DayZServer_x64.exe a las excepciones de tu firewall del SO. En Windows: netsh advfirewall firewall add rule name="DayZ Server" dir=in action=allow program="C:\DayZServer\DayZServer_x64.exe" enable=yes. En Linux, abre los puertos con ufw o iptables.

Desajuste de mods ​

Los clientes deben tener exactamente las mismas versiones de mods que el servidor. Si un jugador ve "Mod mismatch", alguno de los dos lados tiene una version desactualizada. Actualiza ambos cuando cualquier mod reciba una actualizacion del Workshop.

Archivos .bikey faltantes ​

Cada archivo .bikey de cada mod debe estar en el directorio keys/ del servidor. Sin el, BattlEye rechaza los PBOs firmados del cliente. Mira dentro de la carpeta keys/ o key/ de cada mod.

Servidor lleno ​

Verifica maxPlayers en serverDZ.cfg (predeterminado 60).


Crasheos y punteros nulos ​

Acceso a puntero nulo ​

SCRIPT (E): Null pointer access in 'MyClass.SomeMethod' -- el error de script mas comun. Un mod esta llamando a un metodo en un objeto eliminado o no inicializado. Esto es un bug del mod, no una mala configuracion del servidor. Reportalo al autor del mod con el log RPT completo.

Encontrar errores de script ​

Busca en el log RPT SCRIPT (E). El nombre de clase y metodo en el error te dice que mod es responsable. Ubicaciones del RPT:

  • Servidor: directorio $profiles/ (o raiz del servidor si no se establecio -profiles=)
  • Cliente: %localappdata%\DayZ\

Crash al reiniciar ​

Si el servidor crashea en cada reinicio, storage_1/ puede estar corrupto. Detiene el servidor, haz copia de seguridad de storage_1/, elimina storage_1/data/events.bin, y reinicia. Si eso falla, elimina todo el directorio storage_1/ (borra toda la persistencia).

Crash despues de actualizar un mod ​

Revierte a la version anterior del mod. Revisa el registro de cambios del Workshop en busca de cambios incompatibles -- clases renombradas, configuraciones removidas y formatos de RPC cambiados son causas comunes.


El loot no spawnea ​

types.xml no registrado ​

Los items definidos en types.xml no spawnearan a menos que el archivo este registrado en cfgeconomycore.xml:

xml
<economycore>
    <ce folder="db">
        <file name="types.xml" type="types" />
    </ce>
</economycore>

Si usas un archivo de types personalizado (por ejemplo, types_custom.xml), agrega una entrada <file> separada para el.

Etiquetas de category, usage o value incorrectas ​

Cada etiqueta <category>, <usage> y <value> en tu types.xml debe coincidir con un nombre definido en cfglimitsdefinition.xml. Un error tipografico como usage name="military" (minuscula) cuando la definicion dice Military (M mayuscula) previene silenciosamente que el item spawnee.

Nominal puesto en cero ​

Si nominal es 0, la CE nunca spawneara ese item. Esto es intencional para items que solo deben existir via crafteo, eventos o colocacion de admin. Si quieres que el item spawnee naturalmente, pon nominal en al menos 1.

Posiciones de grupo de mapa faltantes ​

Los items necesitan posiciones de spawn validas dentro de edificios. Si un item personalizado no tiene posiciones de grupo de mapa coincidentes (definidas en mapgroupproto.xml), la CE no tiene donde colocarlo. Asigna el item a categorias y usages que ya tengan posiciones validas en el mapa.


Los vehiculos no spawnean ​

Los vehiculos usan el sistema de eventos, no types.xml.

Configuracion de events.xml ​

Los spawns de vehiculos se definen en events.xml:

xml
<event name="VehicleOffroadHatchback">
    <nominal>8</nominal>
    <min>5</min>
    <max>8</max>
    <lifetime>3888000</lifetime>
    <restock>0</restock>
    <saferadius>500</saferadius>
    <distanceradius>500</distanceradius>
    <cleanupradius>200</cleanupradius>
    <flags deletable="0" init_random="0" remove_damaged="1"/>
    <position>fixed</position>
    <limit>child</limit>
    <active>1</active>
    <children>
        <child lootmax="0" lootmin="0" max="1" min="1" type="OffroadHatchback"/>
    </children>
</event>

Posiciones de spawn faltantes ​

Los eventos de vehiculos con <position>fixed</position> requieren entradas en cfgeventspawns.xml. Sin coordenadas definidas, el evento no tiene donde colocar el vehiculo.

Evento desactivado ​

Si <active>0</active>, el evento esta completamente deshabilitado. Ponlo en 1.

Vehiculos danados bloqueando slots ​

Si remove_damaged="0", los vehiculos destruidos permanecen en el mundo para siempre y ocupan slots de spawn. Pon remove_damaged="1" para que la CE limpie los destrozos y spawnee reemplazos.


Problemas de persistencia ​

Bases desapareciendo ​

Las banderas de territorio deben ser refrescadas antes de que su temporizador expire. El FlagRefreshFrequency predeterminado es 432000 segundos (5 dias). Si ningun jugador interactua con la bandera dentro de esa ventana, la bandera y todos los objetos dentro de su radio son eliminados.

Verifica el valor en globals.xml:

xml
<var name="FlagRefreshFrequency" type="0" value="432000"/>

Aumenta este valor en servidores de poca poblacion donde los jugadores inician sesion con menos frecuencia.

Items desapareciendo despues del reinicio ​

Cada item tiene un lifetime en types.xml (segundos). Cuando expira sin interaccion del jugador, la CE lo remueve. Referencia: 3888000 = 45 dias, 604800 = 7 dias, 14400 = 4 horas. Los items dentro de contenedores heredan el lifetime del contenedor.

storage_1/ creciendo demasiado ​

Si tu directorio storage_1/ crece mas alla de varios cientos de MB, tu economia esta produciendo demasiados items. Reduce los valores de nominal en tu types.xml, especialmente para items de alto conteo como comida, ropa y municion. Un archivo de persistencia inflado causa tiempos de reinicio mas largos.

Datos de jugadores perdidos ​

Los inventarios y posiciones de jugadores se almacenan en storage_1/players/. Si este directorio es eliminado o corrompido, todos los jugadores spawnean nuevos. Haz copias de seguridad de storage_1/ regularmente.


Problemas de rendimiento ​

FPS del servidor cayendo ​

Los servidores DayZ apuntan a 30+ FPS para jugabilidad fluida. Causas comunes de FPS bajo del servidor:

  • Demasiados zombis -- reduce ZombieMaxCount en globals.xml (predeterminado 1000, prueba 400-600)
  • Demasiados animales -- reduce AnimalMaxCount (predeterminado 200, prueba 100)
  • Exceso de loot -- baja los valores de nominal en tu types.xml
  • Demasiados objetos de base -- bases grandes con cientos de items estresan la persistencia
  • Mods pesados en scripts -- algunos mods ejecutan logica costosa por frame

Desync ​

Los jugadores que experimentan rubber-banding, acciones retrasadas o zombis invisibles son sintomas de desync. Esto casi siempre significa que los FPS del servidor han caido por debajo de 15. Soluciona el problema de rendimiento subyacente en lugar de buscar una configuracion especifica para el desync.

Tiempos de reinicio largos ​

El tiempo de reinicio es directamente proporcional al tamano de storage_1/. Si los reinicios toman mas de 2-3 minutos, tienes demasiados objetos persistentes. Reduce los valores nominales del loot y establece lifetimes apropiados.


Lectura de archivos de log ​

Ubicacion del RPT del servidor ​

El archivo RPT esta en $profiles/ (si se lanzo con -profiles=) o en la raiz del servidor. Patron de nombre de archivo: DayZServer_x64_<fecha>_<hora>.RPT.

Que buscar ​

Termino de busquedaSignificado
SCRIPT (E)Error de script -- un mod tiene un bug
[ERROR]Error a nivel del motor
ErrorMessageError fatal que puede causar apagado
Cannot openArchivo faltante (PBO, config, mision)
CrashCrash a nivel de aplicacion

Logs de BattlEye ​

Los logs de BattlEye estan en el directorio BattlEye/ dentro de la raiz de tu servidor. Estos muestran eventos de expulsion y baneo. Si los jugadores reportan ser expulsados inesperadamente, revisa aqui primero.


Lista de verificacion de diagnostico rapido ​

Cuando algo sale mal, trabaja a traves de esta lista en orden:

1. Revisa el RPT del servidor en busca de lineas SCRIPT (E) y [ERROR]
2. Verifica que cada ruta de -mod= existe y contiene addons/*.pbo
3. Verifica que todos los archivos .bikey estan copiados a keys/
4. Revisa serverDZ.cfg en busca de errores de sintaxis (punto y coma faltantes)
5. Verifica la redireccion de puertos: 2302 UDP + 27016 UDP
6. Verifica que la carpeta de mision coincida con el valor de template en serverDZ.cfg
7. Revisa storage_1/ en busca de corrupcion (elimina events.bin si es necesario)
8. Prueba con cero mods primero, luego agrega mods uno a la vez

El paso 8 es la tecnica mas poderosa. Si el servidor funciona vanilla pero se rompe con mods, puedes aislar el mod problematico a traves de busqueda binaria -- agrega la mitad de tus mods, prueba, luego reduce.

Released under CC BY-SA 4.0 | Code examples under MIT License