Chúng ta có phải lo lắng về các đơn đặt hàng byte trong quá trình lập trình một trò chơi không? Các bảng điều khiển trò chơi sử dụng các đơn đặt hàng byte khác nhau?
Chúng ta có phải lo lắng về các đơn đặt hàng byte trong quá trình lập trình một trò chơi không? Các bảng điều khiển trò chơi sử dụng các đơn đặt hàng byte khác nhau?
Câu trả lời:
Bạn có phải lo lắng về nó? Có khả năng là không. Phần lớn lập trình trò chơi sẽ ở một mức độ mà tính cuối cùng bị trừu tượng hóa. Ngay cả trong mạng, bạn gần như chắc chắn sẽ sử dụng một thư viện cho các giao thức mạng. Thật tốt khi bạn biết về nó, nhưng tôi nghi ngờ bạn sẽ gặp phải vấn đề với nó.
Hầu hết thời gian, không.
Endianess thường được trừu tượng hóa trong các mô-đun cấp cao của công cụ trò chơi và bạn không phải lo lắng về điều đó hàng ngày. Nếu nó không được trừu tượng hóa, thì động cơ có vấn đề nghiêm trọng và cần được khắc phục, bởi vì đây không phải là loại chi tiết bạn nên lo lắng khi làm game.
Tuy nhiên, nếu bạn đang làm việc trên một số bộ phận cấp thấp của công cụ đa nền tảng C / C ++, bạn có thể phải xử lý nó.Tất cả ba bảng điều khiển thế hệ hiện tại đều sử dụng kiến trúc PowerPC, là công cụ lớn, trong khi kiến trúc x86 được sử dụng trên PC là ít về cuối. Vì vậy, nếu bạn đang làm việc trên một số mã đọc byte thô từ một nơi nào đó để đặt chúng vào cấu trúc dữ liệu (tuần tự hóa nhị phân, mạng ...), thì bạn sẽ phải xử lý nó.
Ví dụ, trong C / C ++, thường thấy loại hoán đổi byte này đang hoạt động (không được kiểm tra, chào đón các chỉnh sửa):
// 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
}
Một lần nữa, điều này là ổn trong mã cấp thấp, nhưng điều này không nên được sử dụng ở mọi nơi.
Nó phụ thuộc vào các nền tảng bạn đang nhắm mục tiêu. Ví dụ, tôi tin rằng PS3 là một sản phẩm lớn, vì vậy nếu đó là một trong những mục tiêu của bạn thì đó là điều bạn cần phải biết, vâng.
Trong không gian máy tính gia đình, "Big 3" (Windows, Linux, Mac) hoàn toàn độc quyền hoặc hoàn toàn xuất sắc trên các kiến trúc Intel x86 / x64 ngày nay, vì vậy những lo ngại về tính lâu dài không còn phù hợp nữa.