Oyun motoru tasarımı: Çok oyunculu ve dinleme sunucuları [kapalı]


10

Oyun motorum şu anda çalışan bir tek oyunculu bölümden oluşuyor. Şimdi çok oyunculu parçanın nasıl yapılacağını düşünmeye başladım.

Birçok oyunun aslında gerçek bir tek oyunculu modu olmadığını öğrendim, ancak tek başına oynarken de yerel bir sunucuya ev sahipliği yapıyorsunuz ve neredeyse her şey çok oyunculu sanki çalışıyor (veri paketlerinin geçebileceği hariç) daha iyi performans için alternatif bir rota üzerinden)

Motorumun bu modele uyum sağlamak için büyük bir yeniden düzenleme yapması gerekiyordu. Üç olası mod olabilir: Özel istemci, Özel sunucu ve İstemci-Sunucu (dinleme modu)

  • Dinleme sunucusu modeli oyun endüstrisinde ne sıklıkla kullanılır?
  • Bunun (dis) avantajları nelerdir?
  • Başka hangi seçeneklerim var?

4
İlk soru oldukça alakasız. Endüstrinin bunu nasıl yaptığı önemli? Her şeyi en iyi şekilde yapmıyorlar.
Komünist Ördek

Yanıtlar:


11

Buna en iyi şekilde cevap verip veremeyeceğimi göreceğim:

Dinleme sunucusu modeli oyun endüstrisinde ne sıklıkla kullanılır?

Çoğu çevrimiçi oyun söz konusu olduğunda, oyunların büyük çoğunluğunun her zaman düşündüğünüz gibi olmasa da bir istemci-sunucu mimarisi kullandığını göreceksiniz. Örneğin herhangi bir Kaynak oyununu ele alalım. Çoğu, bir ana sunucu mimarisine sahip standart bir istemci-sunucu (mevcut oyunları listelemek için) kullanacaktır, çünkü bir kişi özel bir sunucuya ev sahipliği yapacak ve istemciye sahip herkes buna katılabilir.

Ancak, biraz farklı bir yaklaşım gerektiren bazı oyunlarınız ve hizmetleriniz var, örneğin Left 4 Dead, League of Legends ve bazı XBox Live oyunları. Bunların tümü, kontrol sunuculu bir istemci-sunucu mimarisi kullanır. Buradaki ana fikir, birinin herhangi bir oyunu "çalıştırmayan" özel bir sunucu oluşturmasıdır. Kontrol sunucusu bir çeşit "lobi" oluşturur ve oyun başlatıldığında, kontrol sunucusu bunları bir kuyruğa ekler ve bu lobi sırası geldiğinde, eşleşen bir sunucu seçecektir (konum / hız, kullanılabilirlik, çok sayıda faktör) ve oynatıcıları bu sunucuya atayın. Ancak o zaman sunucu oyunu "çalıştırır". Aynı fikir, ancak müşterinin bir sunucu "seçmesi" gerekmediği için biraz basitleştirilmiş,

Tabii ki, en büyük istemci-sunucu modeli, bir veya daha fazla sunucunun neredeyse tüm verileri ve mantığı işleyen kalıcı bir dünya çalıştırdığı MMO modelidir. Bu modeli kullanan daha ünlü oyunlardan bazıları World of Warcraft, Everquest, böyle bir şey.

