타일 · bei.pm

게시일: 2015년 11월 19일·업데이트 날짜: 2025년 02월 13일·한국어
이 텍스트는 OpenAI GPT-4o Mini에 의해 자동으로 번역되었습니다.

이 페이지에 설명된 파일 형식은 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 그래픽으로 서로 배열되어 있습니다. 이렇게 생성된 타일셋에는 훨씬 더 많은

주 컨테이너는 두 개의 섹션으로 구성되어 있습니다: headdata.

타일 헤더

주소 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) 버전 / 플래그?

여기에는 파일 형식의 버전 정보가 포함될 수 있습니다. 제가 가지고 있는 모든 파일에서 이 값은 0x02였습니다.

0x000c uint(32) 너비 (수평 해상도)

이미지 파일의 너비를 나타냅니다 (픽셀 단위).

Outpost 2의 모든 웰에서는 여기에서 값 0x20 또는 32가 예상됩니다.

0x0010 uint(32) 높이 (수직 해상도)

이미지 파일의 높이를 나타냅니다 (픽셀 단위).

Outpost 2의 모든 웰에서는 여기서 값 0x20 또는 32를 기대할 수 있습니다.

0x0014 uint(32) 색 깊이?

이 값의 의미는 알 수 없습니다.

모든 검사된 파일에서 8이라는 값을 포함하고 있기 때문에, 색 깊이 지표일 수 있습니다.

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개의 타일의 경계가 존재한다는 점을 고려해야 합니다 (이는 유닛의 보이지 않는 스폰을 위해 필요합니다).

추가로, 낮과 밤의 주기는 게임 사이클당 맵의 한 열만 업데이트하는 것 같습니다.
가속화된 낮과 밤의 주기는 다음과 같이 보입니다:

낮과 밤의 주기 시각화