Metin2 sunucu açılışında oyuncuların ilk karşılaştığı hizmet çoğu zaman oyun sunucusu değil, patcher ve dosya indirme altyapısıdır. Oyun süreçleri sorunsuz çalışırken istemci güncellemesi yarıda kalıyorsa oyuncu yine giriş yapamaz. Bu yüzden indirme dağıtımı, oyun bağlantısından ayrı bir hizmet olarak planlanmalıdır.
Bu rehber patcher yazılımının nasıl kodlanacağını değil; dosyaların nasıl yayınlanacağını, doğrulanacağını ve yoğunluk altında nasıl dağıtılacağını ele alır. Kullanacağınız yöntemlerin mevcut patcher tarafından desteklendiğini geliştiricinizle doğrulayın.
İndirme trafiğini oyun bağlantısından ayırın
Büyük istemci arşivleri ile küçük oyun paketleri aynı ağ ve disk kaynakları için yarışabilir. Ayrı bir indirme servisi, nesne depolama veya uygun bir CDN kullanımı bu yükün ayrılmasına yardımcı olabilir. Ancak yalnızca farklı bir alan adı açmak fiziksel kaynakları ayırmaz; iki adres aynı makineye gidiyorsa ortak darboğaz devam edebilir.
Oyuncunun dosya indirdiği adresi, oyun bağlantı adresini ve yönetim erişimini ayrı amaçlarla yapılandırın. CDN’nin HTTP dosya dağıtımına faydası ile oyun protokolünün taşınması aynı konu değildir. Bir dosya dağıtım hizmeti kullanılması, oyun portlarının da otomatik olarak korunduğu veya hızlandığı anlamına gelmez.
Açılış için basit bir trafik hesabı yapın
Örnek olarak 2.000 oyuncunun kişi başına 300 MB güncelleme indirmesi yaklaşık 600 GB veri aktarımı oluşturur. Bu indirmeler 30 dakikaya yayılırsa ortalama trafik yaklaşık 2,67 Gbit/sn olur. Hesap ondalık MB/GB birimleriyle yapılmıştır; bağlantı ek yükü, tekrar indirmeler ve anlık yığılma dahil değildir.
Bu rakam bir paket önerisi veya Mezuhost performans testi değildir. Kendi güncelleme boyutunuzu ve beklenen indirme aralığını hesaplamak için örnektir. Ortalama hıza ek olarak aynı anda başlayan bağlantıları, depolamanın okuma performansını ve sağlayıcının aktarım koşullarını da değerlendirin.
Her sürümü ayrı dosya yollarında yayınlayın
Aynı dosya adını sürekli değiştirerek kullanmak, önbellekte eski içerik kalması durumunda karışıklık yaratabilir. Destekleyen patcher yapılarında sürüme özel dizinler veya içerik kimliği taşıyan dosya adları kullanmak daha izlenebilir bir yöntemdir. Örneğin yeni sürümün dosyaları ayrı bir yayın dizininde hazırlanır; oyuncunun hangi sürümü alacağını belirleyen manifest en son değiştirilir.
Büyük, değişmeyen sürüm dosyaları ile sık değişebilen manifestin önbellek politikası aynı olmamalıdır. Manifestin güncel olup olmadığını yeniden kontrol eden davranış planlanmalı; yeni dosyalar hazır olmadan yeni manifest açılmamalıdır. AWS’nin dosya sürümleme açıklaması, bu genel yaklaşımın CDN tarafındaki karşılığını anlatır.
Dosya özeti ile yayıncının kimliğini ayırın
SHA-256 gibi bir dosya özeti, indirilen dosyanın beklenen içerikle eşleşip eşleşmediğini kontrol etmeye yardımcı olur. Ancak saldırgan dosyayla birlikte beklenen özeti de değiştirebiliyorsa yalnızca hash kontrolü yeterli değildir. HTTPS, manifestin güvenilir biçimde alınması ve destekleniyorsa imzalı manifest doğrulaması birlikte değerlendirilmelidir.
İmza doğrulaması kullanılacaksa özel imzalama anahtarı indirme sunucusunda herkese açık bir dizinde tutulmamalıdır. İstemcinin doğru açık anahtarla doğrulama yapması ve yanlış imzalı yayını reddetmesi test edilmelidir. Kullanıcılara güvenlik yazılımlarını bütünüyle kapatmalarını söylemek, dağıtım sorununu çözmenin güvenli bir yolu değildir.
Güncelleme yayınlama sırası
- Yeni dosyaları ayrı bir sürüm dizinine yükleyin; mevcut yayını yerinde değiştirmeyin.
- Dosya boyutlarını, özetlerini ve erişim izinlerini kontrol edin.
- Temiz kurulum ile önceki desteklenen sürümden güncelleme akışını deneyin.
- Manifesti yeni sürüme yönlendirin ve farklı bağlantılardan sonucu kontrol edin.
- Hata oranını ve tamamlanan indirmeleri izleyin; eski sürümü planlanan geri dönüş süresince saklayın.
Eski istemciyi yeniden dağıtmanın sunucu tarafındaki yeni veri yapısıyla uyumlu olup olmadığını ayrıca değerlendirin. Yalnızca manifesti geri almak her güncellemede güvenli bir geri dönüş sağlamaz. İstemci, oyun sunucusu ve veri değişiklikleri birlikte sürümlenmelidir.
İyi bağlantıda başarılı olması yeterli değildir
Test listesinde yarıda kesilen indirme, yetersiz disk alanı, eski dosyanın kullanımda olması ve farklı sürümden güncelleme bulunmalıdır. Patcher ve indirme servisi destekliyorsa devam ettirme davranışını sınayın. Yeniden denemeler sınırlı ve aralıklı olmalı; hata halinde aralıksız istek gönderen istemciler dağıtım hizmetini gereksiz yere yorabilir.
Oyuncuya anlaşılır bir hata kodu ve yeniden deneme yolu gösterin. Destek ekibi sürüm numarası, dosya adı ve hata saatini isteyebilsin. Bu bilgiler, genel “oyuna giremiyorum” mesajını incelenebilir bir olaya dönüştürür.
Mezuhost projenizde nasıl planlayabilirsiniz?
Metin2 sunucu altyapısını seçerken istemci arşivinizin boyutunu ve açılıştaki indirme beklentinizi de paylaşın. Oyun kaynakları ile dosya dağıtım ihtiyacını ayrı değerlendirmek daha doğru kapasite planı sağlar. Yayın sırasını açılış öncesi kontrol planınıza ekleyin; test ortamında doğrulamadığınız manifesti canlı oyunculara göndermeyin.
Sık sorulanlar
Her Metin2 projesi için CDN zorunlu mu?
Hayır. Karar dosya boyutuna, oyuncu dağılımına, eş zamanlı indirme beklentisine ve mevcut kapasiteye göre verilmelidir.
Patcher yavaşsa oyun sunucusunu yükseltmek yeterli mi?
Yalnızca indirme hizmeti aynı kaynağı kullanıyor ve sorun o kaynaktan doğuyorsa fayda sağlayabilir. Önce indirme hızını sınırlayan bileşeni belirlemek gerekir.




