Játékszerverek óránként. Csak akkor fizetsz, amikor játszol.

A CS2 szerver összeomlik pályaváltáskor (GOTV bekapcsolva): az egysoros megoldás

A CS2 szervered rendben fut, aztán pályát vált, és mindenkit kidob: a szerver összeomlott. Ha a GOTV be van kapcsolva és játékosok voltak csatlakozva, akkor ez a hiba. Először a megoldás, aztán az ok.

A megoldás: egy sor

Add hozzá ezt a sort a következő fájlhoz game/csgo/cfg/server.cfg:

bot_join_delay 15
  • A botok mostantól minden pályaváltás után 15 másodpercet várnak, mielőtt csatlakoznak.
  • Az összeomlás akkor történik, amikor botok csatlakoznak, miközben egy játékos még tölti az új pályát. A késleltetéssel a játékosok töltenek be először.
  • A GOTV bekapcsolva marad. A demók továbbra is rögzülnek, a nézők továbbra is néznek.
  • Újraindítás nélküli alkalmazáshoz küldd el RCON-on: rcon bot_join_delay 15

A laborunkban nélküle 6 pályaváltásból 3 összeomlott. Vele 18-ból 0, meccs közbeni váltásoknál, meccs végi váltásoknál és élő módváltásoknál is. Minden 2hours.gg CS2 szerver ezzel érkezik.

Mikor fordul elő

Mindez egyszerre:

  • A SourceTV (GOTV) be van kapcsolva: tv_enable 1
  • Legalább egy valódi játékos csatlakozva van. Egy csak botokkal futó szerver soha nem omlott össze.
  • Pályaváltás történik: a konzolból választott pálya, changelevel vagy map, egy meccs vége, vagy a meccs végi szavazás.

Véletlenszerű. A tesztjeinkben a pályaváltások kb. fele összeomlott, élő szervereken pedig gyakrabban jött elő 3 vagy több csatlakozott játékosnál. Egy szerver, amely túlélt egy váltást, a következőnél összeomolhat.

Hogy néz ki: a pálya betöltése közben minden játékos egyszerre esik ki, és a szerver log egy szegmentálási hibával (SIGSEGV) ér véget az új pálya indulása helyett.

Különbségek a módok között

Minden mód Valve configja meghatározza, hány bot csatlakozik minden pályabetöltéskor. Több csatlakozó bot több esélyt jelent az összeomlásra:

  • Deathmatch, Team Deathmatch, Casual: minden betöltéskor legfeljebb 10 bot csatlakozik. Ezek a leginkább kitettek, itt láttuk a legtöbb összeomlást.
  • Competitive: 1 bot. A laborunkban a javítás nélkül sem omlott össze, de a több játékossal futó élő szerverek igen.
  • A megoldás minden módban ugyanaz: a bot_join_delay egyetlen beállítás, amely minden pályaváltásra érvényes, bármi indította is.

A valódi hiba (a kíváncsiaknak)

Ez Valve motorhiba, nem plugin hiba. Metamod és CounterStrikeSharp nélkül is összeomlott. 2024 óta jelentik, itt: ValveSoftware/csgo-osx-linux#3831. Kövesd ott: reméljük, a Valve hamarosan javítja, és ez a kerülőmegoldás feleslegessé válik.

Amit debuggerrel találtunk:

  • Pályaváltáskor a SourceTV leáll, és "SourceTV stopped" (HLTVSTOP) indokkal lecsatlakoztatja a csatlakozott játékost, pedig ő normál játékos, nem GOTV néző.
  • Ennél a félig lecsatlakozott játékosnál egy üres belső objektum marad. Egy alap szerveren a motor azonnal összeomlik rajta (libengine2.so).
  • Ha ez a lépés túléli, a játékkód egy másodperccel később omlik össze, amikor a botok csatlakoznak az új pályára (libserver.so). Ezt előzi meg a bot_join_delay, és ez volt minden összeomlás, amit CounterStrikeSharp szervereken láttunk.
  • Egy Metamod nélküli alap szerveren az első, motor oldali összeomlást is láttuk. A bot_join_delay-t ez ellen még nem teszteltük.

Ami nem működik

  • tv_enable 0 játék közben: minden játékost egyszerre kidob.
  • GOTV kikapcsolva induláskor: nincs összeomlás, de nincs demó és nincs nézés sem.
  • tv_delay, tv_delaymapchange, tv_autorecord 0, tv_stoprecord: továbbra is összeomlik. A demó leállítása nem elég: demórögzítés nélkül is összeomlott.
  • bot_quota 0 egy mód _server.cfg fájljában: minden meccs újraindításkor is lefut, és magát a SourceTV-t is kirúghatja, így a GOTV a pálya közepén leállítja a rögzítést.
  • map changelevel helyett: ugyanaz az összeomlás.

Teljes beállítás saját szerverhez

Amit minden szerverünkön futtatunk, a server.cfg-ben:

tv_enable 1
tv_autorecord 1
bot_join_delay 15
  • Tartsd a server.cfg-ben, ne csak egy egyszeri RCON parancsban, hogy újraindítás után is visszajöjjön.
  • 15 másodpercet teszteltünk. A lassú kapcsolatú játékosok vagy a nagy Workshop pályák tovább töltenek, így a magasabb érték biztonságosabb, és csak annyit jelent, hogy a botok kicsit később érkeznek.
  • Hogy ellenőrizd, aktív-e, írd be a szerver konzolba vagy RCON-ba: bot_join_delay
  • Botok nélkül játszol? Akkor is tartsd meg: az olyan módok, mint a Deathmatch és a Casual, alapból botokat adnak hozzá minden pályabetöltéskor.

Vagy hagyd ki a beállítást: a 2hours.gg minden CS2 szerverén már benne van a javítás, bekapcsolt GOTV-vel és demókkal.

Indíts óradíjas CS2 szervert

Lásd még

← Vissza az összes útmutatóhoz