Gabble'ı sadece tarayıcıdan kullanan oyuncuların sık dile getirdiği bir istek vardı: arka planda çalışan, oyunu yavaşlatmayan, sahici bir masaüstü uygulaması. Discord'un 400–600 MB RAM yutmasına, TeamSpeak'in 2006 arayüzüne alternatif bir şey. Bu yazıda Gabble Desktop'ın nasıl inşa edildiğini, neden Electron yerine WebView2 seçtiğimizi ve iki dünya arasındaki köprüyü nasıl kurduğumuzu anlatıyoruz.

Tek Cümleyle

Gabble Desktop; WPF ile yazılmış ince bir C# kabuğu içinde, Microsoft WebView2 kontrolü aracılığıyla mevcut web uygulamasını barındırır. Ayrı bir backend yok, ayrı bir ses katmanı yok — sadece yerel işletim sistemi entegrasyonu.

Neden Electron Değil?

Masaüstü uygulaması geliştirmek istediğinizde akla gelen ilk seçenek genellikle Electron oluyor. GitHub, VS Code, Discord — hepsi Electron üzerine kurulu. Peki neden biz farklı bir yol seçtik?

  • Electron = İki Chromium
    Electron, kendi Chromium kopyasını bundlar. Zaten Chrome yüklü bir sistemde ikinci bir tarayıcı motoru belleğe giriyor. 150–250 MB sadece motor için harcanıyor.
  • Güncelleme Yükü
    Electron uygulamaları güvenlik yamaları için Chromium sürümünü kendileri güncellemek zorunda. WebView2 ise sistemdeki Edge ile birlikte Windows Update üzerinden otomatik güncelleniyor.
  • WebView2 = Paylaşılan Motor
    WebView2, Windows 10/11'de zaten yüklü olan Edge (Chromium) motorunu paylaşarak kullanır. Ek indirme yok, ek bellek tüketimi minimal.
  • Native C# Entegrasyonu
    WPF + WebView2 ile global klavye hook'ları, sistem tepsisi, bildirimler ve pencere yönetimi doğrudan .NET API'leriyle yapılabiliyor. Node.js gerektirmiyor.
~45 MB Gabble Desktop RAM (idle)
~380 MB Discord RAM (idle)
0 ms Ekstra ses gecikmesi
< 8 MB Yükleyici boyutu

Mimari: WPF + WebView2 + WebRTC

Sistem üç katmandan oluşuyor. Her katmanın sorumluluğu net biçimde ayrılmış durumda.

WPF / C#
Native Kabuk
WebView2
Edge Motoru
gabble.tr
Web Uygulaması
Global PTT Hook
Sistem Tepsisi
Always-on-Top
chrome.webview API
postMessage köprüsü
WebRTC / Mediasoup
SignalR / Chat

Masaüstü Uygulamasının Kazandırdıkları

  • Odak Bağımsız PTT
    Oyun tam ekranda bile çalışıyor. Global hook, hangi pencere açık olursa olsun tuşu yakalar.
  • Sistem Tepsisi Entegrasyonu
    Mikrofon durumu, konuşan kişi sayısı ve oda bilgisi Windows sistem tepsisinde anlık güncelleniyor.
  • Always-on-Top Mini Mod
    Küçük bir yüzen pencereyle oyununuzun üzerinde kim konuşuyor görebilirsiniz, tıklanamaz modda.
  • Otomatik Başlatma
    Windows başlangıcında çalışır, arka planda bekler. Oyunu açtığınızda Gabble zaten hazır.

Mikrofon İzni ve Gizlilik

WebView2 varsayılan olarak mikrofon iznini tarayıcı gibi sorar. Gabble Desktop bu izni açılışta tek sefer alıyor ve WPF katmanında saklıyor. Kullanıcı her oturumda tekrar onay vermek zorunda değil. İzinler Chrome profili gibi persist ediliyor.

Sıradaki Adımlar

Gabble Desktop şu an erken erişim aşamasında. Aktif olarak geliştirilen özellikler:

  • Oyun sesini algılayan akıllı PTT (VAD entegrasyonu)
  • Özelleştirilebilir mini panel — konum ve şeffaflık ayarı
  • Oyun adına göre otomatik oda önerileri
  • macOS desteği (yakında)
GD
Gabble Geliştirici Ekibi

Gabble'ın tüm teknik altyapısını inşa eden ekip. WebRTC, Mediasoup, SignalR ve masaüstü entegrasyonu üzerine çalışıyoruz. Sorularınız için Gabble üzerinden bize ulaşabilirsiniz.