Tại sao hầu hết các công cụ trò chơi lớn không sử dụng gifs cho kết cấu hoạt hình?


28

Điều gì là tốt hơn để sử dụng Animation Sheets hoặc Gifs? Một lợi thế mà Gifs có trên Animation Sheets là bạn không phải suy nghĩ về việc khung hình quá nhanh hay quá chậm vì mã của bạn và cập nhật trong tích tắc thích hợp.

Những nhược điểm của việc sử dụng Gifs và lợi thế của Animation Animation có trên Gifs là gì?


7
Sau đó, có lẽ bạn nên sắp xếp lại câu hỏi của mình thành một câu như "Tại sao hầu hết các công cụ trò chơi lớn không sử dụng gifs cho kết cấu hoạt hình?" vì chúng không phổ biến, ít nhất là những gì tôi biết, vì những lý do chính đáng. Tôi nghĩ rằng điều đó sẽ cung cấp cho bạn các điểm kỹ thuật về lý do tại sao chúng không được sử dụng so với câu hỏi nào tốt hơn, không phù hợp với các trang SE.
Coburn

39
One advantage Gifs have over Animation Sheets is that you don't have to think about frames going too fast or too slowTại sao điều đó? Bạn đang dựa vào cái gì để đưa ra giả định đó? Thư viện? Các đặc điểm kỹ thuật định dạng tập tin? Một tệp gif vẫn chỉ là dữ liệu, bạn vẫn cần mã để diễn giải nó (hiển thị nó ở tốc độ chính xác)
hoffmale

13
Những gì hoffmale nói. GIF không phải là phép thuật; hoạt hình của họ vẫn cần được kiểm soát và thực thi bởi một số phần mềm, bao gồm cả thời gian của nó và trong trường hợp này, phần mềm đó được viết bởi bạn. Thành thật mà nói tôi sẽ không mong đợi mã xử lý Bảng hoạt hình của bạn sẽ khác một lượng lớn so với mã xử lý GIF của bạn.
Cuộc đua nhẹ nhàng với Monica

12
Sự khác biệt duy nhất giữa mã spritesheet và mã GIF của bạn, là mã GIF của bạn sẽ chuyển đổi GIF thành một spritesheet và sau đó gọi mã spritesheet;)
MickLH

6
gif không có bất kỳ lợi thế. nếu bạn muốn nén giữa các khung, thì gif có hiệu suất thấp hơn khoảng 30 lần so với bộ giải mã video thích hợp, trong khi cũng cho chất lượng kém hơn (đối với công cụ phát quang).
Sange Borsch

Câu trả lời:


91

Hạn chế của GIF:

  • bảng màu rất hạn chế, điển hình là 256 màu với độ hoà sắc xấu xí ( vâng, bạn có thể có hơn 256 màu trong GIF hoạt hình , nhưng điều này không phổ biến)
  • GPU không hỗ trợ nén GIF trong phần cứng (có nghĩa là bạn sẽ phải giải nén chúng trên CPU bằng mọi cách)
  • bạn chỉ có thể chọn MỘT màu để minh bạch (trừ khi thực hiện xử lý tùy chỉnh)
  • không có quyền truy cập ngẫu nhiên. Tất cả các khung GIF trước cần được đọc và giải nén để truy cập vào khung.
  • bị nén. Bạn cần chức năng giải nén chuyên dụng trong mã. Bạn không thể chọn các thuật toán nén khác nhau (tốt hơn). (vâng, GIF không nén cũng tồn tại , nhưng điều này không phổ biến)

Với định dạng tùy chỉnh, tất cả các mục này được giải quyết rất nhanh. Bạn có nhiều quyền kiểm soát hơn đối với định dạng hình ảnh, chất lượng, độ trong suốt, truy cập ngẫu nhiên và nén (bao gồm cả các định dạng hỗ trợ GPU giống như DXT). Thậm chí tốt hơn, bạn có thể ưu tiên các tính năng bạn cần.

Một lợi thế mà Gifs có trên Animation Sheets là bạn không phải suy nghĩ về việc khung hình quá nhanh hay quá chậm vì mã của bạn và cập nhật trong tích tắc thích hợp.

