Нужно ли беспокоиться о порядке следования байтов в процессе программирования игры? Игровые приставки используют разные порядки байтов?
Нужно ли беспокоиться о порядке следования байтов в процессе программирования игры? Игровые приставки используют разные порядки байтов?
Ответы:
Вы должны беспокоиться об этом? Скорее всего нет. Подавляющее большинство игрового программирования будет находиться на таком уровне, что отстраненность от абстракции исчезнет. Даже в сети вы почти наверняка будете использовать библиотеку для сетевых протоколов. Хорошо, что вы знаете об этом, но я сомневаюсь, что у вас возникнут проблемы с этим.
Большую часть времени нет.
Endianess обычно абстрагируется в модулях высокого уровня игрового движка, и вам не нужно беспокоиться об этом ежедневно. Если это не абстракция, то движок имеет серьезную проблему и должен быть исправлен, потому что это не та деталь, о которой вам следует беспокоиться при создании игры.
Однако, если вы работаете над некоторыми низкоуровневыми частями многоплатформенного движка C / C ++, вам, возможно, придется иметь с этим дело. Все три консоли текущего поколения используют архитектуру PowerPC с прямым порядком байтов, тогда как архитектура x86, используемая на ПК, имеет младший порядок. Так что если вы работаете над кодом, который читает сырые байты откуда-то, чтобы поместить их в структуры данных (двоичная сериализация, работа в сети ...), да, вам придется иметь дело с этим.
Например, в C / C ++ часто встречается такая замена байтов в действии (не проверено, приветствуются исправления):
// 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
}
Еще раз, это нормально в низкоуровневом коде, но это не должно использоваться везде.
Это зависит от платформ, на которые вы ориентируетесь. Например, я полагаю, что PS3 - «бестолковая», поэтому, если это одна из ваших целей, это то, о чем вам нужно знать, да.
В области домашнего компьютера «большая тройка» (Windows, Linux, Mac) в настоящее время полностью или почти исключительно принадлежит архитектуре Intel x86 / x64, поэтому проблемы с конечностью больше не актуальны.