Core Prime Creators · for map makers, modders and tool builders

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

Maps & terrain

Units, scripts, configs

TA: Kingdoms GUI

Tutorials & reference

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.

01

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.

02

Anatomy 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.

03

Make 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.

04

Lua 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.

05

Port 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.

06

Check, 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.

07

Make 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.

08

The brain's Lua

Steady Commander's manifest and script, the hooks, what a brain may know and do, numbers, random draws, timers and chat.

09

Classic, 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.

10

Learned 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.

11

Check, 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.

12

Standard 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.

13

Script 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.

14

Versions 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.

15

Publishing 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.