Các lập trình viên trò chơi đã dựa vào một trong hai phương pháp lưu trữ dữ liệu chính:
- lưu trữ mỗi tệp dữ liệu dưới dạng một tệp riêng biệt
- lưu trữ mỗi tệp dữ liệu trong một định dạng lưu trữ tùy chỉnh
Hạn chế của giải pháp đầu tiên là vấn đề dung lượng ổ đĩa bị lãng phí, cũng như vấn đề cài đặt chậm hơn.
Giải pháp thứ hai cung cấp những cạm bẫy của riêng nó, đầu tiên là bạn phải viết tất cả hình ảnh / âm thanh / vv của riêng bạn. tải các thói quen sử dụng API tùy chỉnh để truy cập dữ liệu lưu trữ. Một nhược điểm nữa là bạn phải viết tiện ích lưu trữ của riêng mình để xây dựng kho lưu trữ ở nơi đầu tiên.
Trừ khi bạn sẽ luôn tải tất cả các tệp từ kho lưu trữ, TAR / GZ có thể không phải là một ý tưởng hay, bởi vì bạn không thể trích xuất các tệp cụ thể khi bạn cần chúng. Đây là lý do nhiều trò chơi sử dụng kho lưu trữ ZIP, cho phép bạn trích xuất các tệp riêng lẻ theo yêu cầu (một ví dụ điển hình là Quake 3, có tệp PK3 không có gì ngoài các tệp ZIP có phần mở rộng khác nhau).
EDIT: "Ẩn" cấu trúc thư mục trò chơi và "Chỉ giữ" các tệp thực thi
Một giải pháp khác thường được sử dụng để "ẩn" các tệp trò chơi trong cấu trúc thư mục. Chỉ giữ các tệp thực thi của bạn và có thể một tệp readme trong thư mục chính và di chuyển các tệp trò chơi vào một thư mục phụ có tên "dữ liệu" hoặc liên quan khác.
EDIT: Gamedev Tuts Plus có một tài nguyên tốt
EDIT: vô chính phủ
Một giải pháp tiềm năng libarchive, đó là một thư viện lưu trữ sẽ xử lý việc trích xuất các tệp từ một kho lưu trữ, chẳng hạn như tệp ZIP. Nó thậm chí còn cho phép bạn gán tệp được trích xuất cho một con trỏ FILE tiêu chuẩn, điều này sẽ khiến việc giao tiếp với bất kỳ thư viện nào khác có khả năng đơn giản hơn.
EDIT: Tệp định dạng ZIP với phần mở rộng thay thế
Ở đây, tôi thích Bình luận của @Joachimererer
Sử dụng các tệp định dạng ZIP với các tiện ích mở rộng thay thế cũng có một truyền thống tuyệt vời bên ngoài các trò chơi: Java cũng vậy , Định dạng OpenDocument (còn gọi là định dạng OpenOffice / LibreScript) , thậm chí cả Office Open XML (còn gọi là định dạng Microsoft Office "mới") thực hiện nó .