타일 · bei.pm
이 페이지에 설명된 파일 형식은 Dynamix, Inc.와 Sierra Entertainment의 지적 재산에 대한 기술 분석을 기반으로 합니다.
현재 이 지적 재산은 Activision Publishing, Inc.와 Activision Blizzard, Inc.의 자산에 포함되어 있으며, 현재 Microsoft Corp.가 소유하고 있습니다.
정보는 아카이빙 및 역사적 데이터와의 상호 운용성을 위해 리버스 엔지니어링 및 데이터 분석을 통해 수집되었습니다.
특허가 있는 비공식 사양은 사용되지 않았습니다.
현재 게임은 gog.com에서 다운로드로 구매할 수 있습니다.
주소 | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 문자 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
오프셋 | 데이터 타입 | 명칭 | 설명 |
---|---|---|---|
0x0000 | uint(32) | 매직 바이트 | |
0x0004 | uint(24) | 블록 길이 | |
0x0007 | uint(8) | 국기 |
타일은 아웃포스트-2 특정 비트맵 그래픽 포맷입니다. 이는 13개의 타일셋으로 구성되어 있으며, "우물"이라고 불립니다 (well0000.bmp
부터 well0012.bmp
까지), 이들은 볼륨 maps.vol 내에 위치하고 있습니다.
타일셋 / 우물에는 다음 내용이 포함되어 있습니다:
파일 이름 | 내용 |
---|---|
well0000.bmp | 32x32px 크기의 파란 그래픽 - 이미지 로더가 제대로 작동하는지 테스트하기에 적합 |
well0001.bmp | 밝은 암석, 밝은 암석 위의 산맥 및 밝은 암석에 있는 수많은 충돌 크레이터 변형을 포함 |
well0002.bmp | 밝은 암석에 배치할 수 있는 'Doodads' - 구조를 위해 고의적으로 배치된 요소들(예: 벽)과 식물 등을 포함 |
well0003.bmp | 밝은 암석 위의 크러스트 같은 구조를 포함 |
well0004.bmp | 어두운 암석, 어두운 암석 위의 산맥 및 어두운 암석에 있는 수많은 충돌 크레이터 변형을 포함 |
well0005.bmp | 어두운 암석에 배치할 수 있는 'Doodads' - 구조를 위해 고의적으로 배치된 요소들(예: 벽)을 포함 |
well0006.bmp | 어두운 암석 위의 크러스트 같은 구조와 밝은 암석과 어두운 암석 사이의 전환을 포함 |
well0007.bmp | 용암을 포함하며 각각 4-5 프레임의 애니메이션을 포함 |
well0008.bmp | 모래 및 모래에 있는 수많은 충돌 크레이터 변형을 포함 |
well0009.bmp | 모래에 배치할 수 있는 'Doodads' - 구조를 위해 고의적으로 배치된 요소들(예: 벽)을 포함 |
well0010.bmp | 모래에서 밝은 암석과 어두운 암석으로의 각각 48개의 전환을 포함 |
well0011.bmp | 맵의 극관을 포함하며 어두운 암석을 바탕으로 함 |
well0012.bmp | 맵의 극관을 포함하며 밝은 암석을 바탕으로 함 |
정확한 구현을 위해 타일을 미리 렌더링하여 캐시하는 것은 권장하지 않습니다. 왜냐하면 주/야 주기에 대한 데이터는 아직 처리해야 하며, 매우 많은 데이터가 발생할 수 있기 때문입니다.
타일은 각각 32x32 픽셀 해상도의 인덱스 팔레트를 가진 8bpp 그래픽으로 서로 배열되어 있습니다. 이렇게 생성된 타일셋에는 훨씬 더 많은
주 컨테이너는 두 개의 섹션으로 구성되어 있습니다: head
와 data
.
타일 헤더
주소 | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 문자 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
오프셋 | 데이터 타입 | 명칭 | 설명 |
---|---|---|---|
0x0000 | uint(32) | 매직 바이트 | |
0x0004 | uint(24) | 블록 길이 | |
0x0007 | uint(8) | 국기 | |
0x0008 | uint(32) | 버전 / 플래그? | 여기에는 파일 형식의 버전 정보가 포함될 수 있습니다. 제가 가지고 있는 모든 파일에서 이 값은 |
0x000c | uint(32) | 너비 (수평 해상도) | 이미지 파일의 너비를 나타냅니다 (픽셀 단위). Outpost 2의 모든 웰에서는 여기에서 값 |
0x0010 | uint(32) | 높이 (수직 해상도) | 이미지 파일의 높이를 나타냅니다 (픽셀 단위). Outpost 2의 모든 웰에서는 여기서 값 |
0x0014 | uint(32) | 색 깊이? | 이 값의 의미는 알 수 없습니다. 모든 검사된 파일에서 |
0x0018 | uint(32) | 색 깊이 2? | 이 값의 의미는 알려져 있지 않습니다. 아마도 '목표' 색 깊이일 수 있습니다. |
이 정보에 따라 표준화된 RIFF 형식의 팔레트 파일이 추가로 제공됩니다. 팔레트가 다른 곳에서도 등장하기 때문에 정확한 사양은 팔레트에서 확인할 수 있습니다.
타일 데이터
주소 | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 문자 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
오프셋 | 데이터 타입 | 명칭 | 설명 |
---|---|---|---|
0x0000 | uint(32) | 매직 바이트 | |
0x0004 | uint(24) | 블록 길이 | |
0x0007 | uint(8) | 국기 |
마지막으로 왼쪽 상단에서 오른쪽 하단으로 줄 단위로 나열된 원시 픽셀 데이터가 이어집니다.
일반적으로 8bpp 비트맵 형식인 그래픽의 데이터 값은 색상 팔레트에서 색상의 인덱스에 해당합니다.
게임 엔진은 타일을 *아마도* 필요에 따라 그립니다.
이는 32단계의 개별 타일을 가진 낮과 밤의 주기 때문인 것 같습니다. 이때 밝기 값에서 '조금씩' 차감되는 것으로 보입니다. 정확한 값은 아직 확인되지 않았으며, 저는 계산 기준으로 작업하고 있습니다.
v *= (daylight / 48) + 0.25;
픽셀의 HSV 데이터를 사용하여, 여기서 daylight는 0-31의 값이고 v는 0-1 사이의 값입니다. 또한 맵에는 각각 왼쪽과 오른쪽으로 16개의 타일의 경계가 존재한다는 점을 고려해야 합니다 (이는 유닛의 보이지 않는 스폰을 위해 필요합니다).
추가로, 낮과 밤의 주기는 게임 사이클당 맵의 한 열만 업데이트하는 것 같습니다.
가속화된 낮과 밤의 주기는 다음과 같이 보입니다: