Todas las páginas de formatos ↓
Tutoriales y referencia

Diferencias de formato entre TA y TA: Kingdoms

Fuente: coreprime/kbot @ 0ab97bf · Editar en GitHub

Una sola página que resume qué es igual, qué se parece y qué es distinto entre Total Annihilation (1997) y TA: Kingdoms (1999). Resulta útil para llevar trabajo de un juego a otro o para decidir qué juego tiene que admitir tu herramienta.

Tip

En resumen. TA:K conservó la mayoría de los formatos contenedores de TA (HPI, GAF, TDF, COB), pero simplificó los envoltorios (sin XOR en HPI v2, sin directorio weapons/ aparte, sin cuadrícula de construcción de 2×3) y añadió encima cosas totalmente nuevas (4 bandos, economía de mogrium, «armas» que lanzan hechizos, archivos comprimidos .kmp por misión).


Matriz de referencia rápida

Formato TA TA: Kingdoms Estado en kbot
Archivo comprimido HPI / UFO / CCX / GP3 v1: cifrado con XOR, varios chunks por archivo, chunks de ≤64 KiB v2: envoltorio sin cifrar, un solo chunk SQSH por archivo, cabecera de ~32 bytes ✅ Lee los dos; ✅ escribe v1; ❌ escribe v2
Archivos comprimidos de campaña .kmp N/A HPI v2 con otra extensión; reúne el mapa, los scripts y los GAF de cada misión ✅ Lectura
Animaciones de sprites GAF / TAF .gaf, la paleta sale de palettes/palette.pal .taf con paleta (mismo formato binario), paleta tomada de un .pcx por bando; además, una variante truecolor .taf/.tsf (ARGB de 16 bits, consulta taf.md) ✅ Lee todos; ✅ escribe GAF y TAF/TSF truecolor
Imágenes PCX unitpics/<name>.pcx para los retratos de unidad (96×96 con paleta) Se usa como portador de paleta de 1×1 junto al .taf ✅ Lectura/escritura
PAL / ALP / LHT / SHD Paleta global de TA + tablas de consulta Paletas por bando y por terreno, casi todas dentro de PCX portadores; palettes/ contiene además un .alp (65 536 bytes) y un .shd / .lht (8192 bytes) con la misma disposición para casi cada una de ellas (41 conjuntos) ✅ Los dos (kbot pal lookup --palette acepta un .pal o un .pcx)
Fuentes de mapa de bits FNT fonts/*.fnt, glifos de 1 bpp Mismo formato; suele tener un juego de glifos más amplio ✅ Lectura
Secciones de mapa SCT sections/<biome>/*.sct, bloques de casillas reutilizables para el editor TAE No se usan: el sistema de casillas de TA:K es distinto ✅ TA; N/A TA:K
Terreno de mapa TNT IDVersion == 0x2000, cuadrícula de casillas + mapa de alturas + elementos + minimapa IDVersion == 0x4000 (variante); la misma estructura general, con otro decodificador de casillas ✅ TA; ⚠️ TA:K (se lee la cabecera, las casillas no se decodifican)
Archivos acompañantes de mapas de TA:K N/A .ota (metadatos TDF), .txt (descripción), .crt (binario, finalidad desconocida) ✅ .ota; — .crt/.txt
Modelos 3DO Jerárquicos, caras indexadas en la paleta o con textura Parecidos, pero el modelo de skinning es distinto; algunos campos adicionales por primitiva ✅ TA; ⚠️ TA:K (se carga, pero la cinemática es distinta)
Scripts de unidad COB / BOS scripts/*.cob; bytecode basado en pila El mismo formato de bytecode y los mismos opcodes; se añaden algunos puertos de GET_UNIT_VALUE ✅ Los dos
Configuración en texto TDF / FBI / OTA La misma gramática al estilo INI La misma gramática ✅ Los dos
Definiciones de armas en línea No: las armas están en weapons/*.tdf y se referencian por nombre Sí: subsecciones [WEAPON1]/[WEAPON2]/[WEAPON3] dentro del FBI de cada unidad ✅ Los dos, mediante el documentor
Perfiles de IA ai/*.txt con directivas plan/weight/limit ai/*.txt con weight/limit sueltos (sin bloque plan) ✅ Los dos
Menús de construcción [CANBUILD] estático en gamedata/sidedata.tdf + añadidos dinámicos [MENUENTRY] en download/*.tdf Directorio por constructor canbuild/<builder>/<unit>.tdf, cada uno con [Menu].Priority ✅ Los dos
Cuadrícula del menú de construcción 2 columnas × 3 filas por página (BUTTON 0–5) Lista lineal por constructor, ordenada por Priority —
Asignación de bancos de sonido 3 capas: SoundCategory del FBI → gamedata/sound.tdf → sounds/*.wav Campos soundclass= / soundcategory= con otra resolución ✅ Asignación de TA; ⚠️ falta documentar la asignación de TA:K
Vídeo Smacker / ZRB data/*.zrb (.smk con otra extensión) El mismo formato Smacker con otras extensiones ✅ Los dos
Menús de la interfaz .gui (formato distinto del de TA:K) .gui, árbol de widgets separados por espacios; consulta takgui.md ⚠️ Solo está descrito el de TAK; el .gui de TA aún no se cubre

Leyenda: ✅ soporte completo · ⚠️ parcial · ❌ no admitido · — N/A o no previsto


Lo que de verdad se comparte

Los mismos bytes, el mismo analizador, los mismos tipos de Go:

  • Marca HPI ('HAPI'): todos los contenedores de archivos comprimidos empiezan por ella.
  • Gramática TDF: los dos juegos analizan los TDF de FBI, OTA y armas con el mismo analizador. Los nombres de campo cambian, pero la sintaxis es idéntica.
  • Bytecode COB: los opcodes, el modelo de pila, las máscaras de señales y todos los valores 0x10xxxxxx catalogados en cob.md funcionan en los dos.
  • Vídeo Smacker: .smk / .zrb son idénticos bit a bit; solo cambia la extensión del archivo.
  • Concepto de jerarquía de 3DO: los dos juegos usan árboles padre/hijo/hermano de piezas con nombre, coordenadas en coma fija y primitivas que hacen referencia a las texturas por nombre.

Lo que cambia en detalles sutiles (léelo con atención)

  • Disposición de la cabecera HPI. v1 = 20 bytes en total (5 × uint32). v2 = un prólogo de 8 bytes + una subcabecera de 24 bytes. Los 8 primeros bytes son idénticos en las dos (marca + versión), así que un lector que solo entienda v1 validará el número mágico sin problemas antes de estrellarse con el resto. Consulta HPI v2 en hpi.md.
  • Campos económicos del FBI. TA: BuildCostMetal= + BuildCostEnergy=. TA:K: un único buildcost= (mogrium). El documentor trata los dos mediante Unit.BuildMetal/BuildEnergy (TA) y Unit.BuildCost (TA:K): consulta types.go.
  • Códigos de bando. TA: ARM / CORE. TA:K: ARA / TAR / VER / ZON + CRE (Iron Plague) + MON / LIF / NPC.
  • Arquetipo de las armas. TA: un saco de campos booleanos (ballistic=1, lineofsight=1, guidance=1, beamweapon=1, …). TA:K: una única cadena type=Ballistic / Missile / Magical / Melee.
  • Modelado del daño. Los dos usan una subsección [DAMAGE] dentro de un arma con un default= más modificaciones por objetivo. TA:K usa además damagecategory= en cada unidad (Human, Building, Magical) para modelar la resistencia por grandes clases.

Lo que solo tiene TA

  • Datos de archivo en varios chunks dentro de los archivos comprimidos HPI (el modelo de «chunks de ≤64 KiB con tabla de tamaños»).
  • Cifrado XOR de HPI (semilla por posición + clave transformada).
  • Añadidos [MENUENTRY] en download/*.tdf para añadir entradas al menú de construcción sin hacer una copia propia de sidedata.tdf.
  • Cuadrícula del menú de construcción de 2×3 con BUTTON 0–5 (de arriba a la izquierda a abajo a la derecha).
  • Directorio weapons/ aparte con TDF que se referencian por nombre.
  • Formato SCT (secciones) del editor, propio de TAE.
  • Una única paleta global (palettes/palette.pal) con la que se dibujan todos los recursos, y un único conjunto de tablas .alp / .shd / .lht. TA: Kingdoms tiene una paleta por bando y por conjunto de terreno, la mayoría con tablas de la misma disposición.

Lo que solo tiene TA: Kingdoms

  • HPI v2, con datos de archivo simplificados en un solo chunk.
  • Árbol de directorios canbuild/<builder>/<unit>.tdf para registrar unidades en el menú de construcción (lineal, sin cuadrícula).
  • Definiciones de armas [WEAPONn] en línea dentro de los FBI.
  • Economía de un solo recurso, el mogrium (buildcost=, sin división entre metal y energía).
  • Paletas por bando guardadas en PCX mínimos de 1×1 colocados junto a los archivos de animación .taf.
  • Unidades mágicas o que lanzan hechizos (arapries, vermage, zonsham), cuyas armas son hechizos.
  • Cuatro (+1) bandos: Aramon, Taros, Veruna y Zhon, más Creon de la expansión Iron Plague.
  • anims/buildpic/*.jpg: retratos de unidad como JPG de 64×48 (TA usa PCX en unitpics/).
  • Archivos comprimidos HPI v2 .kmp de misiones de campaña, que reúnen los mapas de cada misión con sus scripts.
  • El requisito de la opción de línea de comandos -disablecavedogverification para cargar la mayoría de los archivos modificados.

Diferencias página a página: dónde encontrar la cobertura de cada juego

Todas las páginas de formatos que tienen particularidades de TA:K incluyen una sección «TA: Kingdoms» bien marcada. Índice rápido:

Página Sección de TA:K
hpi.md HPI v2 de TA: Kingdoms, con el recorrido hexadecimal completo en el apéndice: Jersey.hpi
ai.md Perfiles sin plan de TA: Kingdoms
takgui.md Toda la página es solo de TA:K
takmap.md Toda la página es solo de TA:K

Los catálogos de referencia están en repositorios aparte:


Véase también

  • internal/documentor: el paquete de Go que se encarga de la extracción de los dos juegos.
  • Escollos: los escollos propios de cada juego, en un solo sitio.
  • Tutorial de modding: de momento solo para TA; la cobertura de TA:K es una laguna conocida.
  • Glosario: referencia de terminología común a los dos juegos.