Varsayarsak ...
- bir tampon bayta dönüştürmekten bahsediyorsunuz
- UDP kullanıyorsunuz ve performans endişe verici
Yapıyı tanımlamak için paketinizdeki alanı boşa harcamayın. IE, paket türünü belirtmek için en azından bir bayt gönderir, daha sonra alınan her paketin, bu paket türü için önceden tanımlanmış yapıyı izlediğini varsayalım
Yapıları sokete okumalı mıyım? Proticol tamponları / tasarruf mu kullanıyorsunuz?
- Evet, tüm yapıya İHTİYACINIZ OLSA, tüm yapıyı okuyun
- Hayır, paket yapısını kendiniz yapın, Bu kesinlikle bu yöntemleri kullanarak serileştirmeden daha küçük olacaktır; paketin tam olarak hangi verileri içermesi gerektiğini bilmelisiniz
Veri dizilerini nasıl temsil etmeliyim?
- Veri dizisi olarak. Alma sırasında dizi öğelerinin Sayımını göndermekten kaçınmak için veri sonuna kadar arabelleği okumaya devam edin
Arayüz, verileri paketlemek / paketinden çıkarmak için neye benzemelidir?
- Temel türleri baytlara dönüştürmek için bir dizi yöntemi kolayca kurabilirsiniz, oradan özel türleri dönüştürmek için bu yöntemler üzerine inşa edebilirsiniz. Bunun nasıl yapılacağıyla ilgili ayrıntılar, emin olduğum neredeyse her yerde bulunabilir (kişisel olarak C # kullanıyorum)
Son bir şey, paket boyutu olan , özellikle bir anlık için bir endişe boyut = PacketSize x kişiler connectedPlayers x; Böylece paket başına 60 x 10 x 16 = 9.600 bayt olabilir. Sonra bunu saniyede 20 kez gönderin: = 192.000 bps = 187 KBps. Bu, yüksek bir bant genişliği yükleme hızı olduğu açıktır. Böylece, mümkün olduğunda paket boyutuna katkıda bulunan faktörlerin her birini en aza indirme ihtiyacı.
Bu makale bana çok yardımcı oldu:
Valve Multiplayer Networking