모든 형식 페이지 ↓
파일 형식 레퍼런스

Total Annihilation & TA: Kingdoms 파일 형식 레퍼런스

출처: coreprime/kbot @ 0ab97bf · GitHub에서 편집

kbot

Cavedog Entertainment가 Total Annihilation(1997)과 Total Annihilation: Kingdoms(1999)에 담아 출시한 독자 파일 형식을 실제 리버스 엔지니어링 작업의 관점에서 정리한 실전 안내서입니다. 모든 페이지는 디스크상의 바이트 구조와 한 줄짜리 kbot 명령을 짝지어 보여 주므로, 본문을 읽으면서 실제 파일을 직접 들여다볼 수 있습니다.

Tip

처음 오셨나요? 빠른 시작을 읽어 보세요. 툴킷의 기능을 5분 만에 보여 주는 명령 다섯 가지를 소개합니다.

Note

아직 하지 않았다면 먼저 툴킷을 설치하고 컨텍스트를 등록하세요.

go install github.com/coreprime/kbot/cmd/kbot@latest
kbot ctx add ~/games/totala --alias ta --game totala

현재 컨텍스트를 정해 두면 대부분의 명령(kbot tnt preview …, kbot gaf list …, kbot mount --server)이 경로 없이 적은 파일 이름을 설치본의 모든 HPI/UFO/CCX/GP3 아카이브에서 찾아 줍니다. 더 이상 절대 경로를 입력할 필요가 없습니다.


형식 목록

컨테이너·래퍼 형식

페이지 확장자 용도 1급 지원?
HPI / UFO / CCX / GP3 .hpi .ufo .ccx .gp3 암호화·압축된 아카이브 — 다른 모든 파일을 담는 컨테이너 TA ✅   TA:K ✅

그래픽·미디어

페이지 확장자 용도 1급 지원?
GAF .gaf .taf 인덱스 색상 스프라이트 애니메이션(커서, 폭발, 유닛 장치, 지형지물) TA ✅   TA:K ✅
TAF / TSF .taf .tsf TA: Kingdoms의 트루컬러(16비트 ARGB) 애니메이션(마법 효과, 폭발, 메뉴 배경)과 이를 편집할 수 있는 텍스트 형식 TA:K ✅
PCX .pcx ZSoft Paintbrush 비트맵 — 유닛 초상화, GUI 패널, TA:K에서 팔레트를 담는 파일 TA ✅   TA:K ✅
PAL / ALP / LHT / SHD .pal .alp .lht .shd 256색 팔레트(1,024바이트)와 색상 조회 테이블: .alp 256×256(65,536바이트), .shd / .lht 32×256(8,192바이트) TA ✅   TA:K ✅
FNT .fnt 픽셀당 1비트의 가변 폭 비트맵 글꼴 TA ✅
Smacker / ZRB .smk .zrb 컷신 영상(RAD Game Tools Smacker, 확장자를 .zrb로 바꿈) TA ✅
Bink .bik TA: Kingdoms 컷신 영상(RAD Bink 1) — Smacker의 후속 형식 TA:K ✅
WAV / 사운드 .wav 일반 WAV와 3계층 사운드 뱅크 연결 구조 TA ✅   TA:K ✅

맵·지형

페이지 확장자 용도 1급 지원?
SCT .sct 이어 붙여 .tnt 맵을 만드는 재사용 가능한 맵 섹션 TA ✅
TNT .tnt 그대로 플레이할 수 있는 완전한 맵(타일 그리드 + 높이 맵 + 미니맵 + 지형지물 목록) TA ✅
TA:K 맵 .tnt .ota .crt .kmp TA: Kingdoms 맵 파이프라인 — 텍스처 매핑 지형 + 미니맵 렌더링, 그리고 .crt 시나리오 부속 파일(배치된 유닛, 규칙, 트리거) TA:K 🟡

유닛·스크립트·설정

