Referensi server permainan papan berbasis giliran? [Tutup]

12

Apakah ada referensi / buku yang bagus untuk direkomendasikan tentang cara membangun server game turn-base? Ini seperti server catur untuk memasangkan pemain catur dan mempertahankan status permainan. Di masa lalu, misalnya IGS (untuk go, weiqi) adalah implementasi berbasis soket. Dari mana teknologi kontemporer yang tersedia untuk dipelajari? Terima kasih!

ohho
sumber
ada utas terkait di forum gdev gamedev.net/topic/565319-turn-based-game-design-help
zinking
Anda dapat belajar dari desain server game berikut: developers.google.com/games/services/android/…
tomash

Jawaban:

5

Saya tidak berpikir ada buku tertentu tentang ini, karena topiknya agak sepele.

Bayangkan saja server surat tempat pemain dapat mengirim tindakan mereka melalui surat. Server memiliki semua tindakan yang dilakukan sejauh ini (sebagai surat), yang berarti Anda memiliki status permainan. Jika Anda ingin memuat ulang gamestate, jalankan saja semua tindakan di dalam surat secara kronologis. Satu-satunya hal yang harus Anda lakukan adalah memastikan giliran siapa ... tapi itu mudah juga (misalnya nomor belokan). Tidak perlu teknologi kontemporer ... solusi mail server / klien yang dimodifikasi akan melakukannya.

Ppl pairing dapat dilakukan melalui Elo ... tapi saya kira Anda tahu itu

zhengtonik
sumber
mungkin Anda bisa menjelaskan lebih banyak, telur. Saya tidak tahu 'elo'
zinking
Saya mengedit posting untuk memasukkan tautan ke sistem Elo.
Kylotan
2

Jika itu aku, aku akan membangunnya dari tanah dengan soket. Jumlah data yang akan dikirim sangat kecil, dan sifat berbasis giliran membuat sedikit latensi tidak terlihat.

Pertanyaan sebenarnya, menurut saya, adalah fitur tambahan apa yang Anda butuhkan. Apakah sesi permainannya gigih (bisakah seseorang keluar dan bergabung kembali, dapatkah game diselamatkan, dll)? Jika Anda melakukan gaya Peradaban menyimpan, Anda mungkin ingin mendorong keluar menyimpan data ke semua klien, atau meminta sisi klien selesai dengan kunci yang disediakan server untuk verifikasi.

Apakah Anda memerlukan semacam pelaporan antara belokan, misalnya "Pemain 2 memindahkan unit" atau "Lawan Anda mungkin AFK"? Jika demikian, Anda mungkin ingin menjaga koneksi soket tetap terbuka.

Secara umum, kecuali ada alasan kuat untuk menyimpang, saya akan membuat server sebodoh dan sesederhana mungkin. Tidak terlalu banyak melakukan debug. Saya juga agak suka menggunakan protokol teks biasa, karena saya bisa menguji server saya menggunakan telnet tanpa klien game yang sebenarnya (yang mungkin dicurigai dalam masalah yang diberikan), tetapi ini semacam mendorong manipulasi data Wireshark (yang Anda mungkin akan tetap periksa).

Sunting: Jika game hanya mendukung game 1-ke-1, koneksi peer-to-peer mungkin layak dilihat.

gkimsey
sumber
1

Penting untuk tidak terlalu memikirkan apa itu server dan apa tanggung jawabnya. Dalam hal ini, Anda memiliki gim akting yang relatif lambat, sehingga arsitektur server tidak akan terlalu rumit (vs gim yang berjalan lebih cepat di mana Anda memiliki perhitungan mati, dll.). Server Anda harus mendengarkan pada port TCP (mungkin juga melewatkan UDP jika Anda tidak memerlukan kecepatan) untuk klien yang terhubung untuk mengirimkan paket informasi. Itu menerima paket, memvalidasi mereka berdasarkan aturan permainan, dan mengirim kembali respons. Dalam kasus spesifik Anda, server Anda harus tahu siapa yang menghidupkannya saat ini dan menolak upaya pemain lain untuk melakukan tindakan sampai giliran mereka.

Saya tidak tahu teknologi apa yang ada dalam pikiran Anda tetapi sesuatu ini akan cukup mudah dilakukan di Jawa dengan perpustakaan Kyronet. Cukup kirim aksi permainan Anda ke server pusat (bisa juga salah satu dari dua pemain), proses, dan kirim kembali pembaruan game ke kedua pemain. Saya yakin ada sesuatu yang serupa untuk .NET.

JPRO
sumber