Чи потрібно турбуватися про замовлення байтів у процесі програмування гри? Чи ігрові консолі використовують різні байтові замовлення?
Чи потрібно турбуватися про замовлення байтів у процесі програмування гри? Чи ігрові консолі використовують різні байтові замовлення?
Відповіді:
Чи варто турбуватися про це? Ймовірно, ні. Переважна більшість ігрових програмувань буде на такому рівні, що втрачається небезпека. Навіть у мережі, ви майже напевно будете використовувати бібліотеку для мережевих протоколів. Добре, що ви це знаєте, але я сумніваюся, що ви зіткнулися з проблемою.
Більшість часу, ні.
Ендіазність зазвичай абстрагується від модулів високого рівня ігрового двигуна, і вам не доведеться турбуватися про це щодня. Якщо це не абстрагується, то в двигуна є серйозна проблема, і його слід виправити, оскільки це не той вид деталей, про який ви повинні турбуватися, роблячи гру.
Однак якщо ви працюєте над деякими низькорівневими частинами багатоплатформенного двигуна 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 є великим фактором, тому якщо це одна з ваших цілей, то це те, що вам потрібно знати, так.
У побутовому комп'ютерному просторі в наші дні "Big 3" (Windows, Linux, Mac) ексклюзивно, або все, але виключно, є архітектурами Intel x86 / x64, тому проблеми екологічності вже не актуальні.