애니메이션 · bei.pm
이 페이지에 설명된 파일 형식은 Dynamix, Inc.와 Sierra Entertainment의 지적 재산에 대한 기술 분석을 기반으로 합니다.
현재 이 지적 재산은 Activision Publishing, Inc.와 Activision Blizzard, Inc.의 자산에 포함되어 있으며, 현재 Microsoft Corp.가 소유하고 있습니다.
정보는 아카이빙 및 역사적 데이터와의 상호 운용성을 위해 리버스 엔지니어링 및 데이터 분석을 통해 수집되었습니다.
특허가 있는 비공식 사양은 사용되지 않았습니다.
현재 게임은 gog.com에서 다운로드로 구매할 수 있습니다.
이제 Outpost 2 데이터 형식 내의 분야 중 최상급인 애니메이션에 대해 알아보겠습니다.
애니메이션입니다.
애니메이션 목록은 주로 데이터 검증을 위한 글로벌 헤더로 시작됩니다. 그 다음에는 3단계로 구성된 구체적인 애니메이션 정의가 이어집니다:
-
애니메이션
애니메이션은 최상위 인스턴스입니다; 이는 특정 상황에서 단위, 건물 또는 '입자 애니메이션'(유성 충돌, 날씨, 폭발)의 애니메이션을 나타냅니다. -
프레임
프레임은 애니메이션 내의 단일 이미지입니다. 애니메이션은 하나 이상의 프레임을 포함할 수 있습니다. -
서브프레임
서브프레임은 특정 비트맵이 특정 기준 하에 프레임의 특정 위치에 그려져야 한다는 정보를 의미합니다. 하나의 프레임은 하나 이상의 서브프레임을 포함할 수 있습니다.
이후에는 각 애니메이션 정의가 바로 이어집니다.
주소 | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 문자 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
오프셋 | 데이터 타입 | 명칭 | 설명 |
---|---|---|---|
0x0000 | uint(32) | 애니메이션 수 | 애니메이션 데이터셋이 몇 개 있나요? |
0x0004 | uint(32) | 프레임 수 | 총 몇 개의 프레임이 있어야 합니까? |
0x0008 | uint(32) | 서브프레임 수 | 총 몇 개의 서브프레임이 있어야 하는지 |
0x000c | uint(32) | 선택적 항목 수 | 몇 개의 "선택적 항목"이 존재합니까? |
애니메이션
주소 | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 문자 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
오프셋 | 데이터 타입 | 명칭 | 설명 |
---|---|---|---|
0x0000 | uint(32) | 알 수 없음 1 | 알려지지 않은 정보 |
0x0004 | uint(32) | 바운딩 박스: 왼쪽 | 바운딩 박스의 왼쪽 시작 위치(픽셀 단위)를 지정합니다. |
0x0008 | uint(32) | 바운딩 박스: 위 | 바운딩 박스의 상단 시작 위치(픽셀)를 지정합니다. |
0x000c | uint(32) | 경계 상자: 너비 | 바운딩 박스의 너비(픽셀 단위)를 나타냅니다. |
0x0010 | uint(32) | 바운딩 박스: 높이 | 바운딩 박스의 높이(픽셀 단위)를 나타냅니다. |
0x0014 | uint(32) | 오프셋: X | 애니메이션의 수평 중심을 지정합니다 |
0x0018 | uint(32) | 오프셋: Y | 애니메이션의 수직 중앙점을 지정합니다 |
0x001c | uint(32) | 알 수 없음 2 | 알 수 없는 정보 |
0x0020 | uint(32) | 프레임 수 | 이 애니메이션에 포함된 애니메이션 프레임의 수를 나타냅니다. |
0x0024 | uint(32) | 윈도우 수 | 그림을 그릴 때 사용할 창의 수를 지정합니다. |
최상위 레이어의 데이터인 애니메이션은 주로 관리 데이터로 구성되어 있습니다 - Boundingbox는 차량/건물 주변의 마킹 좌표를 나타내며, 해당 항목이 선택되었을 때 클릭 가능한 영역을 동시에 표시합니다.
오프셋은 주로 "제로 포인트"를 결정합니다; 게임 내부 좌표에 더하거나 빼야 할 점입니다. 수학적으로 말하자면, 오프셋은 여기서 좌표 원점을 나타냅니다.
윈도우는 오프셋과 마찬가지로 각각 (윈도우당) 4개의 uint(32) 값으로 구성되어 있으며, 이는 개별 서브프레임에 사용할 수 있는 영역을 지정합니다. 비트맵에 적절히 지정된 경우, 윈도우 밖에서는 그려서는 안 됩니다.
프레임
주소 | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 문자 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
오프셋 | 데이터 타입 | 명칭 | 설명 |
---|---|---|---|
0x0000 | uint(8) | 서브프레임 수와 선택 사항 1, 2의 토글 | 이 값은 다음을 포함합니다:
|
0x0001 | uint(8) | 알 수 없는 1 및 선택 사항 3, 4를 위한 토글 | 이 값은 다음을 포함합니다:
|
0x0002 | uint(8) | 선택 사항 1 | 알려지지 않음 |
0x0003 | uint(8) | 선택 사항 2 | 알려지지 않음 |
0x0004 | uint(8) | 선택 사항 3 | 알려지지 않음 |
0x0005 | uint(8) | 선택 사항 4 | 알려지지 않음 |
서브프레임
주소 | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | 문자 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
오프셋 | 데이터 타입 | 명칭 | 설명 |
---|---|---|---|
0x0000 | uint(16) | 비트맵 ID | 이 서브프레임에 사용할 비트맵을 지정합니다. |
0x0002 | uint(8) | 알 수 없음 1 | 알 수 없습니다 - 그러나 저는 이것이 렌더 우선순위(Z-레이어)와 관련이 있다고 강하게 추측합니다. |
0x0003 | uint(8) | 서브프레임 ID | 현재 우리가 있는 서브프레임을 나타냅니다. |
0x0004 | sint(16) | 오프셋 - 수평 | 프레임 내에서 서브프레임이 어디에 배치되어야 하는지 또는 비트맵이 수평으로 몇 픽셀 이동해야 하는지를 지정합니다. |
0x0006 | sint(16) | 오프셋 - 수직 | 프레임 내에서 서브프레임이 어디에 배치되어야 하는지 또는 비트맵이 수직으로 몇 픽셀 이동해야 하는지를 지정합니다. |
이를 통해 우리는 개별 프레임뿐만 아니라 전체 애니메이션을 적절하게 조합할 수 있습니다. 여기서는 인덱스 500의 복잡한 애니메이션을 예로 들어 설명합니다.
애니메이션 500
애니메이션 500은 일반 광석이 실린 플리머스 화물차가 하역되는 모습을 보여줍니다. 이는 창 관리 기능을 활용하는 몇 안 되는 애니메이션 중 하나입니다.
이렇게 전체 애니메이션을 조합할 수 있습니다.
안타깝게도 상단 적재구에 문제가 있는데, 여기서 그래픽 유형 정보의 해당 비트가 설정되지 않았습니다.
게임에서의 아름답게 애니메이션된 스프라이트 몇 개를 더 소개합니다: