Saya membuat game platformer yang memiliki fitur "kooperatif" yang ingin saya garap melalui jaringan / internet.
Sekarang saya telah membaca tentang pemrograman game jaringan termasuk artikel-artikel seperti Apa yang perlu diketahui oleh setiap programmer tentang jaringan game dan jadi saya memahami perbedaan antara teknik-teknik seperti kunci pintu Peer-to-Peer dan arsitektur prediksi Server-Client:
- Saya telah menyimpulkan bahwa untuk game real-time apa pun yang akan dimainkan melalui internet, langkah sebaya Peer-to-Peer bukanlah pilihan.
- Saya juga khawatir bahwa bahkan untuk platformer, arsitektur klien-server sederhana (tanpa semacam prediksi klien) akan menghasilkan gameplay yang menurun karena keterlambatan antara tindakan dan reaksi yang disebabkan oleh perjalanan pulang-pergi ke server. (Setelah mengatakan bahwa saya ingin menghilangkan kebutuhan untuk server pusat, dan hanya satu pemain, klien, yang benar-benar akan mengalami kelambatan ini).
Ini meninggalkan prediksi klien, tetapi bahkan untuk game sederhana seperti platformer ini masih terdengar cukup kompleks.
Bagaimana cara saya membuat sistem prediksi klien yang berfungsi untuk game platformer multi pemain?
networking
multiplayer
platformer
Justin
sumber
sumber
Jawaban:
Saya tidak berpikir bahwa setengah dari basis kode Anda akan berubah menjadi kode jaringan jika Anda memutuskan untuk mengimplementasikan fitur seperti ini.
Menurut pendapat saya, cara paling sederhana untuk melakukan ini, adalah menyiapkan server "sentral" (bahkan jika itu berarti bahwa satu pemain "host" permainan dan kemudian terhubung ke server sendiri) yang menerima semua input pengguna secepat mungkin , dan mengirimkannya kembali ke setiap klien.
Di klien, Anda menerapkan ini tidak berbeda dengan jika Anda melakukan permainan bersama untuk dua pemain secara lokal, kecuali Anda membaca P1 dari keyboard, dan P2 dari jaringan.
Anda harus meminta server mengirimkan status permainan penuh sesekali, dan kedua klien dapat snap ke status authoratitave baru dari server, atau mereka dapat meluncur ke status baru (lebih dari beberapa detik). Kecuali Anda memiliki kehilangan paket yang mengerikan atau banyak klien per server, pendekatan ini cukup untuk situasi yang Anda garis besarkan.
sumber
Saya memiliki permainan gaya mMORPG yang sepenuhnya berfungsi dengan prediksi klien (permainan ini masih jauh dari selesai tetapi berjalan 'OK') dan saya memiliki sesuatu di sepanjang 40.000 baris kode untuk server dan dobel untuk klien (tambahkan jumlah yang sama untuk alat, dll. .). Prediksi ini mungkin tidak lebih dari beberapa ratus baris (bahkan jika itu) dan seluruh bagian jaringan beberapa ribu baris tetapi tidak lebih dari mengatakan 5.000 (tergantung sedikit di mana Anda menggambar garis).
Fuzzy question fuzzy answer ;-)
sumber
Proporsi yang signifikan dari kode jaringan dapat terlepas dari game yang Anda mainkan. Karena itu, dan karena Anda baru mengenal jaringan, hal pertama yang saya sarankan Anda lakukan adalah menemukan perpustakaan yang akan bekerja untuk Anda. RakNet misalnya.
Satu hal yang Anda inginkan dalam kode gim Anda adalah kemampuan untuk menangani beberapa kondisi gim yang berbeda, yang dapat Anda gunakan untuk interpolasi dan prediksi. Itu cukup sederhana untuk dirancang di muka, tetapi bisa menjadi pekerjaan yang signifikan jika Anda memodifikasi gim pemain tunggal yang ada.
Perhatikan juga bahwa jika Anda ingin membuat orang asing memainkan permainan peer to peer melalui internet, Anda mungkin memerlukan setidaknya satu server di suatu tempat yang menangani lobi / perjodohan.
sumber