Tu servidor CS2 va bien, cambia el mapa y todos salen expulsados: el servidor se ha caído. Si GOTV está activado y había jugadores conectados, es este bug. Aquí tienes la solución y después la causa.
La solución: una línea
Añade esto a game/csgo/cfg/server.cfg:
bot_join_delay 15- Ahora los bots esperan 15 segundos después de cada cambio de mapa antes de entrar.
- El crash ocurre cuando entran bots mientras un jugador todavía está cargando el nuevo mapa. Con el retraso, los jugadores cargan primero.
- GOTV sigue activado. Las demos se siguen grabando y los espectadores siguen mirando.
- Para aplicarlo sin reiniciar, envíalo por RCON:
rcon bot_join_delay 15
En nuestro laboratorio: sin ella, 3 de 6 cambios de mapa se cayeron. Con ella, 0 de 18, entre cambios a mitad de partida, al final de partida y cambios de modo en directo. Todos los servidores CS2 de 2hours.gg la incluyen.
Cuándo ocurre
Todo esto a la vez:
- SourceTV (GOTV) está activado:
tv_enable 1 - Hay al menos un jugador real conectado. Un servidor solo con bots nunca se cayó.
- Cambia el nivel: un mapa elegido desde la consola, changelevel o map, el final de una partida o la votación de fin de partida.
Es aleatorio. En nuestras pruebas se cayó más o menos la mitad de los cambios de mapa, y en servidores en producción pasaba más a menudo con 3 o más jugadores conectados. Un servidor que sobrevivió a un cambio puede caerse en el siguiente.
Cómo se ve: todos los jugadores se desconectan a la vez durante la carga del mapa, y el log del servidor termina con un fallo de segmentación (SIGSEGV) en lugar de arrancar el nuevo mapa.
Diferencias entre modos
La config de Valve de cada modo fija cuántos bots entran en cada carga de mapa. Más bots entrando significa más posibilidades de crash:
- Deathmatch, Team Deathmatch, Casual: entran hasta 10 bots en cada carga. Los más expuestos, y donde vimos más crashes.
- Competitive: 1 bot. En nuestro laboratorio no se cayó sin la solución, pero sí en servidores en producción con más jugadores.
- La solución es la misma en todos los modos: bot_join_delay es un solo ajuste que se aplica a cada cambio de mapa, lo provoque lo que lo provoque.
El bug real (para curiosos)
Es un bug del motor de Valve, no de un plugin. Se cayó también sin Metamod ni CounterStrikeSharp. Está reportado desde 2024 como ValveSoftware/csgo-osx-linux#3831. Síguelo ahí: esperamos que Valve lo arregle pronto y que este apaño deje de hacer falta.
Lo que encontramos con un depurador:
- Al cambiar de mapa, SourceTV se apaga y desconecta al jugador conectado con el motivo "SourceTV stopped" (HLTVSTOP), aunque sea un jugador normal y no un espectador de GOTV.
- Ese jugador medio desconectado se queda con un objeto interno vacío. En un servidor sin plugins, el motor se cae con él al instante (libengine2.so).
- Si ese paso sobrevive, el código del juego se cae un segundo después, cuando los bots entran en el nuevo mapa (libserver.so). Ese es el que evita bot_join_delay, y fueron todos los crashes que vimos en servidores con CounterStrikeSharp.
- En un servidor sin Metamod también vimos el primer crash, el del motor. Todavía no hemos probado bot_join_delay contra ese.
Lo que no funciona
tv_enable 0durante una partida: desconecta a todos los jugadores a la vez.- GOTV desactivado desde el arranque: sin crash, pero sin demos y sin modo espectador.
tv_delay,tv_delaymapchange,tv_autorecord 0,tv_stoprecord: se siguen cayendo. Parar la demo no basta: se cayó sin ninguna demo grabándose.bot_quota 0en el _server.cfg de un modo: también se ejecuta en cada reinicio de partida y puede expulsar al propio SourceTV, y GOTV deja de grabar a mitad de mapa.mapen lugar de changelevel: el mismo crash.
Una configuración completa para tu propio servidor
Lo que usamos en cada servidor, en server.cfg:
tv_enable 1
tv_autorecord 1
bot_join_delay 15- Déjalo en server.cfg, no solo en un comando RCON puntual, para que siga ahí tras un reinicio.
- 15 segundos es lo que probamos. Los jugadores con conexión lenta o en mapas grandes del Workshop tardan más en cargar, así que un valor más alto es más seguro y solo hace que los bots lleguen un poco más tarde.
- Para comprobar que está activo, escribe en la consola del servidor o por RCON:
bot_join_delay - ¿Juegas sin bots? Déjalo igualmente: modos como Deathmatch y Casual añaden bots en cada carga de mapa por defecto.
O sáltate la configuración: todos los servidores CS2 de 2hours.gg ya tienen la solución, con GOTV y demos activados.
Despliega un servidor CS2 por horas