페이지 확장자 용도 1급 지원?
3DO .3do 팔레트 인덱스 면으로 이루어진 계층형 3D 유닛/지형지물 메시 TA ✅
COB / BOS .cob .bos 모든 유닛을 움직이는 스택 기반 애니메이션/스크립트 바이트코드 TA ✅   TA:K ✅
TDF / FBI / OTA .tdf .fbi .ota INI 스타일 설정 트리 — 유닛 능력치, 무기, 맵 메타데이터. FBI 필드 사전 전체 포함. TA ✅   TA:K ✅
gamedata TDF gamedata/*.tdf 이동 클래스, 진영 데이터, 사운드 바인딩, 무기 참고 자료 TA ✅
AI 프로필 ai/*.txt 일반 텍스트로 된 난이도별 AI 가중치와 유닛 제한(TAK 프로필에는 plan이 없음, TAK 참고 사항 참조) TA ✅   TA:K ✅

TA: Kingdoms GUI

페이지 확장자 용도 1급 지원?
TA:K GUI .gui TA: Kingdoms 메뉴용 공백 구분 위젯 트리 TA:K ✅

튜토리얼·참고 자료

페이지 내용
빠른 시작 먼저 실행해 볼 명령 다섯 가지.
유닛 모딩 처음부터 끝까지 따라 하는 튜토리얼: 추출 → 편집 → 다시 패키징 → 테스트(TA).
주의할 점 형식 문서 전반의 주의할 점을 모두 한 페이지에 모은 요약표.
TA와 TA:K 형식 비교 공통, 유사, 게임 전용 항목을 한 페이지에 정리한 비교표.
레퍼런스 카탈로그 별도 저장소: coreprime/reference-ta — 유닛 278개 / 무기 199개 / 건설 유닛 45개; coreprime/reference-tak — 유닛 203개 / 무기 198개 / 건설 유닛 32개.
용어집 자주 쓰는 용어(piece, axis, sealevel, signal mask, …).
이미지 갤러리 문서의 모든 그림과 그것을 만든 명령.

범례: ✅ kbot 1급 지원 · 🟡 문서화되어 있으나 현재 kbot이 파싱하지 않음.


형식들이 서로 맞물리는 방식

                                ┌───────────────────────────────┐
                                │   HPI / UFO / CCX / GP3       │
                                │   (encrypted, compressed VFS) │
                                └──────────────┬────────────────┘
                                               │ contains
            ┌──────────────────────┬───────────┼───────────────┬──────────────────┐
            ▼                      ▼           ▼               ▼                  ▼
        ┌───────┐             ┌───────┐   ┌───────┐       ┌────────┐        ┌─────────┐
        │  FBI  │ unit stats  │  COB  │   │  3DO  │ mesh  │  GAF   │ sprites│   TNT   │ map
        └───┬───┘             └───┬───┘   └───┬───┘       └────┬───┘        └────┬────┘
            │ references          │ runs on   │ textured by    │ used by         │ built from
            ▼                     ▼           ▼                ▼                 ▼
        ┌───────┐             ┌───────┐   ┌───────┐       ┌────────┐        ┌─────────┐
        │  TDF  │ weapons     │ piece │   │  PCX  │ skins │  PAL   │ colour │   SCT   │ tiles
        │ /OTA  │ /features   │ tree  │   │  unitpic│      │ /ALP/LHT/SHD   │ + heights
        └───────┘             └───────┘   └───────┘       └────────┘        └─────────┘

거의 모든 리버스 엔지니어링 작업은 HPI를 마운트하는 데서 시작합니다. 평탄화한 설치본도 결국 HPI를 풀어 놓은 것일 뿐입니다. 거기서부터 유닛(FBI)은 메시(3DO), 스크립트(COB), 유닛 초상화(PCX), 애니메이션 장치(GAF)를 가리킵니다. 맵(TNT)은 섹션(SCT)과 지형지물 배치로 조립되며, 각 배치는 TDF의 지형지물 정의로 연결됩니다.

Note

설치본 전체를 한 번에 마운트하세요. 아카이브를 하나씩 들여다보는 대신 kbot mount에 설치 루트를 지정하세요. 폴더 안의 모든 HPI/UFO/CCX를 훑어 그 내용을 하나의 가상 파일 시스템으로 겹쳐 주므로, units/ARMCOM.fbi가 어느 아카이브에서 왔는지 신경 쓰지 않고 탐색할 수 있습니다.

kbot mount ~/games/totala --server   # opens at http://localhost:8090

엔디언, 문자 집합, 좌표 규약

페이지에서 명시적으로 달리 정하지 않는 한, 이 문서의 모든 형식에 다음 규약이 적용됩니다.

속성 규약
엔디언 리틀 엔디언(Intel x86).
문자열 인코딩 ASCII / CP-437, 널 종료. TA:K에서 Windows-1252를 부분적으로 지원하게 되었지만 UTF-8은 끝내 지원하지 않았습니다.
숫자 너비 uint8(char), uint16(short), uint32(long). 64비트 값은 나오지 않습니다.
좌표 원점 이미지, 타일 그리드, 속성 그리드 — (0, 0)이 왼쪽 위입니다. 3DO 메시는 Y를 수직(위쪽) 축으로 씁니다.
3D 고정소수점 배율 3DO 모델은 16비트 소수부 고정소수점을 씁니다: value / 65536.0 ≈ 월드 공간 단위.
게임 틱 속도 초당 30틱. COB와 GAF의 시간 관련 필드는 대부분 틱 단위입니다.
투명 색상 팔레트 전체에 걸친 투명 인덱스는 없습니다. GAF 프레임은 자체 키(대개 9, 가끔 0)를 지정하고, 압축 프레임에서 건너뛴 픽셀은 투명합니다. 지형, 미니맵, 배경, 모델 텍스처는 팔레트 인덱스 0(검정)을 포함해 모든 인덱스를 그립니다.

Important

오프셋을 믿기 전에 항상 매직 넘버부터 검증하세요. 여러 형식(HPI, COB, GAF, TNT, SCT)은 첫 필드에 32비트 시그니처를 둡니다. 값이 맞지 않으면 그 파일은 손상되었거나, 독자 형식을 쓰는 모드에서 왔거나, TA:K의 경우 버전 워드가 다른 .taf/.tsf 변형입니다.


이 문서 활용하기

형식별 페이지는 모두 같은 구조로 되어 있습니다.

  1. 무엇인가 — 용도와 TA 설치본에서 나타나는 위치.
  2. 디스크상의 구조 — 헤더 구조체, 이어서 페이로드 섹션. 바이트 오프셋을 명시합니다.
  3. 읽는 순서 — 파일을 제대로 파싱하는 탐색(seek)/읽기 순서.
  4. 실제 예제 — 실제 Cavedog 파일을 바이트 단위로 분석합니다.
  5. 직접 확인하기 — 자신의 설치본에 실행해 데이터를 바로 볼 수 있는 kbot 명령.
  6. 주의할 점 — 문서화되지 않은 예외 사례, 버전별 차이, Cavedog 도구가 남긴 쓰레기 바이트 등.

다음과 같은 안내 상자가 있다면

Tip

직접 해 보세요.

kbot pal swatch palettes/palette.pal --target out.png --cell 24

…컨텍스트를 설정한 뒤 그 명령을 그대로 실행할 수 있다는 뜻입니다.


크레딧과 원자료

이 문서는 수십 년에 걸친 커뮤니티의 리버스 엔지니어링 성과를 종합한 것입니다. 개별 발견은 각 페이지 본문에서 출처를 밝히며, 토대가 된 작업은 다음과 같습니다.

  • Joe D. — 최초의 HPI 형식 분석(1997).
  • Saruman & Bobban / dFR Engineering — 최초의 TNT 해설(1997).
  • Scott "me22" McMurray — TNT 형식 보충 설명(2003). Kinboat의 Annihilator 소스를 참고했습니다.
  • Kinboat — SCT 형식, GAF 도구, Annihilator 맵 에디터.
  • Dan Melchione & Dark Rain — 3DO 형식(1998, 2002년 개정).
  • C_A_P, Switeck, KhalvKalash — COB/BOS 옵코드 리버스 엔지니어링과 Scriptor 도구 계열.
  • Dark Rain — TA:K GUI 형식과 TA:K 형식 난제에 관한 노트.
  • Cavedog Entertainment — 25년이 넘게 지난 지금도 지켜 나갈 가치가 있는 게임을 만들어 준 데 감사합니다.

이 문서가 위 원자료와 어긋날 때는 kbot 소스 코드가 기준입니다. 여기 실린 형식들은 수천 개의 실제 Cavedog 파일로 왕복 변환(round-trip) 테스트를 거쳤습니다. 불일치를 발견하면 https://github.com/coreprime/kbot에 이슈나 PR을 올려 주세요.