Czy musimy martwić się kolejnością bajtów podczas programowania gry? Czy konsole do gier używają różnych kolejności bajtów?
software-engineering
saadtaame
źródło
źródło
Odpowiedzi:
Jeśli piszesz kod sieci, często masz do czynienia z tak, tak.
Możliwe jest również, że porządkowanie bajtów w formacie pliku nie jest tym, czego używa Twoja platforma, więc czasem też ma to znaczenie.
źródło
Czy musisz się tym martwić? Prawdopodobnie nie. Zdecydowana większość programów gier będzie na takim poziomie, że endianizm zostanie oderwany. Nawet w sieci prawie na pewno będziesz używać biblioteki do protokołów sieciowych. Dobrze, że zdajesz sobie z tego sprawę, ale wątpię, byś miał z tym problem.
źródło
Przez większość czasu nie.
Endianess jest zwykle wyabstrahowany w modułach wysokiego poziomu silnika gry i nie musisz się o to martwić codziennie. Jeśli nie jest abstrakcyjny, silnik ma poważny problem i powinien zostać naprawiony, ponieważ nie są to takie szczegóły, o które powinieneś się martwić podczas tworzenia gry.
Jeśli jednak pracujesz nad niskopoziomowymi częściami silnika wieloplatformowego C / C ++, być może będziesz musiał sobie z tym poradzić. Wszystkie trzy konsole obecnej generacji wykorzystują architekturę PowerPC, która jest big-endianem, podczas gdy architektura x86 używana na PC jest little-endianem. Więc jeśli pracujesz nad kodem, który odczytuje gdzieś surowe bajty, aby umieścić je w strukturach danych (serializacja binarna, sieci ...), tak, będziesz musiał sobie z tym poradzić.
Na przykład w C / C ++ często zdarza się, że tego rodzaju zamiana bajtów w akcji (nie testowana, mile widziane poprawki):
Po raz kolejny jest to OK w kodzie niskiego poziomu, ale nie powinno to być wszędzie używane.
źródło
To zależy od platform, na które celujesz. Na przykład uważam, że PS3 to wielki endien, więc jeśli jest to jeden z twoich celów, musisz o tym wiedzieć, tak.
W domowej przestrzeni komputerowej „Big 3” (Windows, Linux, Mac) są obecnie wyłącznie, lub wszystkie, ale znakomicie, na architekturze Intel x86 / x64, więc obawy dotyczące endienity nie są już istotne.
źródło