Apakah JMS cocok untuk game online?

Saya ingin mengadakan permainan kecil dan menayangkannya secara online. Itu akan multipemain (idealnya MMO, tapi ini proyek sampingan, jadi saya akan puas dengan MO hehe), isinya agak tidak penting. Saya berencana menulis game (server dan klien) di Java.

Saya sedang mempertimbangkan opsi yang saya miliki untuk mendapatkan informasi dengan andal. Akankah JMS cukup untuk ini? Apakah saya akan membutuhkan lebih banyak (jika ya, apa)? Apakah ada alternatif yang lebih baik?

Saya telah membuat beberapa game di masa lalu, tapi tidak ada yang multipemain. Saya bekerja dengan aplikasi yang menggunakan JMS, dan ada banyak tutorial, jadi itulah mengapa saya pikir itu akan berhasil... tapi saya sangat terbuka untuk apa pun.

Terima kasih!

Sunting: Tampaknya saya harus banyak belajar tentang JMS. Mungkin pertanyaan saya harus diutarakan ulang menjadi: "Implementasi JMS apa yang paling sesuai dengan tujuan saya untuk MMO?"

Kriteria sejauh ini:

  • Bebas
  • Biaya overhead rendah
  • Mudah dikonfigurasi

person corsiKa    schedule 09.08.2010    source sumber


Jawaban (3)


JMS akan berasumsi bahwa semua pemain Anda berada di jaringan lokal yang sama. Saya rasa ini tidak akan berhasil jika game Anda dimainkan melalui Internet.

person duffymo    schedule 09.08.2010
comment
+1 karena tidak menebak-nebak apa yang coba dipecahkan oleh pengguna. :) - person carlsborg; 10.08.2010
comment
Jadi begitu. Jadi JMS mungkin bekerja dengan baik untuk interaksi antara berbagai komponen server saya, tetapi tidak untuk komunikasi server-klien? Jika demikian, alternatif apa yang dapat Anda tawarkan? - person corsiKa; 10.08.2010
comment
ActiveMQ sebenarnya memiliki transportasi HTTP. Tidak yakin bagaimana skalanya, tetapi ini akan berhasil untuk merilis rilis pertama Anda dengan cepat. http://activemq.apache.org/http-and-https-transports-reference.html - person carlsborg; 10.08.2010

Jangan lupa bahwa JMS adalah API dan tidak menentukan implementasinya. Saya menduga bahwa untuk sebuah game Anda akan memerlukan pengiriman yang cepat, dan memilih implementasi mungkin bergantung pada atribut termasuk ini.

Anda mungkin ingin memeriksa JGroups. Selain mengimplementasikan JMS, ini juga sangat dapat dikonfigurasi dan digunakan untuk mengimplementasikan banyak pola pengiriman pesan yang berbeda. Anda dapat memilih untuk menerapkan keandalan, pemesanan, dll. dan menyesuaikan untuk berbagai aplikasi/klien, dll.

person Brian Agnew    schedule 09.08.2010
comment
Jadi begitu. Saya akan merevisi pertanyaan saya sesuai dengan itu, berdasarkan pada google-fu cepat jawaban Anda mengarahkan saya. - person corsiKa; 10.08.2010

JMS bagus jika Anda memerlukan jaminan pengiriman pesan yang ditransaksikan. Biasanya batasan semacam itu tidak ada dalam sebuah game (meskipun itu tergantung pada jenis gamenya). Jika Anda menginginkan komunikasi dengan latensi rendah, JMS mungkin bukan solusinya. Selain itu, tanpa memberikan lebih banyak informasi tentang persyaratan game, sangat mustahil untuk mengatakan apakah JMS cocok untuk Anda atau tidak.

person Jherico    schedule 09.08.2010
comment
Saya penasaran, dalam keadaan apa saya tidak memerlukan jaminan pengiriman? Jika seseorang mencoba membaca mantra, itu tidak bisa... tidak mencapai server! - person corsiKa; 10.08.2010
comment
Game FPS sering kali menggunakan UDP (yang tidak menjamin pengiriman atau pemesanan) untuk komunikasi karena setiap paket memiliki semua (atau sebagian besar) statusnya dan hanya paket terbaru yang layak diproses. Jika Anda melewatkan satu atau dua paket dari 100, itu tidak masalah karena itu hanya akan menjadi gangguan yang tidak terlihat dalam bermain game. - person Jherico; 10.08.2010
comment
Hal ini mungkin berlaku untuk informasi status tentang lingkungan yang berasal dari server ke klien, tetapi bagaimana dengan tindakan pengguna? Bukankah hal itu memerlukan tingkat keandalan yang lebih tinggi? - person corsiKa; 10.08.2010
comment
Anda ingin hal itu diakui, tetapi tidak perlu ditransaksikan seperti yang dilakukan JMS. Implementasi sederhananya adalah klien akan mengirimkan sinyal 'tekan api pada waktu x' sebagai bagian dari paketnya hingga klien menerima kembali paket dari server yang mengakui perubahan status. Biaya overhead-nya masih lebih kecil dibandingkan JMS atau bahkan TCP. - person Jherico; 10.08.2010
comment
Anda mengemukakan poin yang sangat bagus - Saya dapat memisahkan paket-paket yang memiliki prioritas lebih tinggi dari paket-paket kesadaran keadaan latar belakang... Apakah Anda dapat menyarankan perpustakaan Java yang menangani konsep-konsep ini secara abstrak? - person corsiKa; 10.08.2010