Bunu Neden İnşa Ettim?
"Ticari bir freelance proje olarak geliştirilen bu sistemin amacı, geleneksel HTTP protokollerinin yetersiz kaldığı sıra tabanlı çok oyunculu masa oyunları (Okey, 101, Çanak) için düşük gecikmeli bir altyapı sağlamaktı. İstemci (Unity) manipülasyonlarını engellemek adına oyun kurallarının, taş dağıtımının ve kazanma validasyonlarının tamamen sunucu tarafında (authoritative) işletildiği, spagetti koda dönüşmeyecek modüler bir oyun motoruna ihtiyaç vardı."
Mimari & Kararlar
Sistem .NET 9.0 üzerinde koşar ve gerçek zamanlı çift yönlü iletişim için SignalR Hub'larını (`SocialHub`, `TableHub`) kullanır. Aktif oyun durumları (GameMatchState), veritabanı darboğazlarını (I/O bottlenecks) önlemek adına RAM üzerinde `ConcurrentDictionary` kullanılarak thread-safe bir şekilde yönetilir. Farklı oyun modları (Klasik, 101, Çanaklı vb.), `IGameRuleHandler` arayüzü üzerinden Strateji Deseni (Strategy Pattern) ile izole edilmiştir. Veri kalıcılığı (envanter, işlem defterleri, mesajlar) PostgreSQL ve Entity Framework Core aracılığıyla sağlanırken, liderlik tabloları gibi ağır aggregate işlemleri ana thread'i bloklamamak için `PeriodicTimer` tabanlı `BackgroundService` worker'larına devredilmiştir.
Temel Özellikler
- 01.Ticari kullanıma hazır; envanter, XP, seviye atlama ve defter (transaction ledger) takibi sunan Progression/Ekonomi sistemi
- 02.SignalR Group API'si ile izole edilmiş masa (Table) ve klan/özel mesajlaşma odaları
- 03.Farklı oyun modlarını (Okey 101, Klasik, Teke Tek) DI (Dependency Injection) üzerinden runtime'da enjekte eden Strateji Deseni implementasyonu
- 04.WebRTC tabanlı sesli sohbet için sunucu taraflı sinyalleşme (signaling) rölesi
- 05.Periyodik olarak hesaplanan ve önbelleğe alınan (MemoryCache) günlük, haftalık ve aylık liderlik tabloları