Asumsi...
- Anda berbicara tentang konversi ke buffer byte
- Anda menggunakan UDP dan kinerja menjadi masalah
Cobalah untuk menghindari pemborosan ruang dalam paket Anda untuk menentukan struktur. IE mengirim, setidaknya, satu byte untuk menunjukkan jenis paket, lalu anggap saja setiap paket yang diterima mengikuti struktur yang telah ditentukan untuk jenis paket tersebut
Haruskah saya membaca struct ke dalam soket? Gunakan buffer proticol / penghematan?
- Ya, baca keseluruhan struct JIKA Anda MEMBUTUHKAN seluruh struct
- Tidak, buat struktur paket sendiri, Ini pasti akan lebih kecil dari serialisasi menggunakan metode ini; Anda harus tahu persis data apa yang harus dimasukkan paket
Bagaimana saya harus mewakili array data?
- Sebagai array data. Saat menerima, lanjutkan membaca buffer hingga akhir data untuk menghindari pengiriman Hitungan elemen array
Seperti apa tampilan antarmuka untuk mengemas / membongkar data?
- Anda dapat dengan mudah mengatur banyak metode untuk mengkonversi tipe dasar ke byte, dari sana membangun metode ini untuk mengkonversi tipe kustom juga. Secara spesifik tentang cara melakukan ini dapat ditemukan hampir di mana saja saya yakin (saya menggunakan C # secara pribadi)
Satu hal lagi, ukuran paket adalah kekhawatiran, terutama untuk snapshot: size = PacketSize x entitas x connectedPlayers; Jadi, Anda mungkin memiliki 60 x 10 x 16 = 9,600 byte per paket Kemudian mengirim ini 20 kali per detik: = 192.000 bps = 187 KBps. Ini jelas merupakan kecepatan unggah bandwidth tinggi. Dengan demikian kebutuhan untuk meminimalkan masing-masing faktor yang berkontribusi terhadap ukuran paket jika memungkinkan.
Artikel ini sangat membantu saya:
Valve Multiplayer Networking