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

Início rápido — cinco coisas para experimentar já

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

Comprou o TA na GoG na semana passada. Instalou o kbot há cinco minutos. Não sabe por onde começar? Experimente estes cinco comandos: cada um demora menos de um minuto e mostra um formato diferente.

Todos partem do princípio de que a sua instalação do TA está registada como contexto do kbot (veja kbot ctx):

kbot ctx add /path/to/total-annihilation --alias ta --game totala

1. Explorar todos os ficheiros do jogo num navegador web

kbot mount --server

Abre em http://localhost:8090. Explore à vontade: pode pré-visualizar TNT, GAF, PCX, 3DO e FNT sem sair do navegador. Os scripts COB têm realce de sintaxe e um visualizador do fluxo de controlo. Os ficheiros TDF/FBI/OTA aparecem como árvores de secções que se podem recolher.

Porquê começar aqui: todos os outros comandos deste guia fazem uma parte específica do que o explorador já faz. Comece por aqui e passe para a linha de comandos quando quiser automatizar alguma coisa com um script.


2. Renderizar um mapa da campanha

kbot tnt preview "maps/sub hunting.tnt" -t /tmp/sub-hunting.png
open /tmp/sub-hunting.png      # macOS — use `xdg-open` on Linux

Sobrepõe os sprites dos elementos do mapa (árvores, rochas, jazidas de metal) à grelha de mosaicos e desenha marcadores numerados das posições iniciais, lidos do .ota que acompanha o mapa. O PNG de 1.7 MB que produz mostra muito mais do que o minimapa de 252×252 incluído no ficheiro.

Os pormenores do formato estão em tnt.md: cada byte tem a sua função.


3. Ver o que uma unidade faz realmente

Descompile o bytecode compilado de volta para código-fonte BOS legível:

kbot cob decompile scripts/armkrog.cob | head -80

…é o script de animação do Krogoth. O ciclo de marcha, o recuo da arma, a sequência de morte: está tudo lá. Para ver o pormenor ao nível dos opcodes, desmonte-o:

kbot cob disassemble scripts/armkrog.cob -s Walk -a

A opção -a desenha setas ASCII entre as instruções JUMP / JUMP_IF_FALSE que se correspondem, para que a estrutura dos ciclos se veja num relance.

Veja cob.md, incluindo a referência completa de opcodes e a tabela de portas de get_unit_value.


4. Extrair um único ficheiro de qualquer arquivo

Sem ter de extrair o jogo inteiro:

kbot hpi extract totala1.hpi -p "units/ARMCOM.FBI" -t /tmp/out
cat /tmp/out/units/ARMCOM.FBI | head

-p aceita padrões glob: -p "units/*.fbi" extrai todos os FBI e -p "*.bos" apanha todo o código-fonte dos scripts. A pasta de destino é criada se for preciso.

Quando nem sequer sabe em que arquivo está o ficheiro, pergunte ao resolvedor:

kbot mcp --game-data $(kbot ctx path) &     # if MCP is configured
# or use the web UI's search box

Veja hpi.md, que inclui um percurso hexadecimal completo, byte a byte, de um arquivo pequeno.


5. Exportar a paleta canónica do TA para um PNG que pode guardar

kbot pal swatch palettes/palette.pal -o /tmp/ta-palette.png --cell 24
open /tmp/ta-palette.png

Uma grelha de 16 × 16 com todas as cores do jogo. Serve de referência rápida quando está a trabalhar na textura de uma unidade ou a escolher o índice de cor de um elemento do HUD. A célula tracejada no canto superior esquerdo é o índice 0 (preto), tracejada para se destacar. O jogo desenha-a como um preto normal no terreno e nos fundos, e os sprites escolhem a sua própria cor-chave transparente em cada fotograma.

Veja pal.md e, para saber como o TA: Kingdoms distribui as paletas através de ficheiros PCX de 1×1 que servem só para as transportar, pcx.md.


E agora?

  • Modificar uma unidade: siga o tutorial de modding para lançar uma variante personalizada do Flash do ARM em ~20 minutos.
  • Perceber a fauna de ficheiros: comece pelo índice da referência de formatos.
  • Criar uma ferramenta: todos os formatos têm uma API em Go. A caixa "Experimente por si" de cada página de formato mostra o caminho de importação formats/<x>.
  • Ligar assistentes de IA: kbot mcp expõe tudo o que está acima ao Claude Code, ao Claude Desktop, ao Cursor, etc., através de MCP. Veja a secção sobre MCP no README.