Metin2 gibi çok oyunculu çevrimiçi oyunlar, server-client mimarisi kullanarak çalışır ve iletişim için TCP (Transmission Control Protocol) gibi güvenilir protokolleri kullanır. Bu tür oyunlarda, server ve client arasında veri paketleri gönderilir ve alınır. TCP, bu veri iletimini güvenilir ve sıralı bir şekilde sağlar. Şimdi, Metin2 oyunundaki bir hareket (move) paketinin nasıl işlendiğini adım adım inceleyelim.
1. Adım: Client Tarafında Hareket
Oyuncu karakteri ile bir adım attığında, bu hareket client tarafında bir olay olarak algılanır. Bu olay, oyun motoru tarafından işlenir ve gerekli bilgiler paketlenir.
2. Adım: Paket Hazırlama
Hareket komutu, client tarafında bir paket haline getirilir. Bu paket, genellikle aşağıdaki bilgileri içerir:
Oyuncu kimliği (ID)
Hedef konum (x, y, z koordinatları)
Hareket tipi (yürüme, koşma vb.)
Zaman damgası (timestamp)
Bu bilgiler, belirli bir formatta (protokol) paketlenir.
3. Adım: TCP Bağlantısı Üzerinden Gönderim
Hazırlanan paket, TCP bağlantısı kullanılarak server'a gönderilir. TCP, paketlerin güvenilir bir şekilde iletilmesini sağlar. TCP, her paket için bir doğrulama (acknowledgement) alarak paketlerin kaybolmasını veya sırasının bozulmasını engeller.
4. Adım: Server Tarafında Alım ve İşleme
Server, client'tan gelen hareket paketini TCP bağlantısı üzerinden alır. Paket alındıktan sonra, aşağıdaki işlemler gerçekleştirilir:
Paket doğrulama: Paketin geçerliliği kontrol edilir. (Örneğin, oyuncu ID'si ve zaman damgası kontrol edilir)
Hareketin işlenmesi: Hedef konuma göre oyuncu karakterinin yeni konumu hesaplanır.
Durum güncelleme: Oyuncu karakterinin yeni konumu server'da güncellenir ve bu bilgi tüm diğer ilgili client'lara iletilir.
5. Adım: Diğer Client'lara Bilgilendirme
Server, oyuncunun hareketini diğer client'lara bildirmek için yeni paketler oluşturur ve TCP bağlantısı üzerinden bu paketleri diğer client'lara gönderir. Bu paketler, hareket eden oyuncunun yeni konumunu ve hareket tipini içerir.
6. Adım: Diğer Client'ların Güncellenmesi
Diğer client'lar, server'dan gelen paketleri alır ve kendi oyun motorları tarafından bu paketleri işleyerek ekranlarındaki oyuncu hareketlerini günceller.
TCP ve Socket Sistemi
Metin2 gibi oyunlarda, server ve client arasındaki TCP bağlantısı birer "socket" üzerinden kurulur. Socket, iki cihaz arasında veri iletişimini sağlayan uç noktadır. TCP bağlantısı kurulduğunda, client ve server arasında iki socket oluşturulur:
Client Socket: Client tarafında bağlantıyı temsil eden socket.
Server Socket: Server tarafında bağlantıyı temsil eden socket.
Bu socket'ler üzerinden veri paketleri gönderilir ve alınır. TCP'nin sağladığı güvenilirlik sayesinde paketlerin eksiksiz ve doğru sırayla iletilmesi sağlanır.
Örnek Paket İşlemi
Oyuncu bir adım attığında:
Client'ta olay algılanır ve paket hazırlanır.
Hazırlanan paket, client socket üzerinden server'a gönderilir.
Server, server socket üzerinden paketi alır ve işleme koyar.
Server, diğer client'lara oyuncunun yeni konumunu bildiren paketler gönderir.
Diğer client'lar bu paketleri alır ve kendi ekranlarını günceller.
Bu süreç, oyun boyunca sürekli olarak tekrarlanır ve oyuncuların hareketleri, etkileşimleri ve diğer oyun içi olaylar bu şekilde işlenir ve iletilir. TCP ve socket sistemleri, bu iletişimin güvenilir ve hızlı bir şekilde gerçekleşmesini sağlar.