Sebagai permulaan, saya memiliki latar belakang yang baik dalam jaringan (perangkat keras, router, ex.) Tetapi sangat sedikit pengetahuan yang melewati dasar-dasar pemrograman jaringan. Ini mungkin tampak seperti pertanyaan bodoh, tapi saya ingin tahu apa yang saya hadapi saat memahami implementasi multi-pemain dalam permainan saya.
Saya menciptakan dunia berbasis ubin, yang dihasilkan melalui 2D Array sederhana. Katakanlah seperti World [100] [100], demi kesederhanaan.
Saat ini, metode render hanya merender petak berdasarkan resolusi jendela, ditambah satu petak (untuk perenderan yang halus selama gerakan.) Tidak peduli seberapa besar dunia, (10x10, 1 juta x 1 juta) rendering tidak cacat dalam kinerja.
Aspek gimnya tidak lebih dari sekadar mengetahui apa yang ada dalam tampilan saat ini (ditampilkan pada layar +1) dan paling banyak BEBERAPA informasi ubin di area sekitar pemain.
Jadi apapun yang dikirim oleh Server tidak akan menjadi informasi ubin lengkap. Ex. Item yang diletakkan di tanah, jenis tanah, pohon, dll. Tidak akan menjadi penting di area di luar tampilan pemain, tetapi hanya akan menjadi apa yang Klien / Pemain perlu ketahui tentang ubin itu. (Contoh 'nama masuk' Ultima Online di mana pemain bisa mengetahui Karakter [pemain atau monster] tepat di luar ubin dalam tampilan yang diberikan.)
Saya tidak tahu banyak tentang jaringan, jadi mungkin ketika saya belajar ini dapat menjawab pertanyaan saya. Namun, saya ingin tahu apakah ini merupakan solusi yang layak atau jika idenya hanya menggelikan.
Informasi yang dikirim akan berukuran sekitar 10x15 ubin, dan setiap ubin menyimpan informasi tentang apa yang ada di ubin. Lebih efisien, semuanya akan menjadi Obyek, di mana ubin memegang semua Objek di ubin. Ex. Ubin [4] [4] memiliki Pedang # 23452, Rock2, Tree5, Player3, Monster4.
Ubin kosong tidak akan mengirim apa pun selain tipe medan [Rumput, Pasir, Air] jika belum dimuat selama Inisialisasi / Beban. Beberapa ubin akan memiliki beberapa benda [Tree2, Sword # 924, Gold, Corpse, Rock3].
Jadi saya tidak dapat membayangkan bahwa ubin akan memiliki banyak informasi untuk dikirim ke Klien dari Server, karena Klien hanya perlu mengetahui Tekstur yang perlu dimuat dan Posisi untuk meletakkannya di layar. Posisinya hanya dua bilangan bulat dan Tekstur menjadi satu bilangan bulat untuk daftar file yang akan dikirim klien.
Paling gila, Server harus mengirim 150 ubin dengan informasi hanya sedikit Objek OnLOAD, dan sejak saat itu hanya pembaruan perubahan ubin (jika ada) dan ubin baru (10 hingga 15 setiap kali pemain bergerak ke suatu arah ) dan arah gerakan untuk karakter di layar (sehingga klien dapat mensimulasikan gerakan halus antara ubin).
Saya berasumsi saya benar dalam berpikir ini adalah jumlah yang sangat rendah dari informasi yang dikirim melalui internet atau di antara rekan-rekan, sehingga seharusnya memiliki sedikit masalah dengan kinerja bahkan melalui koneksi yang lambat? Atau apakah saya begitu bodoh dengan jaringan sehingga pikiran saya akan meledak ketika saya akhirnya membuka buku saya di jaringan multi-pemain?
Jika jumlah informasi yang dikirim antara Klien / Server sangat rendah, apakah lebih masuk akal untuk memuat seluruh Dunia pada Inisialisasi? Atau 'Peta' jika Dunia terlalu besar. Dan setelah LOAD, kirim hanya ubin yang diperbarui?
Saya masih memikirkan bagaimana saya harus menangani data secara khusus. Buku yang saya gunakan sebagai referensi ingin saya memiliki Daftar Tertaut, tempat saya menambah dan menghapus objek, jadi semuanya bool. "Apakah ada Karakter? Apakah ada Pohon?"
Saya sedang memikirkan pendekatan yang berbeda, seperti wadah yang menampung objek, dan logika Server yang hanya mengirim apa yang diperlukan untuk memberi tahu Klien apa yang harus dirender. Mungkin dengan objek yang menyimpan informasi jaringan di dalam dirinya sendiri, yang dikirim ketika dipanggil oleh Server.