Geri Dön / Back to Lobby

Geliştirici Notları: İsim Şehir

Giriş ve Mimari Yaklaşım

Paira İsim Şehir, klasik harfe göre kelime bulma oyununu dijital ortama taşıyan, verileri depolamak için hiçbir merkezi veritabanı (Database) veya aracı oyun sunucusu barındırmayan, tamamen tarayıcı tabanlı çalışan bir P2P (Peer-to-Peer) kelime oyunudur. Oyun, sıfır sunucu maliyeti ve uçtan uca şifrelenmiş veri kanalları ile oyuncuların hızlıca lobilere katılıp yarışabilmesi üzerine tasarlanmıştır.

Geleneksel sunucu tabanlı çok oyunculu oyunların aksine, İsim Şehir'de tüm durum yönetimi, tur geçişleri, kelime doğrulama süreçleri ve puanlama sistemi, tarayıcılar üzerinde koordine edilen Host-Client yapısı vasıtasıyla işletilmektedir.

P2P Ağ Topolojisi (Host-Client Yapısı)

Paira İsim Şehir'in çok oyunculu yapısı, WebRTC (Web Real-Time Communication) tabanlı bir Host-Client (Kurucu-Katılımcı) mimarisi üzerine kuruludur:

Gerçek Zamanlı Veri Senkronizasyonu ve Mesajlaşma Protokolü

Oyun içerisindeki tur geçişleri, harf belirleme, girilen kelimeler, itirazlar ve puanlamalar RTCDataChannel üzerinden JSON formatında paketler halinde gönderilir. Bu iletişim protokolünde aşağıdaki mesaj tipleri kullanılır:

Otomatik Kelime Doğrulama ve Hibrit Değerlendirme Motoru

İsim Şehir oyununda puanlama doğruluğunu artırmak ve yazım hatalarını önlemek için Host tarayıcısında çalışan çok katmanlı, hibrit bir doğrulama motoru geliştirilmiştir:

  1. Yerel Sözlük Kontrolü (Offline Dictionary): İlk olarak, her kategori için hazırlanmış yerel sözlük verileri (data/${catId}.json) yüklenir. Girilen kelimenin sözlükte birebir bulunması durumunda kelime doğrudan geçerli kabul edilir.
  2. Üçüncü Parti API Sorgulamaları (Real-time APIs): Kelime sözlükte bulunamazsa, kategorisine özel harici API'ler sorgulanarak kelimenin gerçekliği denetlenir:
    • sehir: OpenStreetMap (Nominatim API) ve Wikipedia araması ile coğrafi doğrulama yapılır.
    • ulke: RestCountries API ve Wikipedia araması ile ülke isimleri doğrulanır.
    • film_dizi & muzik: iTunes API ve Wikipedia arama entegrasyonu kullanılır.
    • sarkici: MusicBrainz ve Wikipedia API'leri aracılığıyla sanatçı/grup sorgulanır.
    • yazar: OpenLibrary API ve Wikipedia araması.
    • hastalik & spor: Wikipedia API üzerinden semantik kelime araması gerçekleştirilir.
  3. Yapay Zeka Destekli Hakem (LLM Validation): Geleneksel API'lerin ve sözlüklerin yetersiz kaldığı durumlarda (örneğin özel kategoriler veya yerel popüler kelimeler), Host tarayıcısı /api/ai/generate uç noktasını kullanarak gemini-1.5-flash modeline bir batch istek gönderir ve kelimenin kategoriye ve harfe uygunluğunu yapay zeka hakemliğiyle değerlendirir.

Puanlama Matrisi ve Canlı İtiraz Sistemi

Doğrulama motorundan geçen kelimeler için ilk etapta şu puanlar önerilir:

Sistem öneriyi sunduktan sonra Canlı İtiraz ve Oylama (Interactive Voting) süreci başlar. Tüm oyuncular, diğerlerinin yazdığı kelimelerin yanındaki 10, 5, 0 butonlarına basarak oylarını gerçek zamanlı olarak değiştirebilirler. Bu oylar SINGLE_VOTE paketiyle Host'a iletilir ve Host tarafından anlık olarak tüm ekranlara SYNC_LIVE_VOTES ile yansıtılır. Oylama bittiğinde Host, çoğunluk oyunu ve eşitlik durumunda adil ara puanı (5) baz alarak nihai puanları hesaplar.

Oda Mantığı ve Güvenlik

Her oyun odası, 6 karakterli benzersiz bir Oda Kodu üzerinden tanımlanır. Host, isimsehir-host-${roomCode} adresiyle sinyalleşme ağında beklerken; katılımcılar ise isimsehir-client-${randomId} biçiminde kimlik edinerek doğrudan Host'a bağlanır.

WebRTC mimarisi gereği oyun sırasında paylaşılan tüm veri paketleri DTLS/SRTP şifreleme katmanı ile korunmaktadır. Oyun verileri hiçbir uzak sunucuda tutulmadığı için yüksek güvenlik, veri gizliliği ve sıfır gecikmeli oyun deneyimi bir arada sunulmaktadır.

Bu teknik dokümantasyon, Paira platformunun tarayıcı tabanlı çok oyunculu kelime oyunu altyapısını ve P2P veri senkronizasyon modellerini merak eden geliştiriciler için Ahmet Efe Yaşar tarafından kaleme alınmıştır.