Glosario
Fuente: coreprime/kbot @ 0ab97bf · Editar en GitHub
Una referencia común a todos los formatos con el vocabulario que se repite en el modding de Total Annihilation. Los términos enlazan con la página donde se tratan con más detalle. Se ordenan por el término en inglés, que se indica entre paréntesis.
Objeto de anclaje (anchor object)
Una pieza de 3DO con un vértice y ninguna primitiva. Es
invisible durante la partida; su finalidad es servir de coordenada con
nombre para las órdenes de los scripts COB
(emit-sfx from <anchor>;).
Archivo comprimido (archive)
Un archivo HPI / UFO / CCX / GP3. Las cuatro extensiones tienen el mismo formato en disco y solo se diferencian en el orden de carga.
ARGB4444 / ARGB1555
Las dos codificaciones de píxel de 16 bits que usa un TAF
truecolor. ARGB4444 empaqueta 4 bits para cada uno de alfa, rojo, verde
y azul (16 niveles de alfa suave); ARGB1555 empaqueta un alfa de 1 bit
más 5 bits para cada componente RGB (un recorte duro). El byte Format
de un fotograma (4 o 5) elige cuál.
Celda de atributos (attribute cell)
Una celda de 16×16 píxeles de un mapa TNT (o SCT). Cada casilla mide 32×32 px y, por tanto, contiene 4 celdas de atributos. Las alturas, la colocación de elementos y la posibilidad de pasar o de construir se guardan por celda de atributos.
Eje (axis)
En COB y 3DO, un ID numérico que identifica uno de los tres ejes de
rotación: 0 = X, 1 = Y, 2 = Z. Los opcodes COB de
MOVE/TURN/SPIN reciben el eje como operando en línea. En los
archivos 3DO, Y apunta hacia arriba.
BOS
«Basic Object Script»: el lenguaje fuente, parecido a C, de los scripts
de animación y comportamiento de las unidades. Se compila a
COB. Lo escriben a mano los modders; kbot cob decompile lo
recupera a partir de un COB.
COB
«Cobble»: el bytecode basado en pila que ejecuta realmente el motor. Consulta COB / BOS.
Chunk de compresión (compression chunk)
Un bloque de un archivo HPI que, descomprimido, ocupa 64 KiB o menos. Cada chunk tiene su propia cabecera SQSH, su método de compresión (LZ77 / ZLib / ninguno), una pareja de tamaños y, opcionalmente, una segunda pasada de cifrado XOR.
Paleta incrustada (embedded palette)
Una PAL añadida a un archivo PCX inmediatamente
después de los datos de píxeles RLE, precedida de un byte de marca
0x0C. 769 bytes en total.
Elemento (feature)
Un objeto estático, que no es una unidad, colocado en un mapa
TNT: árbol, roca, yacimiento de metal, chimenea geotérmica,
campo de hidratación, etc. Se define en un archivo features/**/*.tdf
(consulta TDF) y el TNT hace referencia a él por nombre.
Coma fija (fixed-point)
El sistema de coordenadas de los modelos 3DO. Cada coordenada int32
representa value / 65536.0 unidades del espacio del mundo. Así,
0x00010000 = exactamente 1 unidad del mundo; 0x00018000 = 1,5
unidades del mundo.
Huella (footprint)
El rectángulo que ocupa una unidad o un elemento en la cuadrícula,
expresado en celdas de atributos de 16 píxeles (FootprintX ×
FootprintZ). El motor lo usa para colocar construcciones y buscar
rutas.
Tick de juego (game tick)
La unidad de tiempo fundamental. 30 ticks por segundo. La mayoría de los campos de tiempo de COB y GAF usan ticks.
HPI
Archivo comprimido «HAPI». Consulta HPI / UFO / CCX / GP3.
Superposición por capas (layering)
La forma en que el motor combina varios archivos comprimidos
HPI al arrancar. Los archivos de un archivo comprimido cargado
más tarde tapan a los de la misma ruta de los archivos comprimidos
anteriores. El orden de carga es (de menor a mayor prioridad):
.hpi → .ufo → .ccx → .gp3.
Tabla de consulta (lookup table)
Un archivo .alp, .lht o .shd: filas de 256 índices de la
paleta (no RGB), con una columna por color de origen. Un .alp ocupa
65 536 bytes (256 filas, una por cada color con el que se mezcla); un
.shd o un .lht, 8192 bytes (32 filas, una por nivel de sombra o de
luz). El motor busca el color actual en la fila que necesita, y el
resultado es otro índice de la paleta que se puede dibujar con el proceso
normal de 8 bpp. El juego solo usa una tabla cuando su tamaño es exacto;
una tabla que falta, o que tiene cualquier otro tamaño, se reconstruye a
partir de la paleta. Consulta PAL.
LZ77
La compresión de ventana deslizante que se usa en los chunks de
HPI cuando CompMethod == 1. Ventana de 4 KiB, coincidencias
de 2 a 17 bytes, bits de etiqueta con el LSB primero.
Rosa mágico (magic pink)
El índice 9 de la paleta canónica de TA (#5454FC). Las herramientas de
edición lo usan como color de relleno de las zonas transparentes en los
archivos PCX/GAF de origen, y es el color clave guardado en muchos
fotogramas GAF, lo que lo hace transparente en esos fotogramas. En el
resto de los casos es un color normal. Consulta
Color clave de transparencia.
Nombre de objeto (object name)
El nombre base en minúsculas que comparten los archivos 3DO,
COB y PCX de una unidad. Se declara en el
FBI como el campo Objectname. Es distinto de UnitName, que
es el identificador externo que usan otras configuraciones.
OTA
«Online Total Annihilation»: el archivo acompañante de metadatos de un mapa TNT. Texto plano en formato TDF (TDF). Contiene el nombre de la misión, la descripción, las instrucciones para la IA, las posiciones de inicio y pistas sobre el entorno.
Imagen con paleta (paletted image)
Un mapa de bits cuyos valores de píxel son índices de 8 bits en una PAL aparte de 256 entradas, en lugar de tripletes RGB directos. Todos los recursos visibles que distribuye TA usan paleta: PCX, GAF, SCT, los píxeles de las casillas de TNT y los minimapas incrustados. La excepción destacable son las animaciones TAF truecolor de TA: Kingdoms.
Pieza (piece)
Un subobjeto con nombre de un 3DO. Los scripts COB
manipulan las piezas por su nombre
(turn turret1 to y-axis [90] speed [60];).
Esquema (schema)
Una configuración de partida alternativa con nombre dentro del archivo OTA que acompaña a un TNT. Los distintos esquemas suelen contener disposiciones de posiciones de inicio distintas para distintos números de jugadores.
Nivel del mar (sea level)
El campo SeaLevel de la cabecera de un TNT. Cualquier celda
de atributos cuyo byte Height sea menor que el nivel del mar se
considera bajo el agua. Un mapa con SeaLevel == 0 no tiene nada bajo el
agua; con SeaLevel == 255, todo está bajo el agua.
Sección (section)
Un archivo SCT. Los trozos de casillas reutilizables que el editor TAE de Cavedog unía para construir los mapas TNT finales.
Máscara de señales (signal mask)
Una máscara de bits declarada en un script COB
(set-signal-mask <n>) que determina qué mensajes signal expropiarán
la instancia actual del script. Se usa para cancelar limpiamente las
animaciones Walk/Aim/Idle cuando cambia el estado.
Bando (side)
ARM o CORE en TA; Aramon, Taros, Veruna o Zhon en TA: Kingdoms. Se
declara para cada unidad en el campo Side del FBI; en TA:
Kingdoms también determina con qué paleta de bando se renderiza una
animación GAF.
SQSH
La marca (0x48535153 LE) al principio de cada chunk comprimido de un
HPI. Un guiño a que los chunks son datos «aplastados»
(«squashed»).
Subfotograma (sub-frame)
Un fotograma GAF anidado. Un solo fotograma visible de una animación puede ser una composición de varios subfotogramas volcados en orden, cada uno con su propio desplazamiento de origen y sus datos de píxeles.
TAF
Una animación truecolor de TA: Kingdoms. Reutiliza la
disposición del contenedor GAF, pero guarda píxeles de 16 bits
ARGB4444 / ARGB1555 en lugar de índices de la
paleta, así que lleva su propio color y su alfa. La extensión .taf la
comparten los archivos con paleta al estilo GAF: el byte de formato de
cada fotograma los distingue.
Tick
Consulta tick de juego.
Casilla (tile)
Un trozo de 32×32 píxeles de los gráficos de un mapa. La unidad de
visualización fundamental de TNT y SCT. La
cuadrícula de casillas se indexa con uint16, lo que en teoría permite
hasta 65 536 casillas únicas por mapa.
Color clave de transparencia (transparency key)
El índice de la paleta que un fotograma GAF guarda como transparente. El juego no dibuja los píxeles con ese valor de un fotograma sin comprimir; en un fotograma comprimido, los píxeles transparentes son sus tramos de salto, y sus demás píxeles se dibujan aunque sean iguales al color clave. No hay ningún índice transparente para toda la paleta: el terreno, los minimapas, los fondos PCX y las texturas de los modelos dibujan todos los índices, incluido el índice 0 de la paleta (negro). Los fotogramas TAF truecolor no tienen color clave: la transparencia sale del canal alfa de cada píxel.
Truecolor
Un mapa de bits que guarda un color (y un alfa) por píxel en lugar de un índice en una paleta. Es la excepción en el arte de TA, que por lo demás usa paleta en todo: las animaciones TAF de TA: Kingdoms usan píxeles de 16 bits ARGB4444 / ARGB1555.
TSF
«TAF Source Format»: la forma de texto legible, delimitada por llaves,
de un TAF. El cargador de la interfaz de TA: Kingdoms lee
.tsf directamente para los fondos de los menús; kbot taf decompile lo
genera y kbot taf compile lo vuelve a leer. Consulta
TAF / TSF.
Sistema de archivos virtual (virtual filesystem, VFS)
El árbol combinado de archivos que ven el motor (y kbot mount /
kbot mcp) después de superponer por capas todos los archivos
comprimidos de la familia HPI de la raíz de una instalación.
Te permite hacer referencia a un archivo como units/ARMCOM.fbi sin que
importe si está en totala1.hpi, en ccdata.ccx o en un directorio
desempaquetado.
Celda vacía (void cell)
Una celda de atributos de TNT con Feature == 0xFFFC. Marca
terreno infranqueable (paredes de cañones, límites de aguas profundas)
que no es en sí un elemento, pero que debe tratarse como si hubiera uno.
Yardmap
Una cuadrícula ASCII de varias líneas en un FBI que describe
las restricciones de cada celda de la huella de un edificio. Letras
habituales: o = terreno abierto, c = cerrado (construido encima),
w = solo agua.