CS2 sunucun sorunsuz çalışıyor, sonra harita değişiyor ve herkes atılıyor: sunucu çöktü. GOTV açıksa ve oyuncular bağlıysa, sorun bu hata. Önce çözüm, sonra nedeni.
Çözüm: tek satır
Aşağıdaki satırı şu dosyaya ekle game/csgo/cfg/server.cfg:
bot_join_delay 15- Botlar artık her harita değişiminden sonra katılmadan önce 15 saniye bekler.
- Çökme, bir oyuncu yeni haritayı hâlâ yüklerken botlar katıldığında olur. Gecikmeyle önce oyuncular yüklenir.
- GOTV açık kalır. Demolar kaydedilmeye, izleyiciler izlemeye devam eder.
- Yeniden başlatmadan uygulamak için RCON üzerinden gönder:
rcon bot_join_delay 15
Laboratuvarımızda: bu ayar olmadan 6 harita değişiminden 3'ü çöktü. Bu ayarla 18'den 0'ı çöktü; maç ortası değişimler, maç sonu değişimler ve canlı mod geçişleri dahil. Her 2hours.gg CS2 sunucusu bu ayarla gelir.
Ne zaman olur
Bunların hepsi aynı anda:
- SourceTV (GOTV) açık:
tv_enable 1 - En az bir gerçek oyuncu bağlı. Sadece botların olduğu bir sunucu hiç çökmedi.
- Level değişiyor: konsoldan seçilen bir harita, changelevel veya map, bir maçın sonu ya da maç sonu oylaması.
Rastgeledir. Testlerimizde harita değişimlerinin yaklaşık yarısı çöktü, canlı sunucularda ise 3 veya daha fazla oyuncu bağlıyken daha sık oldu. Bir değişimi atlatan sunucu bir sonrakinde çökebilir.
Nasıl görünür: harita yüklenirken tüm oyuncular aynı anda düşer ve sunucu logu yeni harita başlamak yerine bir segmentation fault (SIGSEGV) ile biter.
Modlar arasındaki farklar
Her modun Valve config'i, her harita yüklemesinde kaç botun katılacağını belirler. Daha fazla bot katılması, daha fazla çökme ihtimali demektir:
- Deathmatch, Team Deathmatch, Casual: her yüklemede 10'a kadar bot katılır. En riskli olanlar ve en çok çökmeyi burada gördük.
- Competitive: 1 bot. Laboratuvarımızda çözüm olmadan çökmedi, ama daha çok oyunculu canlı sunucular çöktü.
- Çözüm her modda aynı: bot_join_delay, onu neyin başlattığından bağımsız olarak her harita değişimine uygulanan tek bir ayardır.
Asıl hata (merak edenler için)
Bu bir eklenti hatası değil, Valve motor hatası. Metamod ve CounterStrikeSharp kaldırılmışken de çöktü. 2024'ten beri şu adla bildiriliyor: ValveSoftware/csgo-osx-linux#3831. Oradan takip et: Valve'ın yakında düzeltmesini ve bu geçici çözüme gerek kalmamasını umuyoruz.
Debugger ile bulduklarımız:
- Harita değişince SourceTV kapanır ve bağlı oyuncuyu "SourceTV stopped" (HLTVSTOP) nedeniyle düşürür, oysa o bir GOTV izleyicisi değil, normal bir oyuncudur.
- Yarı bağlantısı kopmuş bu oyuncuda boş bir dahili nesne kalır. Sade bir sunucuda motor hemen bunun üzerinde çöker (libengine2.so).
- O adım atlatılırsa, oyun kodu bir saniye sonra botlar yeni haritaya katılırken çöker (libserver.so). bot_join_delay'in önlediği budur ve CounterStrikeSharp sunucularında gördüğümüz tüm çökmeler buydu.
- Metamod olmayan sade bir sunucuda ilk, motor tarafındaki çökmeyi de gördük. bot_join_delay'i henüz buna karşı test etmedik.
İşe yaramayanlar
tv_enable 0oyun sırasında: tüm oyuncuları aynı anda düşürür.- Açılıştan itibaren GOTV kapalı: çökme yok, ama demo da izleme de yok.
tv_delay,tv_delaymapchange,tv_autorecord 0,tv_stoprecord: yine çöküyor. Demoyu durdurmak yetmez: hiç demo kaydı yokken de çöktü.bot_quota 0bir modun _server.cfg dosyasında: her maç yeniden başlatmasında da çalışır ve SourceTV'yi de atabilir, böylece GOTV harita ortasında kaydı durdurur.mapchangelevel yerine: aynı çökme.
Kendi sunucun için tam kurulum
Her sunucuda server.cfg içinde çalıştırdıklarımız:
tv_enable 1
tv_autorecord 1
bot_join_delay 15- Yeniden başlatmadan sonra geri gelmesi için bunu sadece tek seferlik bir RCON komutunda değil, server.cfg içinde tut.
- Test ettiğimiz değer 15 saniye. Yavaş bağlantıdaki oyuncular ya da büyük Workshop haritaları daha uzun yüklenir, bu yüzden daha yüksek bir değer daha güvenlidir ve sadece botların biraz daha geç gelmesi anlamına gelir.
- Aktif olduğunu kontrol etmek için sunucu konsoluna veya RCON'a şunu yaz:
bot_join_delay - Botsuz mu oynuyorsun? Yine de tut: Deathmatch ve Casual gibi modlar varsayılan olarak her harita yüklemesinde bot ekler.
Ya da kurulumu atla: 2hours.gg'deki her CS2 sunucusunda bu çözüm zaten var, GOTV ve demolar açık.