Unreal Engine Dedicated Server ? – Adanmış Sunucu

Unreal Engine Dedicated Server, çok havalı bir cümle değil mi ? 🙂 Türkçe düşünürsek adanmış dunucu demek. Adanmış mı ? Neye adanmışlık peki bu ?

Unreal engine dedicated server konsuna girmeden önce biraz multiplayer üzerine konuşmak istiyorum. Unreal engine üzerinde iki adet multiplayer sistemi yer almaktadır. Bir tanesi kişinin hem sunucu hem de oyuncu olduğu “client server” modeli. Diğeri ise adanmış yani dedicated server modelidir. Client server modelinde oyuncu oyun oynayacağı zaman bir oyun kurulumu yapar ve bu oyunu bilgisayarı üzerinden yayınlar. Bu yayınlama işlemini yapmak için steam ve epic online sub system kullanır. Bu konuya zaten burada değinmiştik. Oyun oynamaktan vazgeçtiğinde ise oyunu kapatıp gider. Burada bir adanmışlık yoktur. Dedicated server ise 7/24 durmaksızn çalışmaya ve oyunu sunmaya devam edecektir. Kendini görevine adayacaktır. İşte o adanmışlık buradan geliyor 🙂

unreal engine dedicated server

Knight Online,LOL,Csgo,ROM,Pubg Gibi Oyunlar ?

Bu türdeki online oyunlar dedicated olarak servis edildiği bilinmektedir. Çünkü bu tarz oyunların kesinti olmaksızın çalışması gerekir. Bu oyunlar dedicated server yerine client server modelinde sunulursa ne olur ? Oyunu sunmak ile görevli olan oyuncu, oyunu terk edebilir. Oyuncu oyunu terk ettiğinde bütün oyuncular oyundan düşecektir. Pubg düşünün, böyle bir durum sinir bozucu olabilirdi.

Knight Online ve Pubg Arasındaki İnce Fark

Knight Online yapısı gereği sadece bir harita üzerinde oyuncuların oynaması için kurgulanmıştır. Bu harita sunucuda bir sorun oluşmadığı sürece hiç kapanmaz. Pubg (5v5 oyunlar da buna dahil) ise bir haritanın oyun süresince yayınlanması ve oyun bittiğinde kaldırıması üzerine kurgulanmıştır.

MMORPG Oyunlardaki Zindan Mantığı Nedir ?

Evet, MMORPG oyunlarda arkadaşlarınız ile bir ekip kurup zindana giriyorsunuz. Aslında arka tarafta yapılan işlem Pubg 5v5 mekanizması ile aynı. Yani siz bir zindana ekip kurup giriş yaptığınızda ekibiniz için zindan haritası bir port üzerinden yayınlanıyor. Zindan görevini bitirip çıktığınızda zindan haritası yayından kaldırılıyor. Bu zindan örneği gibi bir çok dedicated server üzerine kurgulanmış multiplayer senaryosu hemen hemen aynıdır.

Her 5v5 Maç İçin Bir Sunucu Mu Başlatılıyor ?

Aynen öyle 🙂 Bir oyun yaptığınızı hayal edin LOL tarzı. İnsanlar eşleşiyorlar ve eşleşenler oyun haritasına gönderiliyor. Bu durumda nasıl bir model yapabiliriz ? Öncelikle eşleşme yapıldıktan sonra dedicated sunucuya bir istek göndermemiz lazım. Bu oyuncular için bir tane lobby hartiası yayınla ve bu haritanın bana ip port bilgisini gönder. Dedicated server bize lobby haritasını yaratıp bu bilgileri gönderecek. Daha sonra bi bu bilgiler ile bütün eşleşen oyuncuları bu haritaya göndereceğiz. Oyuncular şampiyonlarını seçtikten sonra oyun haritasına göndermemiz gerekiyor. Tekrar dedicated server’a oyuncular için bir tane oyun haritası oluştur ve ip port bilgisini bize gönder diyeceğiz. Dedicated server haritayı oluşturup ip port bilgilerini bize gönderdiğinde oyuncuların hepsini bu seferde oyun haritasına yollayacağız. Oyun bittikten sonra, yani haritaya ihtiyaç kalmadığında ise dedicated server’a haritayı yayınlamayı durdur/kapat diyeceğiz. Bu işleyiş tüm 5v5 maçlar için yapılacaktır.

