애니메이션 · 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에서 다운로드로 구매할 수 있습니다.

이제 Outpost 2 데이터 형식 내의 분야 중 최상급인 애니메이션에 대해 알아보겠습니다.
애니메이션입니다.

애니메이션 목록은 주로 데이터 검증을 위한 글로벌 헤더로 시작됩니다. 그 다음에는 3단계로 구성된 구체적인 애니메이션 정의가 이어집니다:

  1. 애니메이션
    애니메이션은 최상위 인스턴스입니다; 이는 특정 상황에서 단위, 건물 또는 '입자 애니메이션'(유성 충돌, 날씨, 폭발)의 애니메이션을 나타냅니다.
  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의 토글

이 값은 다음을 포함합니다:

  • 0x7F (비트마스크): 이 프레임에서 사용되는 서브프레임의 수
  • 0x80: 선택사항 1과 2의 존재 여부에 대한 정보
0x0001 uint(8) 알 수 없는 1 및 선택 사항 3, 4를 위한 토글

이 값은 다음을 포함합니다:

  • 0x7F (비트 마스크): 불명 - 다음 프레임이 표시될 때까지 경과하는 게임 틱의 수라고 강하게 추측합니다
  • 0x80: 선택 사항 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은 일반 광석이 실린 플리머스 화물차가 하역되는 모습을 보여줍니다. 이는 창 관리 기능을 활용하는 몇 안 되는 애니메이션 중 하나입니다.

이렇게 전체 애니메이션을 조합할 수 있습니다.
안타깝게도 상단 적재구에 문제가 있는데, 여기서 그래픽 유형 정보의 해당 비트가 설정되지 않았습니다.

게임에서의 아름답게 애니메이션된 스프라이트 몇 개를 더 소개합니다:

애니메이션 500의 렌더링이 설명됨

완전하게 조합된 애니메이션 500

플리머스 건물 공장

에덴 우주항

에덴 의료 센터

SCAT

플리머스 우주항

이스터 에그:
산타클로스

이스터 에그:
Dans Dog