모든 형식 페이지 ↓
튜토리얼·참고 자료

용어집

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

Total Annihilation 모딩에서 되풀이해 나오는 용어를 형식에 상관없이 모은 레퍼런스입니다. 각 용어는 가장 깊이 다루는 페이지로 연결됩니다.


기준점 오브젝트(anchor object)

정점 하나와 프리미티브 0개로 이루어진 3DO 피스(piece)입니다. 실행 중에는 보이지 않으며, COB 스크립트 명령(emit-sfx from <anchor>;)에서 이름 붙은 좌표 역할을 하는 것이 목적입니다.

아카이브(archive)

HPI / UFO / CCX / GP3 파일입니다. 네 확장자 모두 디스크상 형식이 같고 로드 순서만 다릅니다.

ARGB4444 / ARGB1555

트루컬러 TAF가 쓰는 두 가지 16비트 픽셀 인코딩입니다. ARGB4444는 알파, 빨강, 초록, 파랑을 각각 4비트씩 담고(16단계의 부드러운 알파), ARGB1555는 1비트 알파와 RGB 각 5비트를 담습니다(딱딱한 잘라내기). 프레임의 Format 바이트(4 또는 5)가 어느 쪽인지 고릅니다.

속성 칸(attribute cell)

TNT(또는 SCT) 맵의 16×16 픽셀 칸입니다. 타일 하나는 32×32 px이므로 속성 칸 4개를 담습니다. 높이, 지형지물 배치, 경로/건설 가능 여부가 속성 칸마다 저장됩니다.

축(axis)

COB/3DO에서 세 회전축 중 하나를 나타내는 숫자 ID입니다: 0 = X, 1 = Y, 2 = Z. MOVE/TURN/SPIN용 COB 옵코드는 축을 인라인 피연산자로 받습니다. 3DO 파일에서는 Y가 위쪽입니다.

BOS

"Basic Object Script" — 유닛 애니메이션과 동작 스크립트를 위한 C 비슷한 소스 언어입니다. COB로 컴파일됩니다. 모더가 손으로 작성하며, kbot cob decompile로 COB에서 복원할 수 있습니다.

COB

"Cobble" — 엔진이 실제로 실행하는 스택 기반 바이트코드입니다. COB / BOS를 참고하세요.

압축 청크(compression chunk)

HPI 파일 안의, 압축을 풀면 64 KiB 이하가 되는 블록입니다. 각 청크에는 자체 SQSH 헤더, 압축 방식(LZ77 / ZLib / 없음), 크기 쌍, 그리고 선택적인 2차 XOR 뒤섞기가 있습니다.

내장 팔레트(embedded palette)

PCX 파일의 RLE 픽셀 데이터 바로 뒤에, 0x0C 표식 바이트를 앞에 두고 덧붙인 PAL입니다. 전체 769바이트입니다.

지형지물(feature)

TNT 맵에 배치된, 유닛이 아닌 정적인 오브젝트입니다: 나무, 바위, 금속 매장지, 지열 분출구, 수화 지대 등. features/**/*.tdf 파일(TDF 참고)에서 정의하고, TNT가 이름으로 참조합니다.

고정소수점(fixed-point)

3DO 모델의 좌표 체계입니다. 각 int32 좌표는 월드 공간 단위로 value / 65536.0을 나타냅니다. 따라서 0x00010000 = 정확히 월드 단위 1, 0x00018000 = 월드 단위 1.5입니다.

풋프린트(footprint)

유닛이나 지형지물이 그리드에서 차지하는 경계 상자로, 16픽셀 속성 칸 단위(FootprintX × FootprintZ)로 나타냅니다. 엔진은 이를 건설 배치와 경로 탐색에 씁니다.

게임 틱(game tick)

기본 시간 단위입니다. 초당 30틱. COB와 GAF의 시간 관련 필드는 대부분 틱을 씁니다.

HPI

"HAPI" 아카이브입니다. HPI / UFO / CCX / GP3를 참고하세요.

계층화(layering)

