Saat ini saya membuat game MMORPG, yang berbasis giliran. Klien seharusnya berjalan di Android. Sekarang, teman saya sedang membuat grafik, dan saya telah melakukan kelas permainan (pemain, persenjataan, dll.). Sekarang, jika pertarungan dimulai, kelas-kelas dapat dimanipulasi oleh antarmuka (sebenarnya untuk pasangan saya, itu seperti bekerja dengan antarmuka murni, dia tidak memerlukan akses ke kelas implementaton).
Sekarang kita perlu memperkenalkan server game untuk memungkinkan banyak pemain. Dan beberapa pertanyaan yang sangat penting muncul:
1) Haruskah saya menyalin model permainan ke server sepenuhnya, tidak meninggalkan kelas pada klien atau lebih baik memiliki 2 salinan model - 1 di server dan 1 di perangkat dan untuk menyelesaikan sinkronisasi berkala antara mereka?
2) Metode koneksi mana yang harus dipilih antara klien dan server (klien yang terlihat adalah ponsel android)? Adapun server - saya beralih ke java karena saya punya pengalaman dengannya. Tapi sekarang pertanyaannya adalah - apakah lebih baik menggunakan soket untuk tugas ini atau saya dapat menggunakan layanan REST, atau bahkan mungkin untuk menghubungkannya entah bagaimana ke server Java EE yang keren dari sudut pandang saya karena menghilangkan banyak pemrograman komplikasi? Meskipun gim ini multi-pemain, gim ini berbasis giliran, sehingga tidak perlu sering-sering diperbarui.
3) Bagaimana dengan threading? Haruskah setiap klien memiliki utas sendiri (jika ada soket)?
4) Apakah ada buku tentang pemrograman game server NYORPG NYATA di luar sana ???
sumber
Setuju dengan Mikolaj tidak menyalin segalanya. Kirim sesedikit mungkin data. Anda dapat memiliki kelas yang sama (hanya mewakili model data, bukan aset lain) di klien dan server, tetapi jangan mengirimnya melalui internet. Anda ingin membuat cerita bersambung di server dan deserialize di klien. Klien harus mengirim hanya perintah ke server.
Anda sedang merencanakan MMORPG berbasis giliran (tidak tahu bagaimana itu akan bekerja). Jadi kecepatan tidak banyak masalah. Anda dapat menggunakan layanan apa pun, REST mungkin bagus, sederhana. Biasanya MMORPG menggunakan UDP (tidak aman, lebih kecil, lebih cepat) untuk hal-hal seperti pembaruan gerakan di mana satu atau dua paket yang hilang tidak masalah dan TCP (aman, overhead) untuk komunikasi yang aman. Sebagian besar gim mungkin menggunakan semacam protokol khusus terenkripsi dan terkompresi melalui UDP dan TCP untuk membuatnya cepat dan sulit untuk diretas.
Biasanya Anda ingin memiliki kumpulan utas. Setiap utas dari layanan kolam satu permintaan, lalu didaur ulang. Ketika Anda tidak memiliki cukup utas, Anda dapat mempertimbangkan memblokir atau mengalokasikan lebih banyak utas.
Mikolaj sudah mencarinya di Google untuk Anda ...
sumber