Solusi terbaik untuk gim Android seketika multi-pemain [ditutup]

11

Saya berencana membuat game realtime multi-pemain untuk Android (2-8 pemain), dan saya menganggap, solusi untuk organisasi multi-pemain adalah yang terbaik:

  1. Buat server di PC, dan klien di seluler, semua komunikasi melalui server (ClientA -> PC SERVER -> Semua Klien)

  2. Gunakan bluetooth, saya belum menggunakannya, dan saya tidak tahu apakah sulit untuk membuat multipemain pada bluetooth

  3. 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?)

  4. Solusi lain?

piotrek
sumber
3
Apakah Anda berencana menjadikan ini hanya permainan lokal atau Anda ingin orang lain bisa bermain dengan orang di internet? Apakah Anda hosting mesin untuk permainan?
Tetrad
Saya memilih game multipemain skala kecil, saya berencana membuat game tempat orang-orang bertemu di ruangan, dan dapat memainkan game yang sama (ini adalah topik tesis saya: multipemain di platform seluler). Tetapi jika seseorang memiliki solusi menarik untuk bermain di internet saya juga tertarik.
piotrek

Jawaban:

2

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.

Grothos
sumber
9

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

  • Mencoba dan benar
  • Dapat diukur

Cons

  • Perlu menulis "multi-server" yang dapat menyelenggarakan beberapa gim secara bersamaan. Ini kemungkinan akan menggunakan teknologi yang sedikit berbeda dari ponsel Android Anda. Anda masih bisa menggunakan java, tetapi apakah Anda masih bisa menggunakan paket android?
  • Bisa mahal untuk dijalankan, dan dirawat
  • Anda dapat berpotensi menurunkannya suatu hari karena beberapa alasan. Fans mungkin tidak senang jika server turun hanya beberapa bulan setelah membeli game.

Peer To Peer dengan salah satu dari mereka yang memegang kendali

Pro

  • Server ad-hoc tempat teman dapat bergabung dengan teman lain saat mereka mau
  • Sedikit atau tanpa biaya operasional di pihak Anda
  • Kode server akan dicampur dengan kode klien, tidak perlu menulis aplikasi server yang terpisah.

Cons

  • Perlu menulis peer-finder sederhana terpusat. (Saya melakukan milik saya di php + mysql dalam beberapa ratus baris mudah)
  • Server berjalan di ponsel. Ponsel bisa lambat. Apakah semua ponsel target dapat menyelenggarakan game?
  • Apa yang terjadi jika telepon server terputus?
  • Lebih mudah daripada klien-server bagi peretas untuk masuk

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.

John McDonald
sumber
Saya tidak berpikir itu bisa dilakukan melalui bluetooth, saya ragu itu mendukung siaran: AFAIK hanya menghubungkan satu host tunggal ke yang lain, memiliki jumlah koneksi max sangat rendah, dan lambat.
o0 '.
4

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 <->.

notlesh
sumber