Devons-nous nous soucier des ordres d'octets dans le processus de programmation d'un jeu? Les consoles de jeu utilisent-elles des ordres d'octets différents?
Devons-nous nous soucier des ordres d'octets dans le processus de programmation d'un jeu? Les consoles de jeu utilisent-elles des ordres d'octets différents?
Réponses:
Devez-vous vous en soucier? Probablement pas. Une grande majorité de la programmation de jeux va être à un niveau tel que l'endianisme est abstrait. Même en réseau, vous allez presque certainement utiliser une bibliothèque pour les protocoles de réseau. C'est bien que vous en soyez conscient, mais je doute que vous rencontriez un problème avec cela.
La plupart du temps, non.
Endianess est généralement résumé dans les modules de haut niveau d'un moteur de jeu, et vous n'avez pas à vous en soucier quotidiennement. S'il n'est pas abstrait, le moteur a un problème grave et devrait être corrigé, car ce n'est pas le genre de détails dont vous devriez vous soucier lorsque vous créez un jeu.
Cependant, si vous travaillez sur certaines parties de bas niveau d'un moteur multiplateforme C / C ++, vous devrez peut-être y faire face. Les trois consoles de génération actuelle utilisent une architecture PowerPC, qui est big-endian, tandis que l'architecture x86 utilisée sur PC est little-endian. Donc, si vous travaillez sur du code qui lit des octets bruts de quelque part pour les mettre dans des structures de données (sérialisation binaire, mise en réseau ...), oui, vous devrez y faire face.
Par exemple, en C / C ++, il est courant de voir ce type d'échange d'octets en action (non testé, accueillant les corrections):
// 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
}
Encore une fois, c'est OK dans le code de bas niveau, mais cela ne devrait pas être quelque chose utilisé partout.
Cela dépend des plateformes que vous ciblez. Par exemple, je crois que la PS3 est grande endurance, donc si c'est l'un de vos objectifs, c'est quelque chose dont vous devez être conscient, oui.
Dans l'espace informatique domestique, les "Big 3" (Windows, Linux, Mac) sont tous exclusivement ou presque exceptionnellement sur les architectures Intel x86 / x64 de nos jours, donc les problèmes d'endienness ne sont plus d'actualité.