TA와 TA: Kingdoms — 형식 차이
Total Annihilation(1997)과 TA: Kingdoms(1999) 사이에서 같은 것, 비슷한 것, 다른 것을 한 페이지에 정리했습니다. 두 게임 사이에서 작업을 옮기거나, 만들고 있는 도구가 어느 게임을 지원해야 할지 정할 때 유용합니다.
Tip
요약. TA:K는 TA의 컨테이너 형식(HPI, GAF, TDF, COB)을 대부분 유지했지만
이를 감싸는 구조는 단순하게 만들었고(HPI v2에 XOR 없음, 별도의 weapons/
디렉터리 없음, 2×3 건설 격자 없음), 그 위에 완전히 새로운 것들을
더했습니다(진영 4개, mogrium 경제, 마법 시전 "무기", 미션별 .kmp 아카이브).
빠른 참조표
| 형식 | TA | TA: Kingdoms | kbot 지원 상태 |
|---|---|---|---|
| HPI / UFO / CCX / GP3 아카이브 | v1 — XOR 암호화, 파일마다 청크 여러 개, 청크는 64 KiB 이하 | v2 — 평문 봉투, 파일마다 SQSH 청크 하나, 약 32바이트 헤더 | ✅ 둘 다 읽기, ✅ v1 쓰기, ❌ v2 쓰기 |
.kmp 캠페인 아카이브 |
해당 없음 | 확장자를 바꾼 HPI v2. 미션별 맵 + 스크립트 + GAF를 묶음 | ✅ 읽기 |
| GAF / TAF 스프라이트 애니메이션 | .gaf, 팔레트는 palettes/palette.pal에서 |
팔레트 방식 .taf(같은 바이너리 형식), 팔레트는 진영별 .pcx에서. 여기에 더해 트루컬러 .taf/.tsf 변형(16비트 ARGB, taf.md 참고) |
✅ 모두 읽기, ✅ GAF와 트루컬러 TAF/TSF 쓰기 |
| PCX 이미지 | 유닛 초상화용 unitpics/<name>.pcx(96×96 팔레트) |
.taf 옆에서 팔레트를 담는 1×1 파일로 쓰임 |
✅ 읽기/쓰기 |
| PAL / ALP / LHT / SHD | 전역 TA 팔레트 + 조회 테이블 | 진영별·지형별 팔레트, 대부분 팔레트를 담는 PCX 안에 있음. palettes/에는 그 거의 모두(41개 묶음)에 대해 같은 구조의 .alp(65,536바이트)와 .shd / .lht(8,192바이트)도 있음 |
✅ 둘 다(kbot pal lookup --palette는 .pal과 .pcx를 모두 받음) |
| FNT 비트맵 글꼴 | fonts/*.fnt 1bpp 글리프 |
같은 형식, 보통 글리프 세트가 더 큼 | ✅ 읽기 |
| SCT 맵 섹션 | TAE 에디터용 재사용 타일 블록 sections/<biome>/*.sct |
쓰지 않음 — TA:K의 타일 시스템은 다름 | ✅ TA, TA:K는 해당 없음 |
| TNT 맵 지형 | IDVersion == 0x2000, 타일 그리드 + 높이 맵 + 지형지물 + 미니맵 |
IDVersion == 0x4000(변형). 전체 구조는 같고 타일 디코더가 다름 |
✅ TA, ⚠️ TA:K(헤더는 읽음, 타일은 디코딩 안 됨) |
| TA:K 맵 부속 파일 | 해당 없음 | .ota(TDF 메타데이터), .txt(설명), .crt(바이너리, 용도 불명) |
✅ .ota, — .crt/.txt |
| 3DO 모델 | 계층형, 팔레트 인덱스 면 또는 텍스처 면 | 비슷하지만 스키닝 모델이 다름. 프리미티브마다 필드가 몇 개 더 있음 | ✅ TA, ⚠️ TA:K(로드되지만 운동학이 다름) |
| COB / BOS 유닛 스크립트 | scripts/*.cob, 스택 기반 바이트코드 |
같은 바이트코드 형식과 같은 옵코드. GET_UNIT_VALUE 포트가 몇 개 추가됨 |
✅ 둘 다 |
| TDF / FBI / OTA 텍스트 설정 | 같은 INI 모양의 문법 | 같은 문법 | ✅ 둘 다 |
| 인라인 무기 정의 | 없음 — 무기는 이름으로 참조하는 weapons/*.tdf에 있음 |
있음 — 각 유닛 FBI 안의 [WEAPON1]/[WEAPON2]/[WEAPON3] 하위 섹션 |
✅ documentor로 둘 다 |
| AI 프로필 | plan/weight/limit 지시문이 있는 ai/*.txt |
weight/limit만 있는 ai/*.txt(plan 블록 없음) |
✅ 둘 다 |
| 건설 메뉴 | 정적인 gamedata/sidedata.tdf [CANBUILD] + 동적인 download/*.tdf [MENUENTRY] 덧붙이기 |
건설 유닛별 디렉터리 canbuild/<builder>/<unit>.tdf, 각각 [Menu].Priority가 있음 |
✅ 둘 다 |
| 건설 메뉴 격자 | 페이지마다 2열 × 3행(BUTTON 0–5) | 건설 유닛마다 Priority 순서의 일렬 목록 | — |
| 사운드 뱅크 연결 | 3계층: FBI SoundCategory → gamedata/sound.tdf → sounds/*.wav |
찾는 방식이 다른 soundclass= / soundcategory= 필드 |
✅ TA 연결, ⚠️ TA:K 연결은 문서화 필요 |
| Smacker / ZRB 영상 | data/*.zrb(확장자를 바꾼 .smk) |
같은 Smacker 형식, 다른 확장자 | ✅ 둘 다 |
| GUI 메뉴 | .gui(TA:K와 다른 형식) |
공백 구분 위젯 트리 .gui. takgui.md 참고 |
⚠️ TAK만 설명됨, TA .gui는 아직 다루지 않음 |
범례: ✅ 1급 지원 · ⚠️ 부분 지원 · ❌ 지원 안 함 · — 해당 없음 또는 계획 없음
실제로 공유하는 것
같은 바이트, 같은 파서, 같은 Go 타입:
- HPI 표식(
'HAPI') — 모든 아카이브 컨테이너가 이것으로 시작합니다. - TDF 문법 — 두 게임 모두 같은 파서로 FBI/OTA/무기 TDF를 파싱합니다. 필드 이름은 다르지만 문법은 똑같습니다.
- COB 바이트코드 — 옵코드, 스택 모델, 시그널 마스크,
cob.md에 정리된 모든
0x10xxxxxx값이 두 게임에서 모두 동작합니다. - Smacker 영상 —
.smk/.zrb는 비트 단위로 동일하며, 파일 확장자만 다릅니다. - 3DO 계층 개념 — 두 게임 모두 이름 붙은 피스의 부모/자식/형제 트리, 고정소수점 좌표, 텍스처를 이름으로 참조하는 프리미티브를 씁니다.
미묘하게 다른 것(주의해서 읽으세요)
- HPI 헤더 구조. v1 = 전체 20바이트(5 × uint32). v2 = 8바이트 프롤로그 + 24바이트 서브헤더. 처음 8바이트(표식 + 버전)는 둘이 똑같으므로, v1만 아는 리더는 매직 검증까지는 성공하고 나머지에서 멈춥니다. hpi.md HPI v2를 참고하세요.
- FBI 경제 필드. TA:
BuildCostMetal=+BuildCostEnergy=. TA:K: 하나뿐인buildcost=(mogrium). documentor는Unit.BuildMetal/BuildEnergy(TA)와Unit.BuildCost(TA:K)로 둘 다 처리합니다 — types.go를 참고하세요. - 진영 코드. TA:
ARM/CORE. TA:K:ARA/TAR/VER/ZON+CRE(Iron Plague) +MON/LIF/NPC. - 무기 기본 유형. TA: 불리언 필드의 묶음(
ballistic=1,lineofsight=1,guidance=1,beamweapon=1등). TA:K: 하나의type=Ballistic/Missile/Magical/Melee문자열. - 피해 모델링. 둘 다 무기 아래에
default=와 대상별 재정의를 담은[DAMAGE]하위 섹션을 씁니다. TA:K는 여기에 더해 넓은 분류별 저항을 모델링하려고 각 유닛에damagecategory=(Human,Building,Magical)를 씁니다.
TA에만 있는 것
- HPI 아카이브의 여러 청크로 된 파일 페이로드(
크기 테이블이 있는 64 KiB 이하 청크모델). - HPI XOR 암호화(위치별 시드 + 변환된 키).
- sidedata.tdf를 복사해 고치지 않고 건설 메뉴 항목을 추가하는
download/*.tdf[MENUENTRY]덧붙이기. BUTTON0–5(왼쪽 위에서 오른쪽 아래)인 2×3 건설 메뉴 격자.- 이름으로 참조하는 TDF가 모인 별도의
weapons/디렉터리. - SCT(섹션) 에디터 형식 — TAE 전용.
- 모든 에셋을 그리는 데 쓰는 전역 팔레트 하나(
palettes/palette.pal)와.alp/.shd/.lht테이블 한 묶음. TA: Kingdoms에는 진영과 지형 세트마다 팔레트가 있고, 대부분 같은 구조의 테이블을 함께 갖습니다.
TA: Kingdoms에만 있는 것
- 파일 페이로드를 청크 하나로 단순화한 HPI v2.
- 건설 메뉴 등록용
canbuild/<builder>/<unit>.tdf디렉터리 트리(일렬, 격자 없음). - FBI 안의 인라인
[WEAPONn]무기 정의. - Mogrium 단일 자원 경제(
buildcost=, 금속/에너지 구분 없음). .taf애니메이션 파일 옆에 놓인 1×1 PCX 스텁에 담긴 진영별 팔레트.- 무기가 마법인 마법 / 마법 시전 유닛(
arapries,vermage,zonsham). - 진영 4개(+1): Aramon, Taros, Veruna, Zhon — 그리고 Iron Plague 확장팩의 Creon.
anims/buildpic/*.jpg— 64×48 JPG로 된 유닛 초상화(TA는unitpics/의 PCX를 씀).- 미션별 맵과 미션 스크립트를 묶은
.kmp캠페인 미션 HPI v2 아카이브. - 고친 파일 대부분을 로드하는 데 필요한
-disablecavedogverification명령줄 인수.
페이지별 차이점 — 각 게임을 다루는 곳
TA:K 고유 사항이 있는 모든 형식 페이지에는 분명하게 표시된 "TA: Kingdoms" 절이 있습니다. 빠른 색인:
| 페이지 | TA:K 절 |
|---|---|
| hpi.md | TA: Kingdoms HPI v2, 전체 헥스 분석은 부록 — Jersey.hpi |
| ai.md | TA: Kingdoms — plan이 없는 프로필 |
| takgui.md | 페이지 전체가 TA:K 전용 |
| takmap.md | 페이지 전체가 TA:K 전용 |
레퍼런스 카탈로그는 별도 저장소에 있습니다.
coreprime/reference-ta— 유닛 278개, 무기 199개, 건설 유닛 45개.coreprime/reference-tak— 유닛 203개, 무기 198개, 건설 유닛 32개.
함께 보기
internal/documentor— 두 게임의 추출을 모두 처리하는 Go 패키지.- 주의할 점 — 게임별 주의할 점을 한곳에 모은 페이지.
- 모딩 튜토리얼 — 현재는 TA만 다룹니다. TA:K는 아직 다루지 못한 알려진 공백입니다.
- 용어집 — 두 게임에 걸친 용어 레퍼런스.