엔진이 시작할 때 여러 HPI 아카이브를 합치는 방식입니다. 나중에 로드된 아카이브의 파일이 앞선 아카이브에서 경로가 같은 파일을 가립니다. 로드 순서는(우선순위 낮은 것부터 높은 것까지) .hpi → .ufo → .ccx → .gp3입니다.

조회 테이블(lookup table)

.alp, .lht, .shd 파일입니다: 256개의 팔레트 인덱스(RGB가 아님)로 된 행들이며, 열은 원본 색마다 하나씩입니다. .alp는 65,536바이트(섞을 상대 색마다 하나씩 256행), .shd나 .lht는 8,192바이트(그늘이나 빛 단계마다 하나씩 32행)입니다. 엔진은 필요한 행에서 현재 색을 조회하고, 그 결과는 일반 8bpp 파이프라인으로 그릴 수 있는 또 다른 팔레트 인덱스입니다. 게임은 크기가 정확한 테이블만 쓰며, 테이블이 없거나 다른 크기이면 팔레트로 다시 만듭니다. PAL을 참고하세요.

LZ77

CompMethod == 1일 때 HPI 청크에 쓰이는 슬라이딩 윈도 압축입니다. 4 KiB 윈도, 2–17바이트 매치, LSB 우선 태그 비트.

매직 핑크(magic pink)

