게임 프로그래머는 두 가지 주요 데이터 저장 방법 중 하나에 의존했습니다.
- 각 데이터 파일을 별도의 파일로 저장
- 각 데이터 파일을 사용자 정의 아카이브 형식으로 저장
첫 번째 해결책의 단점은 낭비되는 디스크 공간 문제와 느린 설치 문제입니다.
두 번째 솔루션은 자신의 함정을 제공합니다. 먼저 자신의 이미지 / 사운드 등을 모두 작성해야합니다. 아카이브 된 데이터에 액세스하기 위해 사용자 정의 API를 사용하는로드 루틴. 추가 단점은 먼저 아카이브를 빌드하기 위해 자체 아카이브 유틸리티를 작성해야한다는 것입니다.
아카이브에서 모든 파일을 항상로드하지 않는 한 TAR / GZ는 특정 파일을 필요할 때 추출 할 수 없기 때문에 좋은 생각이 아닙니다. 이것이 많은 게임이 ZIP 아카이브를 사용하는 이유입니다. 필요에 따라 개별 파일을 추출 할 수 있습니다 (PK3 파일은 확장자가 다른 ZIP 파일에 지나지 않는 Quake 3입니다).
편집 : 게임 폴더 구조 "숨기기"및 실행 파일 만 "보존"
폴더 구조에서 게임 파일을 "숨기기"위해 다른 솔루션이 종종 사용됩니다. 실행 파일과 readme 파일 만 기본 디렉토리에 보관하고 게임 파일을 "data"또는 기타 관련 하위 폴더로 이동하십시오.
편집 : Gamedev Tuts Plus는 좋은 자료를 가지고 있습니다
편집 : libarchive
ZIP 파일과 같은 아카이브에서 파일 추출을 처리하는 아카이브 라이브러리 인 하나의 잠재적 솔루션 libarchive. 또한 추출 된 파일을 표준 FILE 포인터에 할당하여 다른 라이브러리와의 인터페이스를보다 간단하게 만들 수 있습니다.
편집 : 대체 확장자를 가진 ZIP 형식 파일
나는 여기 @Joachim Sauer의 코멘트를 좋아한다
다른 확장자가 ZIP 형식의 파일을 사용하여뿐만 아니라 게임 이외의 좋은 전통이있다 : 자바는 그것을 수행 의 오픈 도큐먼트 포맷 (오픈 오피스 / LibreOffice와 형식 일명)을 수행 , 심지어 ( "새로운"마이크로 소프트 오피스 포맷 일명) 오피스 오픈 XML 그렇습니다 .