Nah, ada buku ini - yang sudah agak tua sekarang, dan saya belum pernah benar-benar membacanya, tetapi dari penerbit terkemuka. Saya juga menemukan ini , yang lebih baru, tetapi saya belum pernah mendengar sebelumnya. Keduanya mengklaim mencakup masalah pengembangan game MMO (atau setidaknya online); yang mengatakan, prediksi sisi klien kurang lebih sama terlepas dari skala basis pemain bersamaan Anda, dan Google memiliki banyak informasi tentangnya .
Sangat penting untuk menyadari bahwa dari perspektif praktis, agak sulit bagi pengembang indie / hobi untuk menyatukan permainan yang akan cukup populer untuk mengumpulkan cukup banyak pemain untuk mencapai puncak teori konkurensi yang cukup tinggi untuk dianggap "masif." Namun tekniknya masih bisa edukatif untuk diteliti.
Ada dua klasifikasi utama yang dapat Anda lakukan:
- Jadilah agresif dalam mengirim hanya jumlah data minimum ke set minimal klien yang membutuhkannya.
- Rancang game yang tidak memberikan insentif pemain untuk menggumpal terlalu banyak, membantu Anda menjaga "set klien yang membutuhkan" hal-hal kecil secara umum.
Yang kedua benar-benar masalah desain permainan dan manipulasi sosial - ini terutama rumit karena permainan multipemain secara sosial bersifat sosial, itu bagian dari daya tarik mereka, jadi Anda tidak ingin terlalu banyak mengecilkan kelompok pemain. Di sisi lain, gim di mana semua orang di dunia menelurkan orang yang menjatuhkan barang rampasan terbaik dalam gim akan sulit untuk diukur.
Untuk opsi pertama, Anda dapat mempertimbangkan untuk melakukan olahpesan berjenjang - ada beberapa hal tentang pemain lain yang selalu penting untuk diketahui, seperti posisi. Tetapi hal-hal lain, seperti kesehatan, mungkin tidak sepenting objek yang tidak dapat dilihat oleh pemain saat ini, sehingga Anda mengirim apa yang Anda kirim ke pemain itu berdasarkan jarak relatif semua entitas lain di sekitarnya - ini pada dasarnya adalah pelambatan data yang Anda kirim, seperti yang Anda sebutkan di bagian terakhir dari pertanyaan Anda, serta memfilternya.
Arsitektur multipemain skala sangat besar juga akan menyangga laporan yang tidak perlu segera diambil tindakan. Karakter menyimpan pesan yang dikirim ke server dapat dilakukan dalam delta, dengan pembaruan penuh hanya pada titik-titik kritis, dan pembaruan ini dapat disangga pada server pelambatan sehingga mereka dikirim ke server yang benar-benar menyimpan data karakter dalam keadaan stabil, mode berkala - sebagai basis pemain Anda, Anda harus khawatir tentang mengoptimalkan IO disk serta lalu lintas jaringan. Anda tidak ingin menyebabkan database karakter Anda rusak.
Kecepatan dan ukuran paket sangat berbeda dari game ke game, seperti halnya untuk game non-MMO. Ini benar-benar persyaratan yang sangat spesifik dan tidak ada standar umum.
Selain jawaban di atas, baca di TCP_NODELAY dan bagaimana penskalaan jendela beroperasi. Memahami rincian TCP (dan ya, Anda ingin menggunakan TCP bukan UDP kecuali prospek menangani pembaruan diferensial yang keluar dari pesanan terdengar menyenangkan bagi Anda) dan pengiriman ulang sangat penting untuk kontrol latensi.
sumber