Trên tuyên bố là sai lệch. Đồng bộ fps GIF với fps trò chơi thực tế không khác nhiều so với đồng bộ hóa hoạt hình sprite tùy chỉnh. Trong cả hai trường hợp, bạn có chính xác cùng một thiết lập - một danh sách các khung, tốc độ khung hình mong muốn và kết xuất các sự kiện. Không có bột ma thuật trong GIF - dù sao bạn cũng sẽ phải giải nén GIF thành spritesheet, điều này đánh bại mục đích.

Tất nhiên một số công cụ trò chơi có thể ẩn một số vấn đề về GIF đằng sau màn cửa, nhưng sau đó, điều tương tự có thể được thực hiện với spritesheets theo cách tốt hơn.

Nói rằng, có một số trường hợp GIF có thể làm việc . Ví dụ: GUI HTML / CSS, nhưng chúng khá hiếm và ngốn tài nguyên.


Tôi không hiểu "một màu cho sự minh bạch." Có nhiều màu sắc để minh bạch nghĩa là gì? Bạn đang nói về việc thay đổi các giá trị alpha như áp dụng một độ trong suốt trên một kết cấu?
Erik

3
@Erik chính xác đó. GIF thông thường hỗ trợ tối đa 256 màu, trong đó chỉ 1 có thể được đánh dấu là trong suốt. Không giống như các định dạng khác, nơi độ trong suốt thường có phạm vi rộng hơn nhiều.
Kromster nói hỗ trợ Monica

@Kromster Trên thực tế, các trang web am hiểu tài nguyên sử dụng cơ chế hoạt hình tùy chỉnh cho hình ảnh hoạt hình, chẳng hạn như background-imagehoạt hình vị trí CSS trong đó hình động được đặt trên một hình ảnh lớn, sau đó được di chuyển bằng cách bù đắp.
Tomáš Zato - Phục hồi Monica

@ TomášZato Đúng. Xin lỗi, tôi có nói khác không?
Kromster nói hỗ trợ Monica

2
@ luk32 đây là một nhược điểm vì có nhiều phương pháp nén tốt hơn nhiều so với nén GIF cũ. Vì vậy, bạn có thể sử dụng nén GIF tối ưu hoặc nén (de) hai lần (lưu ý rằng nén dữ liệu đã nén thường mang lại kích thước lớn hơn).
Kromster nói hỗ trợ Monica

32

Để sử dụng bất kỳ tệp hình ảnh nào làm kết cấu trong trò chơi, phải có một kết cấu được tạo trên GPU và dữ liệu pixel trong tệp hình ảnh phải được tải vào kết cấu đó.

GPU không hỗ trợ nhiều tính năng mà các tệp hình ảnh trên CPU hỗ trợ. Chúng không hỗ trợ nén JPG, chúng không hỗ trợ nén PNG và với tham chiếu cụ thể đến GIF, chúng không hỗ trợ tự động hoạt hình .

Vì vậy, ngay cả khi bạn đã sử dụng tệp GIF, bạn vẫn sẽ phải viết mã hoạt hình và mã thời gian của riêng mình. GIF không mang lại cho bạn điều gì.


30
Lưu ý rằng "CPU" không hỗ trợ những thứ đó, trình duyệt web và hệ điều hành làm.
user253751

7
Gì, chưa ai viết trình duyệt web GPGPU chưa?
Camille Goudeseune

7
@CamilleGoudeseune Bạn cười. Tôi khóc.
3Dave

13

GIF có bảng màu hạn chế. (255) Bạn cũng phải thực hiện phân tích cú pháp và tạo hình động cho GIF. Vì vậy, không có sự tiến bộ về thời gian cũng như các khía cạnh kỹ thuật của định dạng.


4
256 nếu bạn không cần minh bạch, 255 có hiệu lực.
một CVn

@ MichaelKjorling Vẫn là 256 với độ trong suốt - chỉ một trong những màu được chỉ định là "trong suốt". Tôi tin rằng thông tin được lưu trữ trong tiêu đề.
3Dave

@DavidLively Do đó "hiệu quả". Màu vẫn còn, nhưng nó không thể được sử dụng làm màu đục.
một CVn

@Kromster vâng. Đã xóa. Tôi có thể có những bài toán tốt.
3Dave
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.