Precisamos nos preocupar com ordens de bytes no processo de programação de um jogo? Os consoles de jogos usam ordens de bytes diferentes?
Precisamos nos preocupar com ordens de bytes no processo de programação de um jogo? Os consoles de jogos usam ordens de bytes diferentes?
Respostas:
Você precisa se preocupar com isso? Provavelmente não. A grande maioria da programação de jogos estará em tal nível que o endianness será abstraído. Mesmo em redes, você quase certamente usará uma biblioteca para protocolos de rede. É bom que você esteja ciente disso, mas duvido que você tenha um problema com isso.
Na maior parte do tempo, não.
Endianess geralmente é abstraída nos módulos de alto nível de um mecanismo de jogo, e você não precisa se preocupar com isso diariamente. Se não for abstraído, o mecanismo tem um problema sério e deve ser corrigido, porque esse não é o tipo de detalhes com o qual você deve se preocupar ao criar um jogo.
No entanto, se você estiver trabalhando em algumas partes de baixo nível de um mecanismo multiplataforma C / C ++, poderá ter que lidar com isso. Todos os três consoles de geração atual usam uma arquitetura PowerPC, que é big-endian, enquanto a arquitetura x86 usada no PC é little-endian. Portanto, se você estiver trabalhando em algum código que lê bytes brutos de algum lugar para colocá-los em estruturas de dados (serialização binária, rede ...), sim, você terá que lidar com isso.
Por exemplo, em C / C ++, é comum ver esse tipo de troca de bytes em ação (não testado, recebendo correções):
// 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
}
Mais uma vez, isso é bom no código de baixo nível, mas isso não deve ser algo usado em todos os lugares.
Depende das plataformas que você está segmentando. Por exemplo, acredito que o PS3 é de grande porte, por isso, se esse é um dos seus objetivos, é algo que você precisa conhecer, sim.
No espaço dos computadores domésticos, os "Big 3" (Windows, Linux, Mac) são exclusivos ou praticamente excepcionais nas arquiteturas Intel x86 / x64 hoje em dia, de modo que as preocupações com a durabilidade não são mais relevantes.