Bloga Dön

HTTP Polling'i Bırakın: Real-Time Backend'ler için Unreal Engine WebSockets Rehberi

Yayınlanma tarihi 22 Şubat 2026
HTTP Polling'i Bırakın: Real-Time Backend'ler için Unreal Engine WebSockets Rehberi Yapay zekâ yardımıyla oluşturuldu

Her Multiplayer oyun geliştiricisi, standart Unreal Engine replication sisteminin yetersiz kaldığı bir noktaya ulaşır. Global bir chat, canlı Matchmaking kuyruğu veya real-time bir ticaret sistemi istiyorsanız, HTTP polling kullanmak Game Thread'inizi boğacak ve sunucunuzu gereksiz isteklerle yoracaktır.

HTTP, real-time oyun verileri için değil, durumsuz belge alımı için tasarlanmıştır. Sunucuyu her 500ms'de bir sorgulamak devasa bir overhead yaratır. Sadece HTTP handshake bile değerli milisaniyeleri boşa harcar ve 10.000 eşzamanlı oyuncuda Backend altyapınız anında çöker.

Çözüm WebSockets. WebSocket, tek bir TCP bağlantısı üzerinden kalıcı ve full-duplex bir iletişim kanalı sağlar. Bağlantı kurulduktan sonra, istemci ve sunucu birbirlerine anında veri itebilir ve 50ms altı latency değerlerine ulaşılabilir.

Bu Unreal Engine WebSockets rehberinde, C++ kullanarak yerleşik modülü nasıl uygulayacağınızı, threading işlemlerini güvenli bir şekilde nasıl yöneteceğinizi, JSON serileştirmeyi ve oyunu çökertmeden bir Backend sunucusuna nasıl bağlanacağınızı öğreneceğiz.

Standart Replication Neden WebSockets'in Yerini Tutamaz?

Adım 1: Modülleri Etkinleştirme

YourProjectName.Build.cs dosyanıza WebSockets ve Json modüllerini ekleyin.

PublicDependencyModuleNames.AddRange(new string[] { 
    "Core", "CoreUObject", "Engine", "InputCore", "WebSockets", "Json", "JsonUtilities"
});

Adım 2: Bileşen Header Dosyası

UActorComponent kullanarak bir yapı oluşturalım. IWebSocket.h dosyasını dahil edin ve delegeleri tanımlayın.

// Bağlantı ömrünü yönetmek için TSharedPtr kullanıyoruz
TSharedPtr<IWebSocket> WebSocket;

Adım 3: Bağlantı Mantığı

Connect() çağrısından önce callback fonksiyonlarını bağlamak kritiktir.

WebSocket = FWebSocketsModule::Get().CreateWebSocket(ServerURL, TEXT("wss"));

Adım 4: Game Thread Tuzağı

IWebSocket callback'leri arka planda (background thread) çalışır. Buradan UI veya Actor güncellemeye çalışmak oyunun çökmesine neden olur. AsyncTask kullanarak işlemi Game Thread'e geri döndürmelisiniz.

AsyncTask(ENamedThreads::GameThread, [this, Message]() {
    OnMessageReceived.Broadcast(Message);
});

Backend Gerçekliği: Sunucu Tarafı Neden Daha Zor?

En İyi Pratikler

  1. Exponential Backoff: Yeniden bağlanırken sunucunuzu DDoS etmeyin.
  2. Üretimde Daima WSS: Güvenlik için ws:// kullanmaktan kaçının.
  3. Küçük Payload'lar: JSON'u minimize edin veya binary veri kullanın.
  4. Heartbeats: Bağlantının kopup kopmadığını Ping/Pong ile kontrol edin.
  5. Sunucu Tarafı Doğrulama: İstemci verisine asla güvenmeyin, her şeyi Backend'de doğrulayın.