
Neler Geliştiriyoruz
Gerçek zamanlı (Realtime) aksiyon. Nişancı ve arena oyunları; yüz milisaniyenin oyunun sonucunu belirlediği her tür proje. Astar Strike Online Photon Quantum üzerinde çalışan bir çok oyunculu FPS; üstelik tarayıcıda, yani zaten zor olan bir problemin daha zor hâli.
.io ve casual games. Kısa gameplay, yüksek retention, kalabalık lobili oyunlar; buradaki teknik zorluk gecikmeyi düşürmekten çok maçları doldurabilmek. Bunları mobil ve web tarafında geliştirdik.
Sıra tabanlı ve asenkron. Kart oyunları, strateji, yönetim simülasyonları. Multiplayer kolay, backend zor: kalıcı durum, sezonlar, sıralamalar ve binlerce eşzamanlı oyuncu arasında dengede kalması gereken bir ekonomi.
Sosyal ve paylaşımlı alanlar. Ses, avatarlar, el varlığı ve farklı cihaz sınıflarından aynı odaya giren kullanıcılar. Geliştirdiğimiz çoklu platform VR ve PC ortamını inceleyebilirsiniz.
Rekabetçi ve dereceli. Eşleştirme, beceri puanı, leaderboard ve dereceli mod açılmadan önce kurulması gereken hile önleme katmanı.
Live-Ops backend. Hesaplar, ilerleme, etkinlikler, uzaktan yapılandırma, sürüm kontrolü; her değişiklik için yeni build çıkarmadan canlı bir oyunu yönetmenizi sağlayan katman.
Tech Stack Seçimi
Multiplayer oyun geliştirmede tek bir doğru yanıt yoktur ve yanlış seçimin geri dönüşü pahalıdır. Kararı aşağıdaki özelliklere göre projenize özel seçiyoruz:
| Uygun olduğu yer | Model | Hileye dayanıklılık | |
|---|---|---|---|
| Photon Fusion | Çoğu modern gerçek zamanlı oyun; aksiyon, ortak oynanış, nişancı | Tick tabanlı, istemci tahmini ve gecikme telafisi; host ya da adanmış sunucu modu | Sunucu modunda iyi |
| Photon Quantum | Rekabetçi ve e-spor oyunları; dövüş, RTS, ödüllü her yapı | Deterministik ECS ve geri sarma; yalnızca girdiler iletilir | En yüksek – istemciler ayrışamaz |
| Photon PUN 2 | Basit oda tabanlı oyunlar ve mevcut PUN kod tabanları | Oda tabanlı, istemci barındırmalı, olgun ve basit | Düşük – yapısı gereği istemci otoriteli |
| Özel Node.js sunucusu | Sonucun bir değer taşıdığı her yapı | Tamamen otoriter; mantık bizde | En yüksek – her kural bizim kontrolümüzde |
Fusion çoğu yeni gerçek zamanlı projenin başlangıç noktası. Tahmin ve gecikme telafisini doğru şekilde yönetiyor; adanmış sunucu modu ise simülasyonu sıfırdan yazmadan otorite sağlıyor.
Quantum oyuncuların hile yapmak için nedeni olduğunda ve determinizmin getirdiği kısıt buna değdiğinde kullanılıyor. Yalnızca girdiler iletildiği ve her istemci aynı simülasyonu çalıştırdığı için istismar edilecek bir ayrışma oluşmuyor. Astar Strike’ın arkasında bunun olmasının nedeni de bu.
PUN 2 oda tabanlı basit oyunlar ve mevcut bir kod tabanının sürdürülmesi için hâlâ doğru tercih. Lobiler, canlı leaderboard ve botlar içeren gerçek zamanlı bir .io mobil oyununda kullandık; yeni bir rekabetçi oyuna ise Fusion ya da Quantum ile başlıyoruz.
Kendi sunucularımız oyun mantığının da otoriter olması gerektiğinde devreye giriyor.
Kendi Sunucularımızı Ne Zaman Kuruyoruz
Taşıma katmanı ile otorite ayrı şeyler. Photon mesajları istemciler arasında güvenilir şekilde taşıyor; atışın isabet edip etmediğine, bir el kâğıdın kurallara uygun olduğuna ya da maç sonucunun hak edilmiş olduğuna karar vermek ayrı bir katman.
Sonucun bir değere karşılık geldiği her durumda -dereceli sıralama, token, takım varlığı, ödeme- bu karar bizim kontrolümüzdeki bir sunucuda veriliyor. Bu yüzden otoriter oyun sunucularını Node.js ile yazıyoruz; istemci ise niyet bildiren ve sonucu gösteren bir görüntüleyiciye dönüşüyor.
Bunu geliştirdiğimiz bir futbol menajerlik simülasyonunda ve iGaming formatlarında uyguladık; ilkinde maç simülasyonunun ve ekonominin tamamı sunucuda çalışıyor, ikincisinde her tur istemciye bilgi verilmeden önce sonuçlandırılıp kayıt altına alınıyor. Çevresinde oturum doğrulama, tekrar koruması, hız sınırlama ve tur bazında denetim kaydı bulunuyor.
Kural basit ve her yerde uygulanıyor: istemcinin güvenilmez olduğu ve zaten ele geçirildiği varsayılarak tasarlanır.
Çok Oyunculu Oyunları Asıl Zorlayan Problemler
Online oyunlarda gecikme en çok konuşulan başlık. Pratikte sorun çıkaranlar şunlardır:
Boş lobiler. Dolmayan bir maç oynanmayan bir maç ve etki katlanarak büyüyor: ilk oyuncular ayrılıyor, lobi boş kalıyor, sonraki oyuncular da ayrılıyor. Botlar, bölge mantığı ve maç doldurma yayın öncesi gereklilikler; yayından sonra eklenmesi çok daha pahalı.
Bağlantı kopmaları. Oyuncular asansörde, tünelde ve otel wifi’ında bağlantı kaybediyor. Sabit bağlantı varsayan bir tasarım bozuk maçlar ve olumsuz yorumlar üretiyor. .io çalışmamızda kopan oyuncunun yerini bir bot alıyor ve maç devam ediyor.
Yeniden bağlanma. Devam eden bir maça doğru durumla geri dönmek, yeni bir maça katılmaktan belirgin şekilde daha zor ve genelde pahalı hâle gelene kadar erteleniyor.
Sürüm dağınıklığı. Oyuncular geldiğinde, güncel olmayan istemcilerin canlı bir maça girip onu bozmaması için sürüm kontrolü gerekiyor.
Hile. Beklenenden çok daha hızlı ortaya çıkıyor ve bunu önleyen mimari kararlar en başta alınıyor.
Platforma Göre Çok Oyunculu
Tarayıcı. Özel uzmanlık alanımız. Web oyunlarımızda 100.000’in üzerinde oyuncu ve beraberinde gelen kısıtlar: bellek tavanları, arka plana alınıp kısıtlanan sekmeler ve dizüstü uykudan uyandığında ayakta kalması gereken oturumlar. WebGL oyun geliştirme sayfasını inceleyebilirsiniz.
Mobil. Dengesiz bağlantının istisna değil norm olduğu ortam; ayrıca ne sıklıkta veri gönderebileceğinizi belirleyen batarya ve ısınma bütçeleri.
VR. El ve baş pozisyonunun inandırıcı şekilde senkronize edilmesi, oyuncular arasında fiziksel nesne devri, mekânsal ses ve düşmemesi gereken kare hızı; başlıkta bu bir konfor gerekliliği. VR ve XR geliştirme sayfasını inceleyebilirsiniz.
Sıkça Sorulan Sorular
Çoğu yeni gerçek zamanlı oyun için Fusion; hile önemliyse ya da oyun rekabetçiyse Quantum. Karar vermeden önce yirmi dakikalık bir görüşme ile beraber belirleyebiliriz.
Oyun sonuçları bir değer taşıyorsa evet. Arkadaşlarla oynanan casual bir oyun içinse genelde gerekmiyor. Maliyet farkı ciddi olduğu için bilinçli karar verilmesi önemli.
Evet; bu ortak geliştirme kapsamına giriyor. Netcode, doğrudan işe alması en zor alanlardan biri olduğu için en sık devraldığımız iş kalemlerinden.
Projeye Başlayalım
Oyunu, hedeflenen eşzamanlı oyuncu sayısını ve sonucun bir değer taşıyıp taşımadığını iletin. Son soru mimariyi diğer her şeyden daha fazla etkiliyor.
Kapsam, ekip yapısı ve sabit fiyat genelde iki iş günü içinde iletilir.