Make maps, mods, units and tools for Total Annihilation
Everything a creator needs for Total Annihilation and TA: Kingdoms: a reference to every file format the games ship, byte by byte; kbot, the toolkit that reads and writes them; and the guide to packaging maps, mods, mutators and computer players for Open Annihilation.
The file format referenceevery format the two games ship, from archives to unit scriptsThe whole catalogue ›
Each page pairs a format's on-disk layout with the kbot command that shows it in your own install: what the file is, its header and payload byte by byte, the order to read it in, a real Cavedog file taken apart, and the gotchas.
Container & wrapper formats
Graphics & media
GAF
Indexed-colour sprite animations (cursors, explosions, unit gadgets, features)
.gaf .tafTAF / TSF
TA: Kingdoms truecolor (16-bit ARGB) animations — spell effects, explosions, menu backgrounds — plus their editable text form
.taf .tsfPCX
ZSoft Paintbrush bitmap — unit portraits, GUI panels, and TA:K palette carriers
.pcxPAL / ALP / LHT / SHD
256-entry colour palette (1,024 bytes) and colour lookup tables: .alp 256×256 (65,536 bytes), .shd / .lht 32×256 (8,192 bytes)
.pal .alp .lht .shdFNT
1-bit-per-pixel variable-width bitmap font
.fntSmacker / ZRB
Cutscene video (RAD Game Tools Smacker, renamed .zrb)
.smk .zrbBink
TA: Kingdoms cutscene video (RAD Bink 1) — Smacker's successor
.bikWAV / Sound
Plain WAV plus the three-layer sound-bank wiring
.wavMaps & terrain
SCT
Reusable map sections stitched together to build .tnt maps
.sctTNT
A complete playable map (tile grid + heightmap + minimap + feature list)
.tntTA:K maps
TA: Kingdoms map pipeline — texture-mapped terrain + minimap render, and the .crt scenario sidecar (placed units, rules, triggers)
.tnt .ota .crt .kmpUnits, scripts, configs
3DO
Hierarchical 3D unit/feature mesh with palette-indexed faces
.3doCOB / BOS
Stack-based animation/scripting bytecode that drives every unit
.cob .bosTDF / FBI / OTA
INI-style configuration trees — unit stats, weapons, map metadata. Includes full FBI field dictionary.
.tdf .fbi .otaGamedata TDFs
Movement classes, side data, sound bindings, weapon reference
gamedata/*.tdfAI profiles
Plain-text per-difficulty AI weights and unit limits (TAK profiles are plan-less; see TAK note)
ai/*.txtTA: Kingdoms GUI
Tutorials & reference
Quickstart
Five commands to try first.
Modding a unit
End-to-end tutorial: extract → edit → repack → test (TA).
Pitfalls
Single-page cheat-sheet of every gotcha across the format docs.
TA vs TA:K formats
Single-page matrix of what's shared, similar, or game-exclusive.
Glossary
Common terms (piece, axis, sealevel, signal mask, …).
The kbot toolkitone command line for every formatkbot on GitHub ›
kbot opens HPI, UFO, CCX and GP3 archives, renders maps, sections, sprites, palettes and fonts, decompiles and lints COB scripts, parses TDF and FBI files, and mounts a whole install as one folder you can browse. Every command in the format reference runs as written once a context is set.
Install it with Go, then register your game folder:
go install github.com/coreprime/kbot/cmd/kbot@latest
kbot ctx add ~/games/totala --alias ta --game totala
Modding Open Annihilationthe packaging guide on mods.coreprime.netThe packaging guide ›
Open Annihilation plays the maps and mods you make. A map pack is one .oamap file, a mod one .oamod, a mutator one .oamut and a computer player one .oabrain: a zip with a manifest at the top, checked and installed by the game. The packaging guide covers each, chapter by chapter.
Anatomy of a map pack
The .oamap zip, its oamap.yaml manifest, the map index the packer writes, and how a map's size and features decide whether it fits a game.
02Anatomy of a mod
The .oamod zip and the profile oamod.yaml: identity, layout, limits, data keys, script extensions and the standard hacks it turns on.
03Make a mutator
A small .oamut layered over the base game or any mod: the folder, the manifest, the plan mutate returns, options, the sandbox and the order a stack applies.
04Lua examples
Six working scripts from real packages: one rule, scaling with caps, a side, a units hook that can refuse the game, a features hook, and a files plan with layered folders.
05Port a legacy mutator
KroggyComm 1.1 from its archives to a package, and a TA: Mutation rule file kept with sm or rewritten as Lua.
06Check, pack and publish
oa-tool mutator check and pack, a dry run, what the catalogue page shows, the icon, and how to offer the package to Core Prime.
07Make a brain
A .oabrain that plays one computer seat: the folder, every manifest key, the tags, levels, full awareness, where the script runs, the budgets, and what happens when it stops.
08The brain's Lua
Steady Commander's manifest and script, the hooks, what a brain may know and do, numbers, random draws, timers and chat.
09Classic, a worked example
The built-in computer player written in Lua: its files, the task table, one task, the quirk notes, what stays in the engine, and how the same orders are proven.
10Learned networks
Why a brain might ship a .oann, integer arithmetic, the layers, running one, oa-tool brain net, the limits, and what the Library shows.
11Check, pack and publish a brain
oa-tool brain pack and check, a headless match and a trace, the Library's check and the seat log, the catalogue's oabrain kind, and how to offer the package to Core Prime.
12Standard hacks
The documented rules a profile may switch on, each with its key, values and the behaviour it came from. Simulation hacks must agree between players.
13Script extensions
The values a profile can give a mod's unit scripts, such as a unit's kill count or its owner's alliances, with how a COB script reads each.
14Versions and releases
Your version is free text and never ordered. packaging.revision rises with each repack; the catalogue numbers releases. Never reuse a version and revision with different bytes.
15Publishing to Core Prime
Checking a package, offering it to the content library, how a release appears in the catalogue and in every player's Library, and how to run a registry of your own.