Saya berencana membuat game realtime multi-pemain untuk Android (2-8 pemain), dan saya menganggap, solusi untuk organisasi multi-pemain adalah yang terbaik:
Buat server di PC, dan klien di seluler, semua komunikasi melalui server (ClientA -> PC SERVER -> Semua Klien)
Gunakan bluetooth, saya belum menggunakannya, dan saya tidak tahu apakah sulit untuk membuat multipemain pada bluetooth
Membuat server di salah satu perangkat, dan perangkat lain terhubung (melalui jaringan, tapi saya tidak tahu apakah sulit untuk menyelesaikan masalah dengan perangkat melalui NAT?)
Solusi lain?
architecture
android
networking
multiplayer
mobile
piotrek
sumber
sumber
Jawaban:
Penolakan; Saya belum melakukan banyak hal dengan java dan platform android.
Namun pengalaman saya yang lebih luas dengan bahasa '.net' di platform windows mobile, bersama dengan platform windows, adalah bahwa 75-90% dari semua kode yang diperlukan untuk membuat dan memelihara Bluetooth atau koneksi data jaringan dipertahankan / didukung dengan OS atau perpustakaan yang akan perlu mengakses perangkat keras.
Sejauh ini hal ini juga berlaku untuk Android, dengan OS yang mengungkap metode untuk membuat koneksi data melalui Bluetooth atau internet, bersamaan dengan mengaktifkan / menonaktifkan perangkat keras masing-masing.
Saya akan membayangkan bahwa Bluetooth akan menjadi metode koneksi yang disukai, karena ini akan menjadi yang paling murah untuk diterapkan (Tidak ada server). Dan memungkinkan untuk pertemuan / permainan yang lebih lokal. Bluetooth cukup mudah digunakan. fungsinya mirip dengan soket jaringan normal setelah Anda tahu perangkat mana yang ingin Anda sambungkan.
Yang lain benar karena Bluetooth v2.0 / v2.1 saat ini tidak mampu mendukung banyak data. Ini akan berubah dengan penyebaran akhirnya v3.0 dan lebih tinggi. dan ada cara untuk mengatasi batasan ini.
Untuk saat ini meskipun ada konsep sederhana, namun solusi yang kompleks, yang mungkin ingin Anda coba. Saya telah menggunakannya untuk sementara, Ini mirip dengan peer to peer, tetapi melibatkan permainan yang di-host di semua perangkat secara bersamaan. Dengan begitu jika koneksi terputus sementara, melambat, atau pemain terjatuh karena alasan apa pun, pemain lain tidak akan terpengaruh. Hal ini memungkinkan pengguna yang telah turun untuk bergabung kembali dengan game yang sedang berlangsung dengan sedikit atau tanpa gangguan ke pemain lain atau game mereka sendiri.
CON: Setiap pemain sebenarnya akan memainkan contoh permainan mereka sendiri yang agak unik, yang akan dikaitkan dengan pemain lain agar permainan tidak menyimpang terlalu jauh dari sinkronisasi satu sama lain.
CON: Kode pendukung bisa luas / kompleks dan sulit untuk membungkus kepala Anda tergantung pada apa yang ingin Anda capai.
PRO: Tidak diperlukan server atau perangkat pusat! Tidak diperlukan biaya perawatan $$$.
PRO: Pertukaran data yang besar hanya akan terjadi ketika seorang pemain (kembali) bergabung, atau sebuah permainan diinisialisasi. - Bahkan ini dapat dikurangi dengan memastikan bahwa semua game akan dihasilkan, dan maju dengan cara yang sama oleh semua pemain. POTENSI mengurangi konsumsi energi yang terjadi karena penggunaan jaringan yang berat.
PRO: Data menjadi kurang peka waktu, karena perangkat sudah memiliki semua data yang mereka perlukan untuk menjaga permainan tetap berjalan tanpa pemain lain. Memungkinkan Anda untuk lebih fokus pada pengalaman gim yang sebenarnya untuk masing-masing pengguna, daripada sekelompok pemain.
Saya tidak memiliki waktu untuk mengimplementasikan mesin permainan lengkap yang memanfaatkan ini. Gim-gim yang saya buat terbatas pada menciptakan gim-gim yang mirip dengan Monopoly, dan Uno, yang tampaknya berfungsi sangat baik.
Yang termudah adalah yang ditiru Uno. Saya pada dasarnya menumpuk deck yang kalah setelah pemain menang untuk memastikan bahwa pemain memenangkan semua pertandingan. 95% lebih dari waktu saya tidak bisa mengatakan bahwa saya tidak memainkan permainan yang sama persis seperti orang lain.
Saya mulai membuat game yang mirip dengan Master of Orion II, tetapi game itu sendiri sedikit banyak yang bisa saya lakukan sendiri.
sumber
Ini sangat tergantung pada permainan, tetapi beberapa teman dan saya memikirkan masalah yang sama hanya beberapa bulan yang lalu, dan inilah yang kami ditentukan. Aku dalam suasana pro dan kontra lagi.
Server Berbasis Komputer
Pro
Cons
Peer To Peer dengan salah satu dari mereka yang memegang kendali
Pro
Cons
Sedangkan untuk bluetooth, saya berharap itu mirip dengan metode peer to peer di atas. Saya juga tidak berpikir Anda harus memiliki masalah dengan NAT.
EDIT : Ini juga sangat tergantung pada pengalaman Anda. Saya akan mulai dengan menulis beberapa permainan klien / server yang relatif kecil untuk memahami jaringan terlebih dahulu. Ini adalah topik yang sulit yang mudah salah pada awalnya. Saya mendapatkan hak saya pada percobaan ketiga. Ikuti pola yang diketahui, dan jangan mencoba membuat sesuatu sendiri.
sumber
Salah satu pertimbangan terbesar yang perlu Anda lakukan adalah keandalan. Telepon tidak bisa diandalkan; pada kenyataannya, Anda mungkin harus berasumsi bahwa dalam permainan 8 pemain seseorang cenderung memutuskan sambungan (panggilan masuk, penerimaan buruk, pemain berhenti ...)
Dengan mengingat hal ini, pahami bahwa Anda harus meminimalkan dampak dari pengguna yang terputus. Pada opsi kedua Anda, pada dasarnya Anda telah membuat ponsel server. Jika telepon itu menjadi MIA, permainan akan berakhir secara efektif untuk semua pemain.
John membahas pro dan kontra dari arsitektur server klien tradisional <->. Ini mungkin cara paling tangguh untuk memberikan pengalaman multipemain yang andal bagi semua orang.
Anda juga dapat mempertimbangkan teknik sepanjang garis simulasi langkah-kunci. Ini dapat diimplementasikan secara murni peer-to-peer. Gagasan umum adalah bahwa setiap klien diharapkan mengirimkan pembaruannya (serangkaian perintah, atau ketiadaan) setiap langkah simulasi. Pada langkah simulasi berikutnya, perintah masing-masing pemain diterapkan ke logika permainan. Banyak game RTS menggunakan skema jaringan semacam ini.
Teknik ini bisa sulit untuk diimplementasikan dan bisa sangat sulit untuk di-debug. Ini tentu lebih sulit daripada memiliki arsitektur client-server yang lebih tradisional. Ini juga menyiratkan jeda antara input pemain dan ketika permainan merespons input. Namun, jika satu pemain keluar, pemain yang tersisa hanya bisa mengeluarkannya dari permainan dan melanjutkan. Ini juga berpotensi menurunkan lalu lintas jaringan dibandingkan dengan skema lain.
Jika Anda ingin mempelajari lebih lanjut tentang teknik ini, mulai dengan ini artikel yang sangat baik pada subjek. Kalau tidak, saya akan sangat mencegah skema jaringan di mana satu telepon bertanggung jawab untuk sesi multi-pemain, dan menyarankan klien yang lebih sederhana arsitektur server <->.
sumber