표준 TA 팔레트의 팔레트 인덱스 9(#5454FC)입니다. 에디터 도구가 원본 PCX/GAF 파일의 투명 영역을 채우는 색으로 쓰며, 많은 GAF 프레임에 키로 저장되어 그 프레임에서는 투명해집니다. 그 밖의 곳에서는 평범한 색입니다. 투명 키를 참고하세요.

오브젝트 이름(object name)

유닛의 3DO, COB, PCX 파일이 함께 쓰는 소문자 기본 이름입니다. FBI의 Objectname 필드로 선언합니다. 다른 설정 파일에서 쓰는 외부 식별자인 UnitName과는 다릅니다.

OTA

"Online Total Annihilation" — TNT 맵의 메타데이터 부속 파일입니다. TDF 형식의 일반 텍스트입니다(TDF). 미션 이름, 설명, AI 브리핑, 시작 위치, 환경 힌트를 담습니다.

팔레트 이미지(paletted image)

픽셀 값이 RGB 세 값이 아니라, 별도의 256개 항목 PAL을 가리키는 8비트 인덱스인 비트맵입니다. TA와 함께 배포된 눈에 보이는 에셋은 모두 팔레트 이미지입니다: PCX, GAF, SCT, TNT 타일 픽셀, 내장 미니맵. 눈에 띄는 예외는 TA: Kingdoms의 트루컬러 TAF 애니메이션입니다.

피스(piece)

3DO 안의 이름 붙은 하위 오브젝트입니다. COB 스크립트는 피스를 이름으로 조작합니다(turn turret1 to y-axis [90] speed [60];).

스키마(schema)

TNT의 짝인 OTA 파일 안에 있는, 이름 붙은 대안 게임 설정입니다. 스키마마다 보통 플레이어 수에 따라 다른 시작 위치 배치를 담습니다.

해수면(sea level)

TNT 헤더의 SeaLevel 필드입니다. Height 바이트가 해수면보다 작은 속성 칸은 물속으로 취급합니다. SeaLevel == 0인 맵에는 물속에 있는 것이 없고, SeaLevel == 255인 맵은 모든 것이 물속에 있습니다.

섹션(section)

SCT 파일입니다. Cavedog의 TAE 에디터가 이어 붙여 최종 TNT 맵을 만든, 재사용 가능한 타일 묶음입니다.

시그널 마스크(signal mask)

COB 스크립트에서 선언하는 비트마스크(set-signal-mask <n>)로, 어떤 signal 메시지가 현재 스크립트 인스턴스를 선점할지 정합니다. 상태가 바뀔 때 Walk/Aim/Idle 애니메이션을 깔끔하게 취소하는 데 씁니다.

진영(side)

TA에서는 ARM 또는 CORE, TA: Kingdoms에서는 Aramon, Taros, Veruna, Zhon입니다. 유닛마다 FBI의 Side 필드에서 선언하며, TA: Kingdoms에서는 GAF 애니메이션을 어느 진영의 팔레트로 렌더링할지와도 관련이 있습니다.

SQSH

HPI 안의 각 압축 청크 맨 앞에 있는 표식(0x48535153 LE)입니다. 청크가 "찌그러뜨린(squashed)" 데이터라는 데서 따온 장난스러운 이름입니다.

서브프레임(sub-frame)

중첩된 GAF 프레임입니다. 눈에 보이는 애니메이션 프레임 하나가 차례로 블릿되는 여러 서브프레임의 합성일 수 있으며, 각 서브프레임에는 자체 원점 오프셋과 픽셀 데이터가 있습니다.

TAF

TA: Kingdoms 트루컬러 애니메이션입니다. GAF 컨테이너 구조를 그대로 쓰지만 팔레트 인덱스 대신 16비트 ARGB4444 / ARGB1555 픽셀을 저장하므로, 자기 색상과 알파를 직접 담습니다. .taf 확장자는 팔레트를 쓰는 GAF 방식 파일과 함께 쓰며, 프레임마다 있는 형식 바이트로 둘을 구별합니다.

틱(tick)

게임 틱을 참고하세요.

타일(tile)

맵 그래픽의 32×32픽셀 조각입니다. TNT와 SCT의 기본 표시 단위입니다. 타일 그리드는 uint16으로 인덱싱하므로, 이론상 맵 하나에 고유 타일이 최대 65,536개까지 있을 수 있습니다.

투명 키(transparency key)

GAF 프레임이 투명으로 저장하는 팔레트 인덱스입니다. 게임은 비압축 프레임에서 그 값인 픽셀을 그리지 않습니다. 압축 프레임에서 투명한 픽셀은 건너뛰기 런이며, 그 밖의 픽셀은 키와 같은 값이어도 그려집니다. 팔레트 전체에 걸친 투명 인덱스는 없습니다: 지형, 미니맵, PCX 배경, 모델 텍스처는 팔레트 인덱스 0(검은색)을 포함해 모든 인덱스를 그립니다. 트루컬러 TAF 프레임에는 키가 없으며, 투명도는 대신 픽셀마다 있는 알파 채널에서 나옵니다.

트루컬러(truecolor)

팔레트 인덱스가 아니라 픽셀마다 색(과 알파)을 저장하는 비트맵입니다. 그 밖에는 모두 팔레트 이미지인 TA의 그림 가운데 예외로, TA: Kingdoms의 TAF 애니메이션이 16비트 ARGB4444 / ARGB1555 픽셀을 씁니다.

TSF

"TAF Source Format" — TAF를 사람이 읽을 수 있는, 중괄호로 구분하는 텍스트로 나타낸 형식입니다. TA: Kingdoms GUI 로더는 메뉴 배경용으로 .tsf를 직접 읽고, kbot taf decompile은 이를 내보내며 kbot taf compile은 이를 다시 읽습니다. TAF / TSF를 참고하세요.

가상 파일 시스템(VFS)

설치 폴더 루트의 모든 HPI 계열 아카이브를 계층화한 뒤 엔진(그리고 kbot mount / kbot mcp)이 보는 합쳐진 파일 트리입니다. units/ARMCOM.fbi 같은 파일이 totala1.hpi에 있든, ccdata.ccx에 있든, 평탄화한 디렉터리에 있든 신경 쓰지 않고 참조할 수 있게 해 줍니다.

공백 칸(void cell)

Feature == 0xFFFC인 TNT 속성 칸입니다. 그 자체로는 지형지물이 아니지만 지형지물이 있는 것처럼 취급해야 하는 통과 불가 지형(협곡 벽, 깊은 물의 경계)을 나타냅니다.

yard map(yardmap)

FBI 안의 여러 줄짜리 ASCII 격자로, 건물 풋프린트의 칸별 제약을 기술합니다. 흔히 쓰는 글자: o = 열린 땅, c = 막힘(건물이 들어섬), w = 물 전용.