Saya akan menulis server untuk multipemain daring dengan persyaratan berikut:
- Game berbasis giliran yang cukup sederhana (pikirkan permainan kartu) yang dimainkan sepenuhnya di server (alasan keamanan)
- Harus dapat menjalankan beberapa game (tabel) dengan 4 pemain per tabel, tetapi tidak ada sistem lobi yang diperlukan (server lain menangani itu)
- Dapat mendukung pemain sebanyak mungkin sekaligus; Mungkin perlu banyak server
- Obrolan antar pemain
- Koneksi soket ke klien Flash / AIR
- Harus dapat berkomunikasi dengan server lain (untuk akun pemain dan semacamnya)
Sekarang, saya mempertimbangkan dua opsi:
- Smartfox (atau setara)
- Solusi Java kustom dalam sesuatu seperti Tomcat
Mengapa Smartfox?
- Ini menangani beberapa kamar dan mengobrol secara asli
- Ini mungkin memiliki solusi untuk masalah game multi-pemain terkenal
Mengapa kustom?
- Smartfox memiliki banyak fungsi yang tidak dibutuhkan, buruk untuk kinerja
- Smartfox berkomunikasi dengan format berbasis XML, saya bisa menggunakan yang lebih efisien.
- Tidak tahu apakah menjalankan seluruh model game di server sesuai dengan mekanisme ekstensi Smartfox
- Beberapa kamar dan obrolan mudah diterapkan
- Tomcat atau wadah ringan lebih mudah digunakan daripada Smartfox
- Dukungan IDE yang lebih baik untuk pengembangan di Tomcat (penyebaran otomatis, dll)
Bagaimana menurut anda? Apakah asumsi saya benar? Apakah Anda punya sesuatu untuk ditambahkan? Pilihan apa yang harus saya pilih (atau mungkin yang berbeda sama sekali)?
networking
multiplayer
server
java
Bart van Heukelom
sumber
sumber
Jawaban:
Saya pasti akan pergi dengan solusi khusus: meskipun Anda mungkin kehilangan waktu dalam jangka pendek, itu pasti skala yang lebih baik jika Anda membutuhkannya, ditambah pengalaman yang Anda peroleh akan secara besar-besaran dapat digunakan kembali untuk permainan berikutnya. BlazeDs terdengar seperti alat yang sangat baik untuk kebutuhan Anda, tetapi menulis ulang server game Java dari awal bukanlah usaha yang besar, menggunakan misalnya Netty dan Protobuf :)
sumber
Mengenai poin Anda dalam mendukung solusi khusus:
Karena ini untuk permainan "sederhana, berbasis giliran", kinerja tidak mungkin menjadi masalah.
Sekali lagi, untuk gim berbasis giliran sederhana, kemudahan pengembangan dapat dengan mudah diprioritaskan daripada efisiensi format, jadi kecuali Anda ingin mengembangkan format biner yang efisien - jangan.
Ini bukan alasan yang baik untuk memilih untuk mengimplementasikan fungsi ini sendiri. Itu hanya sesuatu yang menyenangkan untuk diketahui, jika Anda memutuskan untuk mengikuti jalan ini.
Anda harus mempertimbangkan berapa banyak waktu yang Anda hemat dengan mengembangkan solusi khusus dan menerapkannya dengan cepat, dibandingkan menggunakan solusi yang ada dan mungkin melakukan penyebaran yang lebih lama. Kemungkinannya adalah waktu pengembangan akan mengimbangi sedikit manfaat yang diberikan lebih cepat / lebih mudah.
Singkatnya - saya sarankan menggunakan solusi yang ada, jika memungkinkan. Kemungkinan akan menghemat banyak waktu. Adapun yang solusi, itu terserah Anda yang sudah ada.
sumber
Setelah menggunakan SmartFox dan ElectroServer cukup luas, saya selalu merekomendasikan ElectroServer. Itu melakukan semua hal yang sama seperti SmartFox, tetapi hanya sedikit lebih solid, dan termasuk dukungan biner.
sumber
Saya sangat merekomendasikan melihat proyek Google App Engine .
Baik untuk hosting dan alasan teknis. Jika permainan Anda tidak berjalan cepat maka itu harus menjadi tempat yang baik untuk memulai dan menjalankan dan menjalankan, dan memiliki ruang lingkup untuk mengukur.
Kode bisa dalam Python atau Java.
Neptune's Pride ada di Google App Engine. Lihat wawancara dengan Pengembang di sini .
sumber
Lihatlah server game netty berikut . Ini mendukung protokol biner. Catatan: Ditulis oleh saya! Memiliki dukungan TCP dan UDP, menggunakan jetlang untuk pengiriman pesan vm yang sangat cepat.
sumber
Anda harus benar-benar melihat ke Firebase, server game Java multipemain open source.
Dibandingkan dengan Smartfox, Firebase menggunakan protokol biner, tidak membengkak dengan fitur dan berkinerja tinggi.
Jika Anda menggulung sistem Anda sendiri, Anda harus mengurus semuanya mulai dari memegang soket hingga menangani konkurensi. Dengan Firebase, Anda dijamin satu tindakan pada satu waktu, per kamar.
Catatan : Firebase diperoleh oleh Google dan tidak lagi memiliki opsi sumber terbuka.
Lihat ini: http://www.cubeia.org/
sumber