Asumiendo...
- estás hablando de convertir a un búfer de bytes
- Está utilizando UDP y el rendimiento es una preocupación.
Intente evitar el desperdicio de espacio en su paquete para definir la estructura. IE envía, como mínimo, un byte para denotar el tipo de paquete, luego asume que cada paquete recibido sigue la estructura predefinida para ese tipo de paquete
¿Debería leer estructuras en el zócalo? Usar proticol tampones / ahorro?
- Sí, lea la estructura completa SI NECESITA la estructura completa
- No, haga la estructura del paquete usted mismo. Esto seguramente será más pequeño que la serialización usando estos métodos; debe saber exactamente qué datos debe incluir el paquete
¿Cómo debo representar matrices de datos?
- Como matrices de datos. Al recibir, continúe leyendo el búfer hasta el final de los datos para evitar enviar un Conteo de los elementos de la matriz.
¿Cómo debería ser la interfaz para empacar / desempacar datos?
- Podrías configurar fácilmente un montón de métodos para convertir tipos básicos a bytes, a partir de ahí, construir sobre estos métodos para convertir tipos personalizados también. Los detalles sobre cómo hacer esto se pueden encontrar en casi cualquier lugar, estoy seguro (uso C # personalmente)
Una última cosa, el tamaño del paquete es una preocupación, especialmente para una instantánea: tamaño = paquete tamaño x entidades x conectado jugadores; Entonces, puede tener 60 x 10 x 16 = 9,600 bytes por paquete. Luego enviar esto 20 veces por segundo: = 192,000 bps = 187 KBps. Obviamente, esta es una alta velocidad de carga de ancho de banda. Por lo tanto, la necesidad de minimizar cada uno de los factores que contribuyen al tamaño del paquete siempre que sea posible.
Este artículo me ha ayudado enormemente:
Valve Multiplayer Networking