Din CS2-server går bra, sedan byts kartan och alla kastas ut: servern kraschade. Om GOTV är på och spelare var anslutna är det den här buggen. Här är lösningen, och sedan varför det händer.
Lösningen: en rad
Lägg till det här i game/csgo/cfg/server.cfg:
bot_join_delay 15- Nu väntar bots 15 sekunder efter varje kartbyte innan de går med.
- Kraschen sker när bots går med medan en spelare fortfarande laddar den nya kartan. Med fördröjningen laddar spelarna först.
- GOTV förblir på. Demos fortsätter spelas in, åskådare fortsätter titta.
- För att tillämpa det utan omstart, skicka det via RCON:
rcon bot_join_delay 15
I vårt labb: utan den kraschade 3 av 6 kartbyten. Med den kraschade 0 av 18, vid byten mitt i matchen, byten i slutet av matchen och lägesbyten under spel. Varje CS2-server på 2hours.gg har den från start.
När det händer
Allt detta samtidigt:
- SourceTV (GOTV) är aktiverat:
tv_enable 1 - Minst en riktig spelare är ansluten. En server med bara bots kraschade aldrig.
- Banan byts: en karta vald från konsolen, changelevel eller map, slutet av en match eller omröstningen i slutet av matchen.
Det är slumpmässigt. I våra tester kraschade ungefär hälften av kartbytena, och på liveservrar hände det oftare med 3 eller fler anslutna spelare. En server som klarade ett byte kan krascha vid nästa.
Så ser det ut: alla spelare tappas samtidigt under kartladdningen, och serverloggen slutar med ett segmenteringsfel (SIGSEGV) i stället för att den nya kartan startar.
Skillnader mellan lägen
Varje lägets config från Valve bestämmer hur många bots som går med vid varje kartladdning. Fler bots som går med betyder större risk för krasch:
- Deathmatch, Team Deathmatch, Casual: upp till 10 bots går med vid varje laddning. Mest utsatta, och där vi såg flest krascher.
- Competitive: 1 bot. I vårt labb kraschade det inte utan lösningen, men liveservrar med fler spelare gjorde det.
- Lösningen är densamma i alla lägen: bot_join_delay är en inställning som gäller vid varje kartbyte, oavsett vad som startade det.
Den riktiga buggen (för den nyfikne)
Det är en bugg i Valves motor, inte i ett plugin. Det kraschade även med Metamod och CounterStrikeSharp borttagna. Den har rapporterats sedan 2024 som ValveSoftware/csgo-osx-linux#3831. Följ den där: vi hoppas att Valve fixar den snart så att den här lösningen inte behövs längre.
Det här hittade vi med en debugger:
- När kartan byts stängs SourceTV av och kopplar bort den anslutna spelaren med orsaken "SourceTV stopped" (HLTVSTOP), trots att det är en vanlig spelare och inte en GOTV-åskådare.
- Den halvt bortkopplade spelaren blir kvar med ett tomt internt objekt. På en ren server kraschar motorn på den direkt (libengine2.so).
- Om det steget klaras kraschar spelkoden en sekund senare, när bots går med på den nya kartan (libserver.so). Det är den som bot_join_delay förhindrar, och det var alla krascher vi såg på servrar med CounterStrikeSharp.
- På en ren server utan Metamod såg vi också den första kraschen, den i motorn. Vi har inte testat bot_join_delay mot den än.
Det här fungerar inte
tv_enable 0under en match: tappar alla spelare på en gång.- GOTV av från start: ingen krasch, men inga demos och ingen åskådning.
tv_delay,tv_delaymapchange,tv_autorecord 0,tv_stoprecord: kraschar ändå. Att stoppa demon räcker inte: det kraschade utan någon demo som spelades in alls.bot_quota 0i ett lägets _server.cfg: den körs också vid varje matchomstart och kan kasta ut SourceTV själv, så GOTV slutar spela in mitt på kartan.mapi stället för changelevel: samma krasch.
En komplett setup för din egen server
Det här kör vi på varje server, i server.cfg:
tv_enable 1
tv_autorecord 1
bot_join_delay 15- Ha den i server.cfg, inte bara i ett engångskommando via RCON, så att den finns kvar efter en omstart.
- 15 sekunder är vad vi testade. Spelare med långsam anslutning eller stora Workshop-kartor tar längre tid att ladda, så ett högre värde är säkrare och betyder bara att bots kommer lite senare.
- För att kontrollera att den är aktiv, skriv i serverkonsolen eller via RCON:
bot_join_delay - Spelar ni utan bots? Behåll den ändå: lägen som Deathmatch och Casual lägger till bots vid varje kartladdning som standard.
Eller hoppa över setupen: varje CS2-server på 2hours.gg har redan lösningen, med GOTV och demos påslagna.
Starta en CS2-server per timme