Her Maç İçin Lobby Haritası ve Oyun Haritası Mı Gerek ?

Evet, her 5v5 oyun için bir lobby ve bir oyun haritası yayınlanması gerek. Bu da bir dedicated sunucuda aynı anda yayınlanan onlarca/yüzlerce harita demek. Unreal engine içerisinde bu bahsettiğim olayları yapan (yani server management) bir mekanizma yok. Eğer böyle bir oyun yapma fikriniz varsa şu haritayı bu porttan yayınla, onu aç, bunu kapat vs gibi işler için bu mekanizmayı yazmanız lazım veya eklenti olarak alabilirsiniz. Şimdi diyeceksiniz ki 7777 portu bir tane, nasıl o kadar harita aynı anda yayın yapacak ? Sunucu üzerinde boş olan onlarca farklı port var. Bu portlar üzerinden aynı anda farklı haritalar yayınlanabilir. Örneğin 7778 portunda bir 5v5 oyun varken aynı anda 7779 portunda başka bir 5v5 oyun olacak.

Rust,Knight Online Tarzı Oyunlar İçin ?

Bu tarz oyunlar için bir sunucuda veya farklı sunucularda ihtiyacınız kadar haritayı yayınlarsınız ve oyuncular o haritalara katılır. Örneğin ben oyunum için 20 tane harita yayına alırım ve her haritaya 2000 oyuncu katılabilir. Böylelikle 2000*20 oyuncuyu oynatabilirim. Haritayı bir kere başlattıktan sonra kapat aç işlemleri olmayacağı için 5v5 tarzı oyunlar gibi bir server management sistemine ihtiyaç olmaz.

Bir Oyundaki Sunucu Seçimi Neden Var ?

Bu tamamen oyunda gecikme yaşanmaması için yapılan bir işlem. Eğer oyununuzu dünyaya açmak istiyorsanız farklı sunucu seçimi kaçınılmaz olacaktır. Türk oyuncular için Türkiye’de yayın yapan bir sunucu, Asya oyuncuları için Asya’da yayın yapan bir sunucu, Avrupa oyuncuları için Avrupa’da yayın yapan bir sunucunuz olmalı. Eğer sadece Türkiye sunucunuz olursa, Avrupa oyuncuları bilgileri Türkiye sunucusundan almak/göndermek zorunda kalcak. Mesafeden kaynaklı gecikme olacaktır ve bu da oynanabilirliği kötü etkilecektir.

Unreal Engine Dedicated Server Build Olayı Nedir ?

Aslında oyuncu kodları ile sunucu kodlarını birbirinden ayırmak için yapılan bir işlem. Client server olarak çıktı aldığınızda oyun kodları içerisinde hem sunucu hem istemci kodları olacaktır. Siz dedicated server üzerinde yayınlayacağınız için istemci kodlarına ihtiyacınız yoktur. Sadece server kodlarına ihtiyacınız vardır. Bu ayırdığınız kodların istemci olanını oyunculara dağıtırsınız, sunucu kodlarını ise dedicated server üzerine koyarsınız.

Dedicated Server Nereden Alabilirim ?

Bunun tek bir cevabı yok. Birden fazla cevabı var. Öncelikle Türkiye pazarında server/sunucu hizmeti veren bir firmadan server/sunucu kiralayabilirsiniz. Yurtdışı hizmetlerinden Amazon,google vb. firmalar aynı şekilde uygun olabilir. Eğer Türkiye pazarından almak isterseniz alacağınız server/sunucu oyun için optimize edildiğinden emin olmalısınız. Eğer yurt dışı bir hizmet düşünürseniz Amazon GameLift online oyunlar için iyi bir seçenek. Diğer AWS hizmetleriyle entegrasyon esnekliği,Öngörüler ve izleme,DDoS koruması,Otomatik ölçeklendirme gibi daha sayamayacağım bir çok hizmeti Amazon GameLift altında size sunuyor.

Türkiye lokasyonlu sunucu için omurtech.com göz atabilirsiniz.

Unreal engine dedicated server ile ilgili wiki sayfasına şuradan ulaşabilirsiniz.