Öyleyse bir dinleme sunucusu nereye uyuyor? Dürüst olmak gerekirse, gerçekten o kadar iyi değil, yine de bunu kullanan birçok oyun bulacaksınız. Örneğin, çoğu Kaynak oyun dinleme sunucularının oluşturulmasına izin verir ve birçok XBox Live oyunu yapar (bir süredir, ancak Counter Strike'ın yanı sıra Quake 4 ve diğerlerinin de yaptığına inanıyorum). Bununla birlikte, genel olarak, bizi bir sonraki noktaya getiren müşteri-sunucu modelinin avantajları nedeniyle kaşlarını çatmış gibi görünüyorlar.

Bunun (dis) avantajları nelerdir?

İlk ve en önemlisi: performans. Bir istemci-sunucu modelinde, istemci oyunun her döngüsünde yerel değişiklikleri (girdi, grafik, ses, vb.) Ele alacaktır. Döngünün sonunda, ilgili verileri paketleyecektir (örneğin, oyuncu taşındı mı? Öyleyse, nereye? Şimdi nereye bakıyor? Hız? Vurdular mı? Eğer öyleyse, mermiyle ilgili bilgiler. Vb) ve işleme için sunucuya gönderin. Sunucu bu verileri alacak ve her şeyin geçerli olup olmadığını belirleyecektir, örneğin, kullanıcı korsanlığı gösterecek şekilde hareket ediyor mu (daha sonra daha fazla), hareket geçerli mi (yoldaki herhangi bir şey?), Mermi oyuncudan miydi? 1 hit player 2? Ve daha fazlası. Daha sonra sunucu bunu paketler ve istemcilere gönderir; daha sonra, oyuncu vurulduysa sağlığı ayarlamak, korsan olduklarına karar verildiğinde oyuncuyu tekmelemek, vb.

Ancak bir dinleme sunucusu tüm bunlarla aynı anda ilgilenmelidir. Programlamaya aşina olduğunuzu düşündüğümden, muhtemelen bir oyunun bir bilgisayardan ne kadar güç, özellikle de kötü tasarlanmış bir oyundan çıkabileceğini fark ediyorsunuz. Ağ işleme, güvenlik işleme ve daha fazlasının yanı sıra müşterinin oyununa ek olarak , en azından standart işleme kadar performansın nerede ciddi bir isabet alacağını görebilirsiniz. Ayrıca, çoğu sunucu hızlı ağlarda çalışır ve ağ trafiğine dayanacak şekilde tasarlanmış sunuculardır. Bir dinleme sunucusunun ağı yavaşsa, tüm oyun acı çeker.

İkinci güvenlik , daha önce de belirtildiği gibi, bir sunucunun yapacağı ana şeylerden biri, bir oyuncunun oyunu istismar edip etmediğini belirlemektir. Bunları Punkbuster, VAC, vb. Olarak görmüş olabilirsiniz. Örneğin, bu programları çalıştıran, bir bilgisayar korsanı ve sadece çok iyi bir oyuncu arasındaki farkı belirleyen çok karmaşık bir dizi kural vardır. Bilgisayar korsanlarını yakalayamazsanız oyununuz için çok kötü olurdu, ancak yanlış suçlananlara karşı eylemde bulunursanız daha da kötü olurdu.

Bir dinleme sunucusu genellikle müşterinin oyununu, sunucu işlemesini ve hack tespitini işleyemez ve çoğu durumda Punkbuster gibi dedektörlerin dinlenmesi çok zor, çünkü bir dinleme sunucusunda çalıştırmak mümkün değildir, çünkü genellikle oyun mantığına güvenlik üzerinde öncelik verildiğinden ve dedektörün bir çerçeve için işlem yapmasına izin verilmezse, birini mahkum etmek için gereken verileri kaybedebilir.

Son olarak, oyun . Sunucularla ilgili en büyük şey, kalıcı olmalarıdır, yani herkes ayrılsa bile sunucunun çalışmaya devam edeceği anlamına gelir. Bu, gece vakti çok fazla aktiviteye sahip olmayan popüler bir sunucunuz varsa, insanlar oynamaya hazır olduklarında yine de katılabilir ve tekrar çevrimiçi olmasını beklemek zorunda kalmazlarsa yararlıdır.

Bir dinleme sunucusunda, ana dezavantaj, dinleme sunucusunu barındıran istemci ayrılır ayrılmaz oyunun başka bir oyuncuya aktarılması (oyunda bazı durumlarda dakika sürebilecek bir lul oluşturma) veya tamamen sona ermesi gerektiğidir. . Bu, büyük bir sunucuda tercih edilmez, çünkü ana bilgisayar çevrimiçi kalmalı (sunucuda bir yuva harcaması ve oyunu yavaşlatabilecek bilgisayar gücü) veya herkes için oyunu bitirmelidir.

Ancak, bu sorunlara rağmen, dinleme sunucularının birkaç avantajı vardır.

Kurulumu kolay : Çoğu dinleme sunucusu "Yeni oyun" a basmak ve insanların katılmasına izin vermekten başka bir şey değildir. Bu sadece arkadaşlarıyla oynamak isteyen ve boş bir adanmış sunucu bulmak veya başka insanlarla oynamak istemeyen insanlar için kolaydır.

Test için iyi : Kişinin özel bir sunucusu varsa ve yapılandırmasını değiştirmek istiyorsa, test etmek genellikle daha iyi bir fikirdirönce yapılandırma. Kullanıcı ya özel sunucunun bir yedeğini oluşturmak ve değişikliklere körü körüne gitmek zorunda kalacak, tek seçenek bir şey ters giderse geri almak, onları test etmek için yeni bir özel sunucu oluşturmak, sadece basit bir dinleme sunucusu oluşturmak test edin. Ve 1. maddeyle, bunların başlatılması ve yapılandırılması genellikle daha kolaydır. Bu, özellikle adanmış sunucuların çoğu yöneticinin anında erişimi içinde olmadığı için geçerlidir (adanmış sunucuların çoğu uzak bir konumdan kiralanır). Yapılandırma değişikliklerinin yanı sıra yeniden başlatma komutlarının, yöneticinin şu anda açık olduğu bir makineden daha uzak bir konuma itilmesi çok daha uzun sürer.

Daha az kaynak : Çoğu adanmış sunucuda, aynı IP'ye sahip bir kullanıcı adanmış sunucuya bağlanamaz (yani, istemcinin sunucuyu barındırması veya oynatması gerekir, her ikisini birden yapamaz). Müşteri kendi sunucusunda oynamak isterse, genellikle sunucuyu barındırmak için ikinci bir makineye ihtiyaç duyacak veya gerçekte onun üzerinde oynayabilmek için özel bir sunucu satın alacak veya kiralayacaktır . Bir dinleme sunucusu, istemcinin kullanabileceği tek şey olabilecek tek bir makine gerektirir.

Her iki durumda da, her ikisinin de avantajları ve dezavantajları vardır ve bunları tasarlamaya ve uygulamaya hazır olduğunuz şeyle tartmanız gerekir. Deneyimlerime göre, bir dinleme sunucusu uygularsanız, arkadaşlarınızla oynamak veya ayarları test etmek isteyen birkaç kullanıcı için başka bir şey olmasa bile kullanacağına inanıyorum.

Son olarak:

Başka hangi seçeneklerim var?

Bu endüstriyel bir solucan kutusu. Gerçekte, video oyunlarına her türlü ağ mimarisi uygulanabilir. Ancak, gördüğüm kadarıyla, çoğu internet iletişimi gibi, çoğu bir çeşit istemci-sunucu modeline kaynar.

Sorunuza cevap vermediysem veya genişletilmiş bir şeye ihtiyacınız varsa lütfen bana bildirin. Ne yapabileceğimi göreceğim.


"Çoğu adanmış sunucuda, aynı IP'ye sahip bir kullanıcı adanmış sunucuya bağlanamaz (yani, istemcinin sunucuyu barındırması veya oynatması gerekir, her ikisini birden yapamaz)." WAT? Nerede? Neden? Bazı sunucular görünüşte anlamsız keyfi sınırlamalara sahipse , bir tane yazdığında aynı şeyi yapmaya zorlanacağı anlamına gelmez ...
o0 '.

Bilgisayarların sunucu algoritmalarını, grafik hesaplamalarını ve oyun mantığını bir kerede işleyemediği eski oyunlardan bir eser. Birçok özel sunucu modeli, aynı makineden bağlanmaya çalışan bir istemcinin başarılı bir şekilde bağlanmasını önleyecektir ve bu uygulama bugün bazı oyunlarda hala uygulanmaktadır. Bunun tüm modeller için geçerli olduğunu söylemedim ya da onun bu paradigmaya modellemesi gerektiğini söylemedim. Ancak, teknik olarak, aynı ana bilgisayar bağlantılarına izin vermek adanmış sunucunun amacını bozar ve tek faydası bağlantıyı kestiğinde sunucuyu etkin bırakmaktır.
shmeeps
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.