Hasan Alp Güngör

· Hasan Alp Güngör

CS2'de özel yayın HUD'u nasıl kurulur? Adım adım GSI rehberi

Counter-Strike 2'de Major tarzı bir yayın HUD'unu kurmak için gereken her şey: GSI cfg dosyası, Python sunucusu, OBS ayarı ve en sık karşılaşılan sorunların çözümü.

Turnuva yayınlarında gördüğün o özel arayüzler (takım panelleri, killfeed, bomba sayacı) aslında oyunun kendisinden gelmiyor. Oyunun dışarıya verdiği canlı maç verisini okuyan ayrı bir arayüz, yayın programında oyun görüntüsünün üstüne bindiriliyor. Bu rehberde kendi yazdığım açık kaynak CS2 Major HUD'unu adım adım kurmayı anlatıyorum. Aynı mantık başka GSI tabanlı HUD'lar için de geçerli.

Ne gerekiyor?

  • Counter-Strike 2 (Steam)
  • Python 3 (python.org'dan indirilebilir)
  • OBS Studio ya da tarayıcı kaynağı ekleyebilen başka bir yayın programı
  • HUD dosyaları: github.com/manyaksisko35/CounterStrike2MajorHUD

1. GSI cfg dosyasını oyuna ekle

CS2'nin Game State Integration (GSI) özelliği, maç sırasında oyunun durumunu belirlediğin bir adrese JSON olarak gönderiyor. Bunu açmak için oyunun cfg klasörüne adı gamestate_integration_ ile başlayıp .cfg ile biten bir dosya koyman yeterli. Projedeki gamestate_integration_manyak.cfg dosyasını şu klasöre kopyala:

pathSteam\steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg

Klasörü bulmanın kolay yolu: Steam'de CS2'ye sağ tıkla, Yönet → Yerel dosyalara göz at, sonra game → csgo → cfg. Dosyanın içi şöyle; oyun her 0,1 saniyede bir veriyi 127.0.0.1:3000 adresine gönderiyor:

cfg"Manyaksisko35 GSI v1"
{
 "uri" "http://127.0.0.1:3000"
 "timeout" "5.0"
 "buffer"  "0.1"
 "throttle" "0.1"
 "heartbeat" "30.0"
 "data"
 {
   "provider"            "1"
   "map"                 "1"
   "round"               "1"
   "player_id"           "1"
   "player_state"        "1"
   "player_weapons"      "1"
   "player_match_stats"  "1"
   "allplayers_id"       "1"
   "allplayers_state"    "1"
   "allplayers_weapons"  "1"
   "allplayers_match_stats" "1"
   "phase_countdowns"    "1"
   "allplayers_position" "1"
 }
}

Oyun cfg dosyalarını açılışta okuduğu için CS2 açıksa kapatıp yeniden aç.

2. Python sunucusunu çalıştır

Oyunun gönderdiği veriyi alan küçük bir Flask sunucusu var. Proje klasöründe bir terminal aç ve gerekli paketleri kurup sunucuyu başlat:

bashpip install -r requirements.txt
python main.py

Çalıştığını görmek için tarayıcıda http://127.0.0.1:3000 adresini aç; "CS2 GSI Sunucusu Aktif" yazısı görmelisin. Maç sırasında http://127.0.0.1:3000/canli_veri adresi de HUD'un okuduğu sadeleştirilmiş veriyi gösteriyor. Bir sorun olduğunda ilk bakacağın yer burası.

3. HUD'u OBS'e ekle

  • OBS'te Kaynaklar kutusunda + → Tarayıcı'yı seç.
  • "Yerel dosya" kutusunu işaretle ve projedeki index.html dosyasını seç.
  • Genişliği 1920, yüksekliği 1080 yap. Arka plan şeffaf, ek bir ayar gerekmiyor.
  • Tarayıcı kaynağını oyun yakalama kaynağının üstüne taşı.

HUD saniyede 10 kez sunucuya sorup sadece değişen kısımları güncelliyor, bu yüzden yayında titreme olmuyor. Takım adları ve logoları index.html dosyasının içinde yazılı; kendi maçına göre oradan değiştirebilirsin.

Sık karşılaşılan sorunlar

  • HUD'da hiç veri yok, süre "--:--" kalıyor: cfg dosyasının adının gamestate_integration_ ile başladığını ve doğru klasörde olduğunu kontrol et, sonra CS2'yi yeniden başlat. Sunucunun açık olduğundan emin ol.
  • Takım panelleri boş: oyun, bütün oyuncuların verisini (allplayers) sadece izleyici olarak maçı izlerken gönderiyor; kendin oynarken göndermiyor. Yayın HUD'ları bu yüzden izleyici modu ya da GOTV ile kullanılıyor.
  • "Adres kullanımda" hatası: 3000 portunu başka bir program kullanıyor. main.py'deki portu, cfg'deki uri satırını ve index.html'deki adresi aynı yeni porta çevir.
  • Silah ikonları görünmüyor: ikonlar internetten yükleniyor. İnternet yoksa ya da adres değiştiyse HUD silahın adını yazıya çeviriyor, çalışmaya devam ediyor.

HUD'u kurmadan önce nasıl göründüğüne bakmak istersen, proje sayfasında örnek bir maçla çalışan canlı demosu var. Kod GitHub'da açık; nasıl yazdığımı da ayrı bir yazıda anlattım.

Proje sayfasıCS2 Major HUDOyun yayın arayüzü

Diğer yazılar