Todas as páginas de formatos ↓
Tutoriais e referência

TA e TA: Kingdoms: diferenças entre os formatos

Fonte: coreprime/kbot @ 0ab97bf · Editar no GitHub

Uma única página que resume o que é igual, parecido ou diferente entre o Total Annihilation (1997) e o TA: Kingdoms (1999). Serve para quem leva trabalho de um jogo para o outro ou precisa decidir qual jogo sua ferramenta deve suportar.

Tip

Resumo. O TA:K manteve a maior parte dos formatos de contêiner do TA (HPI, GAF, TDF, COB), mas simplificou os invólucros (sem XOR no HPI v2, sem diretório weapons/ separado, sem grade de construção 2×3) e acrescentou coisas totalmente novas por cima (4 lados, economia de mogrium, "armas" que lançam feitiços, arquivos compactados .kmp por missão).


Tabela de consulta rápida

Formato TA TA: Kingdoms Situação no kbot
Arquivo compactado HPI / UFO / CCX / GP3 v1: criptografia XOR, vários chunks por arquivo, chunks de ≤64 KiB v2: envelope em texto puro, um único chunk SQSH por arquivo, cabeçalho de ~32 bytes ✅ lê os dois; ✅ grava v1; ❌ grava v2
Arquivos compactados de campanha .kmp N/A HPI v2 com a extensão trocada; reúne o mapa, os scripts e os GAFs de cada missão ✅ Lê
Animações de sprites GAF / TAF .gaf, a paleta vem de palettes/palette.pal .taf com paleta (mesmo formato binário), paleta vinda de um .pcx por lado; e também uma variante truecolor .taf/.tsf (ARGB de 16 bits, veja taf.md) ✅ lê todos; ✅ grava GAF e TAF/TSF truecolor
Imagens PCX unitpics/<name>.pcx para os retratos das unidades (96×96 com paleta) Usado como portador de paleta 1×1 ao lado do .taf ✅ Lê/grava
PAL / ALP / LHT / SHD Paleta global do TA + tabelas de consulta Paletas por lado e por terreno, quase todas dentro de portadores PCX; palettes/ também traz um .alp (65.536 bytes) e um .shd / .lht (8.192 bytes) com a mesma estrutura para quase todas elas (41 conjuntos) ✅ Os dois (kbot pal lookup --palette aceita um .pal ou um .pcx)
Fontes bitmap FNT fonts/*.fnt, glifos de 1 bpp Mesmo formato, em geral com um conjunto de glifos maior ✅ Lê
Seções de mapa SCT sections/<biome>/*.sct, blocos de terreno reutilizáveis para o editor TAE Não é usado: o sistema de blocos do TA:K é outro ✅ TA; N/A TA:K
Terreno de mapa TNT IDVersion == 0x2000, grade de blocos + mapa de altura + elementos + minimapa IDVersion == 0x4000 (variante); mesma estrutura geral, decodificador de blocos diferente ✅ TA; ⚠️ TA:K (lê o cabeçalho, blocos não decodificados)
Arquivos que acompanham os mapas do TA:K N/A .ota (metadados TDF), .txt (descrição), .crt (binário, finalidade desconhecida) ✅ .ota; — .crt/.txt
Modelos 3DO Hierárquicos, faces com cor indexada da paleta ou texturizadas Parecidos, mas o modelo de texturização é outro; alguns campos extras por primitiva ✅ TA; ⚠️ TA:K (carrega, mas a cinemática é diferente)
Scripts de unidades COB / BOS scripts/*.cob; bytecode baseado em pilha Mesmo formato de bytecode e mesmos opcodes; algumas portas de GET_UNIT_VALUE a mais ✅ Os dois
Configurações em texto TDF / FBI / OTA Mesma gramática em forma de INI Mesma gramática ✅ Os dois
Definições de arma embutidas Não: as armas ficam em weapons/*.tdf, referenciadas pelo nome Sim: subseções [WEAPON1]/[WEAPON2]/[WEAPON3] dentro do FBI de cada unidade ✅ Os dois, via documentor
Perfis de IA ai/*.txt com as diretivas plan/weight/limit ai/*.txt só com weight/limit (sem bloco plan) ✅ Os dois
Menus de construção gamedata/sidedata.tdf [CANBUILD] estático + sobreposições dinâmicas download/*.tdf [MENUENTRY] Um diretório por construtor, canbuild/<builder>/<unit>.tdf, cada um com [Menu].Priority ✅ Os dois
Grade do menu de construção 2 colunas × 3 linhas por página (BUTTON 0–5) Lista linear por construtor, ordenada por Priority —
Ligação dos bancos de som 3 camadas: FBI SoundCategory → gamedata/sound.tdf → sounds/*.wav Campos soundclass= / soundcategory=, resolvidos de outro jeito ✅ ligação do TA; ⚠️ a ligação do TA:K ainda precisa ser documentada
Vídeo Smacker / ZRB data/*.zrb (.smk renomeado) Mesmo formato Smacker com outras extensões ✅ Os dois
Menus GUI .gui (formato diferente do TA:K) .gui, árvore de widgets separada por espaços; veja takgui.md ⚠️ só o do TAK está descrito; o .gui do TA ainda não foi coberto

Legenda: ✅ suporte completo · ⚠️ parcial · ❌ sem suporte · — N/A ou sem planos


O que é realmente compartilhado

Mesmos bytes, mesmo analisador, mesmos tipos Go:

  • Marcador do HPI ('HAPI'): todo contêiner de arquivo compactado começa com ele.
  • Gramática TDF: os dois jogos leem os TDFs de FBI/OTA/armas com o mesmo analisador. Os nomes dos campos mudam, mas a sintaxe é idêntica.
  • Bytecode COB: os opcodes, o modelo de pilha, as máscaras de sinais e todos os valores 0x10xxxxxx catalogados em cob.md funcionam nos dois.
  • Vídeo Smacker: .smk / .zrb são idênticos bit a bit; só muda a extensão do arquivo.
  • Conceito de hierarquia do 3DO: os dois jogos usam árvores pai/filho/irmão de peças com nome, coordenadas em ponto fixo e primitivas que referenciam texturas pelo nome.

O que é sutilmente diferente (leia com atenção)

  • Estrutura do cabeçalho HPI. v1 = 20 bytes no total (5 × uint32). v2 = prólogo de 8 bytes + subcabeçalho de 24 bytes. Os 8 primeiros bytes são idênticos nos dois (marcador + versão), então um leitor que só conhece a v1 consegue validar o número mágico antes de quebrar no resto. Veja HPI v2 em hpi.md.
  • Campos de economia do FBI. TA: BuildCostMetal= + BuildCostEnergy=. TA:K: um único buildcost= (mogrium). O documentor trata os dois via Unit.BuildMetal/BuildEnergy (TA) e Unit.BuildCost (TA:K); veja types.go.
  • Códigos de lado. TA: ARM / CORE. TA:K: ARA / TAR / VER / ZON + CRE (Iron Plague) + MON / LIF / NPC.
  • Arquétipo de arma. TA: um saco de campos booleanos (ballistic=1, lineofsight=1, guidance=1, beamweapon=1, …). TA:K: uma única string type=Ballistic / Missile / Magical / Melee.
  • Modelagem de dano. Os dois usam uma subseção [DAMAGE] dentro da arma, com um default= e substituições por alvo. O TA:K usa ainda damagecategory= em cada unidade (Human, Building, Magical) para modelar a resistência por classes amplas.

O que só o TA tem

  • Dados de arquivo em vários chunks nos arquivos compactados HPI (o modelo de "chunks de ≤64 KiB com tabela de tamanhos").
  • Criptografia XOR do HPI (semente por posição + chave transformada).
  • Sobreposição download/*.tdf [MENUENTRY] para acrescentar entradas ao menu de construção sem fazer um fork do sidedata.tdf.
  • Grade 2×3 do menu de construção, com BUTTON 0–5 (do canto superior esquerdo ao inferior direito).
  • Diretório weapons/ separado, com TDFs referenciados pelo nome.
  • Formato de editor SCT (seção), específico do TAE.
  • Uma única paleta global (palettes/palette.pal) com que todo recurso é desenhado, e um único conjunto de tabelas .alp / .shd / .lht. O TA: Kingdoms tem uma paleta por lado e por conjunto de terreno, a maioria com tabelas da mesma estrutura.

O que só o TA: Kingdoms tem

  • HPI v2, com dados de arquivo simplificados em um único chunk.
  • Árvore de diretórios canbuild/<builder>/<unit>.tdf para registrar itens no menu de construção (linear, sem grade).
  • Definições de arma [WEAPONn] embutidas nos FBIs.
  • Economia de um único recurso, o mogrium (buildcost=, sem separação entre metal e energia).
  • Paletas por lado guardadas dentro de PCX 1×1 de fachada, ao lado dos arquivos de animação .taf.
  • Unidades de magia que lançam feitiços (arapries, vermage, zonsham), cujas armas são feitiços.
  • Quatro (+1) lados: Aramon, Taros, Veruna, Zhon, além de Creon, da expansão Iron Plague.
  • anims/buildpic/*.jpg: retratos das unidades como JPGs de 64×48 (o TA usa PCX em unitpics/).
  • Arquivos compactados HPI v2 .kmp de missões de campanha, que reúnem os mapas de cada missão com os scripts da missão.
  • -disablecavedogverification, opção de linha de comando exigida para carregar a maioria dos arquivos de mods.

Diferenças por página: onde fica a cobertura de cada jogo

Toda página de formato que tem particularidades do TA:K traz uma seção "TA: Kingdoms" bem identificada. Índice rápido:

Página Seção do TA:K
hpi.md HPI v2 do TA: Kingdoms, percurso hexadecimal completo no Apêndice: Jersey.hpi
ai.md TA: Kingdoms: perfis sem plan
takgui.md A página inteira é só do TA:K
takmap.md A página inteira é só do TA:K

Os catálogos de referência ficam em repositórios separados:


Veja também

  • internal/documentor: o pacote Go que faz a extração dos dois jogos.
  • Armadilhas: as armadilhas específicas de cada jogo, em um só lugar.
  • Tutorial de modding: por enquanto só para o TA; a cobertura do TA:K é uma lacuna conhecida.
  • Glossário: referência de terminologia entre os dois jogos.