Sıra tabanlı masa oyunu sunucu referansları? [kapalı]


12

Sıra tabanlı bir oyun sunucusunun nasıl oluşturulacağı hakkında önerilecek iyi referanslar / kitaplar var mı? Satranç oyuncularını eşleştirmek ve oyun durumlarını korumak için bir satranç sunucusu gibi bir şey. Geçmişte, örneğin IGS (go, weiqi için) soket tabanlı bir uygulamadır. Öğrenilecek mevcut çağdaş teknolojiler nelerdir? Teşekkürler!



Aşağıdaki oyun sunucusu tasarımını öğrenebilirsiniz: developers.google.com/games/services/android/…
tomash

Yanıtlar:


5

Konu hakkında önemsiz olduğu için bu konuda belirli bir kitap olduğunu sanmıyorum.

Oyuncuların eylemlerini posta yoluyla gönderebilecekleri bir posta sunucusu düşünün. Sunucu, şu ana kadar yapılan tüm eylemleri (posta olarak) yapar; Oyun durumunu yeniden yüklemek istiyorsanız, postaların içindeki tüm eylemleri kronolojik olarak uygulamanız yeterlidir. Yapmanız gereken tek şey kimin sırası olduğundan emin olmaktır ... ama bu da çok kolay (örneğin sayıları çevirin). Çağdaş teknolojilere gerek yok ... değiştirilmiş bir posta sunucusu / istemci çözümü yapacak.

Ppl eşleştirme Elo ile yapılabilir ... ama sanırım bunu biliyordun


belki biraz daha açıklayabilirsin, yumurta. '
Elo

Elo sistemine bir bağlantı eklemek için gönderiyi düzenledim.
Kylotan

2

Eğer ben olsaydım, yerden soketlerle inşa ederdim. Gönderilecek veri miktarı çok azdır ve sıra tabanlı yapı biraz gecikmeyi farkedilmez hale getirir.

Asıl soru, bence, üzerinde hangi ek özelliklere ihtiyacınız olduğu. Oyun oturumları kalıcı mı (birisi oyundan ayrılabilir ve yeniden katılabilir, oyun kaydedilebilir, vb.)? Bir Medeniyet tarzı kaydetme yapıyorsanız, büyük olasılıkla kaydetme verilerini tüm istemcilere iletmek veya doğrulama için gömülü sunucu tarafından sağlanan bir anahtarla kaydetme işlemi yapan istemciye sahip olmak istersiniz.

Herhangi bir tür dönüşlü raporlamaya ihtiyacınız var mı, örneğin "Oyuncu 2 bir birimi taşıyor" veya "Rakibiniz AFK olabilir" mi? Eğer öyleyse, soket bağlantılarını açık tutmak isteyebilirsiniz.

Genel olarak, sapmak için zorlayıcı bir neden olmadıkça, sunucuyu olabildiğince aptal ve basit tutacağım. Hata ayıklamak için daha az bırakır. Ayrıca, gerçek bir oyun istemcisi olmadan telnet kullanarak sunucularımı test edebildiğim için düz metin protokollerini kullanmayı seviyorum (belirli bir sorundan şüphelenilebilir), ancak bu, verilerin Wireshark manipülasyonunu teşvik ediyor (muhtemelen yine de kontrol edin).

Düzenleme: Oyun yalnızca bire bir oyunları destekliyorsa, eşler arası bağlantılara bakmaya değer olabilir.


1

Bir sunucunun ne olduğunu ve sorumluluklarının ne olduğunu düşünmemek önemlidir. Bu durumda, nispeten yavaş etkili bir oyununuz var, bu nedenle sunucu mimarisi inanılmaz derecede karmaşık olmayacak (ölü hesaplaşma yaptığınız daha hızlı tempolu bir oyun vs). Bağlı istemcilerin bilgi paketleri göndermesi için sunucunuz bir TCP bağlantı noktasını dinliyor olmalıdır (yine de hıza ihtiyacınız yoksa UDP'yi atlayabilir). Paketleri kabul eder, oyun kurallarına göre doğrular ve bir yanıt gönderir. Özel durumunuzda, sunucunuz şu anda kimin döndüğünü bilmeli ve diğer oyuncuların sıralarına gelene kadar eylem gerçekleştirme girişimlerini reddetmelidir.

Aklınızdaki teknolojiyi bilmiyorum ama bunun Kyronet kütüphanesi ile Java'da yapması kolay olacak bir şey. Oyun işlemlerinizi merkezi sunucuya gönderin (iki oyuncudan biri de olabilir), işleyin ve her iki oyuncuya da bir oyun güncellemesi gönderin. Eminim .NET için benzer bir şey var.

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.