¿Tenemos que preocuparnos por las órdenes de bytes en el proceso de programación de un juego? ¿Las consolas de juegos usan diferentes órdenes de bytes?
¿Tenemos que preocuparnos por las órdenes de bytes en el proceso de programación de un juego? ¿Las consolas de juegos usan diferentes órdenes de bytes?
Respuestas:
¿Tienes que preocuparte por eso? Probablemente no. La gran mayoría de la programación de juegos estará a un nivel tal que el endianness se abstraiga. Incluso en redes, seguramente usará una biblioteca para protocolos de red. Es bueno que lo sepas, pero dudo que te encuentres con un problema.
La mayoria del tiempo, no.
La endianess generalmente se abstrae en los módulos de alto nivel de un motor de juego, y no tienes que preocuparte por eso a diario. Si no está abstraído, entonces el motor tiene un problema grave y debe solucionarse, porque este no es el tipo de detalles por los que debería preocuparse al hacer un juego.
Sin embargo, si está trabajando en algunas partes de bajo nivel de un motor multiplataforma C / C ++, es posible que deba lidiar con él. Las tres consolas de la generación actual usan una arquitectura PowerPC, que es big-endian, mientras que la arquitectura x86 utilizada en PC es little-endian. Entonces, si está trabajando en algún código que lee bytes sin procesar de algún lugar para colocarlos en estructuras de datos (serialización binaria, redes ...), sí, tendrá que lidiar con eso.
Por ejemplo, en C / C ++, es común ver este tipo de intercambio de bytes en acción (no probado, correcciones de bienvenida):
// Assume bytes comes ordered as big-endian
u16 u16FromBytes(void* data)
{
#if BIG_ENDIAN
return (u16(data[0]) << 8) + u16(data[1]);
#else // LITTLE_ENDIAN
return (u16(data[1]) << 8) + u16(data[0]);
#endif
}
Una vez más, esto está bien en el código de bajo nivel, pero esto no debería ser algo usado en todas partes.
Depende de las plataformas a las que apunta. Por ejemplo, creo que la PS3 es grande, así que si ese es uno de tus objetivos, entonces es algo que debes tener en cuenta, sí.
En el espacio de la computadora doméstica, los "Big 3" (Windows, Linux, Mac) son exclusivos, o casi exclusivamente, en las arquitecturas Intel x86 / x64 en estos días, por lo que las preocupaciones de resistencia ya no son relevantes.