Total War modding · Blender add-on

Build things for the battlefield.

This add-on turns a Blender scene into files a Total War game can load — houses, walls, gatehouses, soldiers, weapons, skeletons and animation. This guide explains what every button is for, in plain words.

New here? Read What this add-on does, then follow Your first building. Everything else is a reference you can dip into.

Start here

What this add-on does

Three things, in this order.

  1. You model in Blender. Normal meshes, normal materials, normal keyframes.

    The add-on never asks you to type a technical name. You sort your work into folders (Blender calls them collections) and it works out the rest.

  2. It writes a .CS2 file. That is the format the game's own tools read.

    It sits between the two: your .blend is the source, the game files are the finished thing, and .CS2 is the staging post in the middle.

  3. BOB turns that into game files. BOB is a tool that comes with the Assembly Kit.

    The add-on can run BOB for you and even put the result into the game's data folder, so you never have to open BOB yourself.

You need an Assembly Kit. It is a free download on Steam, under the game's own "Tools". Without it there is nothing to compile with, and materials will not look right.

Which games

Attila confirmed
Every part of this add-on was built and tested against Attila's Assembly Kit, with real compiles. Its kit is also the one found automatically.
Rome II, Thrones of Britannia untested
They use the same file formats and are expected to work, but nothing has been built for them yet. Point the add-on at their kit by hand and report what happens.
Warhammer and later open
Not supported today, and not ruled out either. The later titles changed parts of these formats, so support would be work rather than luck.

Start here

Install & set up

Once, then never again.

  1. Install the add-on. In Blender: Edit > Preferences > Add-ons, then install the add-on's .zip and tick it on.

  2. Check the Assembly Kit folder. Still in Preferences, expand the add-on's entry.

    It finds Attila's kit by itself. For any other game, or if the box is empty, point it at that game's own assembly_kit folder inside steamapps/common.

  3. Open the sidebar. Hover the 3D viewport and press N, then click the Total War tab down the right edge.

  4. Pick a Workflow. The top panel switches between Building, Unit, Skeleton, Skeletal Animation and Vegetation.

    It only changes which panels you see — it never changes your scene.

Why the add-on wants that folder

Three reasons. It reads the game's own shader textures from there so your materials preview correctly; it runs BOB out of the kit's binaries folder; and BOB will only compile files that live inside the kit's raw_data folder — so that is where you export to.


Start here

Your first building

A single stone block, start to finish. Ten minutes.

  1. New Building. Name it something short and lowercase, like my_hut. That name becomes the filename.

  2. New Building Piece. A piece is a chunk that gets destroyed as one lump.

  3. New Destruct Level. This makes a Display and a Collision folder for you.

  4. Put a cube in Display. This is what players see.

    It needs a UV map (U in Edit Mode → Smart UV Project) and a material.

  5. Put another cube in Collision. This is what the camera and arrows hit. It is never drawn, so keep it simple and roughly the same size.

    Soldiers are stopped by something else — an Outline line, further down. A building with no Outline is one they can walk straight through.

  6. Make Total War Material. Select the display cube, open the Materials panel, click it. Your material is now the game's shader.

  7. Validate. Fix anything it lists in red.

  8. Export Building. Choose a folder inside the Assembly Kit's raw_data, leave both tick boxes on, press Export.

    Blender freezes for up to a minute while BOB works. That is normal.

Where did it go? The compiled model lands in the kit's working_data folder, and the .pack lands in the game's own data folder, ready to load.


The basics

Collections are the plan

The add-on reads your Outliner tree. Where a mesh sits is what the mesh is.

You never set that by hand: the New… and Add… buttons create each collection with its job already attached.

Forgot what a folder is for? Click it, then look at Properties > Collection > Total War Info. Every collection explains itself there.

my_hut ← Building. The filename. └── Piece ← one destructible chunk └── Destruct ← one damage state ├── Display ← what you see (LOD 1…5) ├── Collision ← camera and projectile collision └── …optional extras you add yourself

Two rules worth knowing early

  • Buttons only appear where they can work. No "New Destruct Level" until a piece is selected. If a button is missing, you have the wrong thing selected.
  • Selecting means clicking. Click the collection in the Outliner, or click one of its objects in the viewport.

LOD levels

LOD means "level of detail" — the same object modelled simpler for when the camera is far away. LOD 1 is the close-up version. You set it per mesh with the LOD Level dropdown.

One LOD is perfectly fine to begin with. Add more only when you want the distant version to be cheaper.

Skipping a number is allowed, and buildings do it often. The levels you do have pack into consecutive slots, each keeping the camera distance its own number implies — so LOD 1, 2 and 4 gives you a three-step chain with a jump in the distances, not a broken model. Validate mentions it so you know it happened, and lets the export through.


The basics

Materials & textures

The game does not use Blender's shading, so a normal material would be thrown away.

  1. Give the mesh a material the usual Blender way.

  2. Press Make Total War Material. It rebuilds the material with the game's own shader, so the viewport shows roughly what the game will show.

  3. Fill in the texture slots. They appear as image nodes in the Shading workspace: Diffuse, Normal, Mask, Gloss, Specular and more.

Shader Type

Which of the game's shaders to use. The menu only offers the ones that suit your current workflow — building shaders for buildings, skin and cloth shaders for soldiers.

Hover any entry to read what it is for. Standard is the right answer for most buildings and props.

Alpha Mode

What the shader does with your diffuse texture's transparency. Leave it on None unless you are making something cut-out — foliage, a grille, rope — which wants Alpha Test.

Shader Preview Light

The game shader carries its own light, so Blender's lamps do not reach it. Pick a light here and the preview follows it as you move it.

Why is my material black?

Some slots — the dirt, dirt mask and ambient-occlusion maps — default to black, exactly as the game's own tools do. A shader that reads them will render black until you assign a real texture. Either fill the slot or switch to the plain Standard shader.

Shaders that need a second UV map

Tiled Dirtmap and Ship Ambientmap read one of their textures from a second UV map. Add one in Object Data Properties > UV Maps before using them — Validate will warn you if you forget.

Every shader and every slot is listed in Every shader, every slot.


The basics

Every shader, every slot

What each texture slot feeds, and which shader adds which extras.

The five every material has

Press Make Total War Material and these appear as image nodes in the Shading workspace, whichever shader you picked.

Diffuse
The base colour. Its alpha channel is what Alpha Mode reads, so this is the texture that decides where a cut-out surface has holes.
Normal
Surface bumps and detail. DirectX convention — green points down. Flip the green channel if your map came from a Blender bake and looks inverted.
Gloss
How sharp the highlight is. Only the red channel is read: black is a broad dull sheen, white is a tight mirror-like one.
Level
How strong the reflection is, again from the red channel. Metal wants high, cloth wants low.
Specular
The colour of that highlight. Grey for most things; a real metal tints its own reflection, so bronze and gold belong here.

Unfilled slots are not empty. Each one starts as the same flat placeholder the game's tools use — grey, white, black or flat-normal blue depending on the slot. That is why a fresh material renders as plain grey rather than magenta.

What each shader adds

ShaderAdds on top of the fiveFor
Standard Tint Mask 1, 2, 3 (optional) Buildings, props, rigid weapons and shields
Tiled Dirtmap Dirtmap, Dirtmask Seamless fort wall pieces and other repeated runs
Ship Ambientmap Ambient Map Surfaces with baked-in shadowing
Terrain Blend Decal Diffuse, Decal Normal, Decal Mask Ground that takes on the map's own terrain
Weighted Tint Mask 1, 2, 3 (optional) Armour, cloth, equipment on a soldier — where tinting is actually used
Weighted Skin The three masks change meaning — see below Faces, hands, bare limbs
… Decal Decal Diffuse, Decal Normal, Decal Mask Insignia, war paint, tattoos
… Dirtmap Decal Dirtmap, Decal Dirtmask Grime over armour or skin
Tree / Tree Leaf Nothing — the five only Bark and leaf cards

The weighted shaders combine: Weighted Skin Decal Dirtmap is skin lighting plus a decal set plus grime, and carries all of their slots at once.

The extra slots explained

Tint Mask 1, 2, 3 optional

Entirely optional, and mostly used on clothing. A soldier's tunic, cloak and trousers are the usual case — it is what lets one body texture serve a dozen factions. Buildings and props can use it, but rarely do.

Three greyscale masks mark which parts get recoloured — typically one for cloth, one for leather, one for trim — and each has a colour swatch beside it in the node group.

They default to black, meaning no tint at all, so an untouched material shows your diffuse exactly as painted.

Paint the diffuse white wherever a tint mask is active. The tint is multiplied into your diffuse, so white takes the tint colour cleanly — while a coloured base multiplies with it and comes out muddy or near-black. A red tint over blue cloth gives you dark sludge, not purple.

Keep those areas white or light greyscale: the greyscale carries the folds and shading, the tint supplies the colour.

The Faction Colouring slider

Beside the three colours sits a Faction Colouring value from 0 to 1. At 1 the colour is brightness-corrected the way the game treats a real faction colour; at 0 it is used exactly as you picked it. Leave it at 1 unless you are matching a specific look.

Dirtmap + Dirtmask Tiled Dirtmap

Best suited to seamless fort wall pieces — the segments you repeat end to end to build a wall. The grime tiles at its own scale rather than with the base texture, so it carries across the joins and the run stops looking like the same block stamped twenty times.

Dirtmap is the grime pattern. Dirtmask says where it is allowed to show — in the crevices, under the eaves, not on the exposed faces.

Two textures, two UV maps, one tiling number

The dirtmap reads your first UV map through a Mapping node labelled Dirtmap Tiling, which starts at 4× — raise it for finer grain, lower it for broader streaks.

The dirtmask reads your second UV map, untiled, so it stays pinned to the model. That is why this shader needs a second UV map and warns if there is none.

Ambient Map Ship Ambientmap

Baked ambient occlusion — the soft contact shadows where parts meet. It is multiplied into both the colour and the highlight, so it darkens everything at once.

Read from the second UV map, so this shader needs one too.

Decal Diffuse, Normal, Mask any … Decal shader

A second little texture set laid over the first: a shield emblem, a unit marking, war paint. Decal Mask controls where it lands, the other two give it colour and its own surface relief.

Terrain Blend uses these same three slots, but blends them by the mesh's own vertex alpha instead of a mask — which is how a terrain patch fades into the ground around it.

Painting the vertex alpha for Terrain Blend

Terrain Blend reads the mesh's own Color Attribute (vertex colours), not a texture. Add one under Object Data Properties > Color Attributes (or just enter Vertex Paint mode, which creates one for you if the mesh has none), then paint its alpha channel: white/opaque keeps your own Diffuse, Specular and Normal exactly as authored; painting it down toward black exposes Decal Diffuse/Normal/Mask instead, letting the surface fade into the surrounding ground. A mesh with no colour attribute at all renders as constant white — Terrain Blend simply stays off, so this is safe to skip on pieces that do not need it.

Mark the attribute as the render colour, not just the active one. A mesh can hold several Color Attributes, and only the one flagged for rendering — the small camera icon beside it in the Color Attributes list — is what gets exported and what the preview shader reads. Clicking an attribute to paint it makes it the active one for editing, which is a separate flag; if the render one is still pointed at something else, your painting has no effect on the exported result. Check it explicitly rather than assuming your latest edit is the one that ships.

Decal Dirtmap + Decal Dirtmask any … Dirtmap shader

The soldier version of grime. Both read the first UV map, tiled and nudged by a fixed offset so the pattern does not sit identically on every unit wearing the same texture.

Note this is a different pass from the building's Tiled Dirtmap — different slots, different UV map. A soldier uses these; a wall uses those.

Rim, Sub Surface, Back Scatter any Skin shader

On a skin shader the three tint masks are reused for something else entirely — they stop being faction colours and become lighting strengths.

Rim is the bright edge where light wraps around a limb. Sub Surface is light spreading under the skin. Back Scatter is the glow through thin parts, like an ear against the sun.

A skin shader also ignores the Specular colour map — the game's own skin models carry none.

Rule of thumb: start on Standard (buildings) or Weighted (soldiers), fill in Diffuse and Normal, and add the rest only when you can see what is missing.


The basics

Validate

Press it before every export. It is free and it saves you a minute of BOB.

Results appear in Blender's status bar at the bottom — click it to see the full list.

Red — error
Export refuses to run until it is fixed. Something is missing or contradictory.
Orange — warning
Export goes ahead. It means "this is unusual, are you sure?"

Export always runs the same checks itself, so nothing broken sneaks through. Validate just lets you see the list sooner.


The basics

Export & BOB

One button, three optional stages.

Export into the Assembly Kit's raw_data folder. BOB refuses to build anything kept anywhere else. Export elsewhere and you get the .CS2 file only, plus a message telling you so.

Compile With BOB on by default

Runs BOB for you and turns the .CS2 into real game files. Blender is locked while it works — the status bar counts the seconds. Expect 20 seconds or so.

Create a Pack on by default

Bundles the result into a .pack file and moves it into the game's data folder, where the game and the editor look for it.

Pack Type

Release — loadable in TEd, the Assembly Kit's battlefield editor. This is the default.

Mod — loadable in the game itself. Remember to switch it on in the launcher's mod list, or the game will ignore it.

When BOB finishes, a dialog tells you whether it worked and where things went. If it failed, the dialog carries BOB's own reason.

Exporting several things at once

Select more than one, press Export once. Every selected asset is validated and written out, and then the whole batch is built in a single BOB run — which matters, because starting BOB costs about twenty seconds no matter how much you ask it to do. Ten buildings one at a time is ten of those waits; ten in a batch is one.

Buildings
Select the buildings — in the viewport, or their collections in the Outliner. One compile run for all of them, plus one pack run if Create a Pack is on.
Units
Select the unit assets. Every model inside each one is pooled into the same single run.
Skeletons
Select the skeletons. One run.
Animation
Different, because a clip is not a collection: the export dialog lists the skeleton's clips with tick boxes. Tick the ones you want.

The dialog names what it is about to build, so you can check the batch before committing.

One kind at a time. A selection mixing buildings with units, or a unit with the skeleton it is bound to, is refused — they build in different ways. Export them separately.

One folder per batch. Everything in a run goes to the folder the dialog asks for.

If one asset in a batch fails

Nothing is handed to BOB — a batch never half-builds into the game files. Whatever was written out before the failure stays on disk, since those are complete valid files, and the blocked dialog lists every failure with the asset that caused it.

Validate is still one at a time — it checks the active asset only. Export validates everything in the batch itself, so nothing broken slips through either way.


The basics

Build settings (rules.bob)

The panel in the export dialog that decides what the thing is in the game.

BOB does not read your .CS2 and guess. Beside every file it builds there has to be a small text file called rules.bob, and that file is where a building's hit points live, where a unit model's compiled copy is written to, and how far a tree's fire spreads. The add-on writes it for you.

Up to now it always wrote the same values — the ones Creative Assembly ship beside their own assets. The export dialog now has a rules.bob panel where you can change them before you build, and every box starts filled in with exactly those known-good defaults. Change nothing and you get the file that was written before this panel existed, byte for byte.

The panel covers every key BOB documents for the kind of thing you are exporting. The handful you reach for most are shown straight away; tick Show All Options for the rest — the ones BOB carries its own default for. Those are genuinely left out of the file until you set them, which is why a defaulted export still matches CA's file exactly.

The panel only works when Compile With BOB is ticked. It greys out otherwise, and no rules.bob is written at all — BOB is the only thing that ever reads one, so an export you are not building leaves nothing behind.

What each workflow offers

The settings are not the same from one workflow to the next, because BOB does not build a tree the way it builds a soldier. You are only shown what applies to what you are exporting.

Buildings
Hit Points and Capacity — how much punishment it takes and how many men it garrisons. Category and Audio Material are dropdowns of the game's own values. Incendiary Radius (how far fire spreads over it), Animation FPS (the rate the destruction and gate clips are resampled onto), Multiple Buildings and Texture Path.
Show All Options adds: Can Burn, Auxiliary, Joiner, Collision 3D, Gun Type (for a tower that shoots) and Animation Type.
Units
Skeleton (Animation Type) — see below, this is the one that decides what a model is rigged to. Target Path, where under working_data the compiled model is written: it is this, not the folder you exported the .CS2 into, that decides where the built model lands, and the "BOB finished" dialog follows whatever you set here. Plus Texture Folder, Texture Sub-folder and Save AGF.
Show All Options adds: Target Filename, Target Extension, Rigid Category, Update Database, Single LOD, Variable Bones Per Vert, Disable Alpha Test and four LOD switch distances.
Animation
Skeleton (Animation Type), then the seven channel switches plus Ignore Metadata. The channels decide what survives into the compiled clip: with them all off — the way CA ship them — a clip keeps rotation only, except on the root and the floating weapon bones. Turn Core Translations on if your clip really does move the body bones as well as turning them.
Show All Options adds: Target Path and the whole Cinematic set — its own skeleton and its own seven channel switches, used when the clip is built for a cutscene.
Vegetation
Build the Fire Hull (leave it on, or the tree cannot catch fire), Incendiary Radius — how densely the fire emitters are spread over that hull — and the four LOD switch distances.
Show All Options adds: Target Path, Texture Folder and Texture Sub-folder (all three worked out for you when left empty), the same seven shared model keys the Units panel has, and Animation Type.
Skeletons
Just Target Path. A skeleton's other two rule values are fixed by what a skeleton is, so there is nothing else to choose.

Skeleton (Animation Type)

This is the setting that decides what a unit model is rigged to, or which skeleton an animation clip is built against — BOB stamps it straight into the compiled file. It is filled in for you from the scene, and it works as a folder default:

  • Every asset you export gets its own line naming the skeleton it is bound to in Blender, and that line wins. Export a body bound to rome_man_game and a shield bound to nothing, into one folder, and each is built correctly without you setting anything.
  • This box covers everything else in the folder — a .CS2 you dropped in by hand, or one built by other means. Left empty, such a file compiles with no skeleton at all, which is right for weapons, shields and props and wrong for a body.
Exporting unit models
The box arrives holding the skeleton the selected assets are bound to. Select a batch that all share one skeleton and you get that one; select assets bound to two different skeletons, or none at all, and the box is left empty — every asset still carries its own line either way.
Exporting animation
The box arrives holding the skeleton whose clips you are exporting — the same one the clip list was built from, so it always agrees with what the per-clip lines will say.

It is a plain text box, so you can still type over it — useful when the folder you are building into holds files this export knows nothing about.

LOD switch distances

The four boxes arrive holding 100, 200, 400 and 500 — which is not a guess, it is exactly what BOB puts in a compiled model when nothing tells it otherwise. So the numbers you see are the numbers you will get.

Because they already match, an untouched ladder is not written to rules.bob at all. Move any one rung and all four are written together — a ladder with one rung named and three missing is not a ladder.

Confirmed against BOB: a weighted model whose folder default said rome_man_game, and which had no line of its own, compiled with rome_man_game as its bone table name.

Why a few keys are still not offered
  • The generated tree billboard. The key that turns it on crashes BOB outright on Attila's kit — measured under a debugger, on a plain model as well as on a tree. There is nothing an artist could do with it, so it is not offered. A built tree has no far-distance billboard as a result.
  • Export As Reference Pose is what separates a skeleton from a clip. It is not a choice; it follows from which button you pressed.
  • Animation Type on a building or a tree is offered, but under Show All Options and with a warning: set it to anything but building or tree and BOB recognises nothing to do with the file, so the export finishes having built nothing.
Where the Category and Audio Material lists come from

Both dropdowns are the game's own enum tables, read out of the Assembly Kit: raw_data/db/battlefield_building_categories.xml (nine categories) and raw_data/db/audio_materials_enums.xml (twenty-eight materials).

BOB's own built-in documentation lists something else entirely — three audio materials and a set of categories like armoury and command_HQ. That text is left over from an older game and is wrong for Attila: it does not even contain generic, the category CA's own rules.bob files use. A real build confirmed it — BOB accepted fort_tower and bronze and wrote both into the database row it generated.

When a rules.bob is already there

A folder often already has one — you exported into it before, or you are working inside one of the game's own folders. What happens next depends on whether you changed anything:

You left the settings alone
The existing file is not touched, exactly as before. If it is one the add-on wrote, a new unit model or animation clip is still added to it — that is not a change to your settings, so nothing interrupts you.
You changed something
A dialog appears before anything is written, listing every value that would change — old on the left, yours on the right. Overwrite writes them and carries on with the export. Cancel exports nothing and leaves the file exactly as it was.

Overwriting is not destructive to the rest of the file. Only the one section the add-on owns is replaced. Every other section stays, and so does every per-file line binding another model or clip to its skeleton — re-exporting one part of a folder never costs the others theirs.

A folder with no rules.bob of its own can still inherit one from a folder above it, which BOB reads instead. Left at their defaults, your settings agree with it and it is left to do its job. Change something and the add-on writes a local file, which wins over the inherited one.

Never being asked again

Edit > Preferences > Add-ons > Blender CS2 All-in-One Kit > Always Overwrite rules.bob. Turn it on and the confirmation stops appearing — an export whose settings differ just writes them. Everything else is unchanged: other sections and per-file lines are still kept, and a folder you have not customised is still left alone.

Blender running in the background has nobody to ask, so it never overwrites. It leaves the file alone and says so in the export warnings instead.

The settings reset to their defaults when you restart Blender. Within a session Blender remembers what you last used, so a run of exports into the same folder only needs setting up once.


The basics

Opening game files

The fastest way to learn is to open something the game shipped with and look at it.

Use File > Import > Total War. One entry handles every supported format — the add-on works out what the file is and switches to the matching workflow.

.CS2
A source file: a building, a unit model, a skeleton or an animation clip.
.cs2.parsed
A compiled building's collision, platforms and markers — no visible meshes in it. A tree's companion file shares the extension; it holds only what the build tool generates, so opening one tells you to open the model beside it instead.
.rigid_model_v2
A compiled model: a unit part, a prop, a tree.
.anim
A compiled animation clip.
.variantmeshdefinition
An assembled soldier — it pulls in every model it refers to.

Where to find files worth opening

The Assembly Kit

Its raw_data folder holds real .CS2 source files — forts, walls, towers. This is the best place to start: open one, see how it is arranged, copy the idea.

The game's own pack files

Everything the game actually ships lives inside .pack files, which Blender cannot read directly. Open them with RPFM, a free pack editor.

Extract the models or animations you want to somewhere on disk, then import those with File > Import > Total War as normal.


Workflow

Buildings

Houses, walls, towers, gatehouses, bridges — anything that stands on the battlefield.

The three levels

Building required

The top folder. Its name is the filename, so keep it short, lowercase, no spaces.

Piece required

One chunk that is destroyed as a unit. A gatehouse with two towers is naturally three pieces — split it wherever parts should fall separately.

Damage Parent

A piece can name another piece as its Damage Parent. When the parent is damaged, this piece takes some damage too — that is how a hit on one fort wall segment shakes the segments either side. Leave it empty for a piece that stands alone.

Destruct Level required

One damage state of that piece. The first is the undamaged building; each one after it is the piece after taking more punishment.

Each level carries its own visible meshes, its own collision, its own everything. One level is enough for a building that never breaks.

Inside a destruct level

Display required

What players see. One mesh per LOD, each with a UV map and a material.

Collision required

Holds the building's collision volumes. Never drawn, so keep them simple — a box is often enough.

Collision 3D is not what stops soldiers. It catches the camera and projectiles. Units are stopped by the Outline and Hard lines, over in the Lines collection — see below.

The five collision types

Collision 3D — the ordinary volume. Camera and projectiles.

Collision 3D Gate Closed — blocks the gateway while the gate is shut.

Collision 3D Gate Ajar — the open gate leaves.

Collision 3D Boiling Oil — the pouring mechanism's volume.

Soft Collision — light clutter units walk straight through and knock down as they go: fences, stalls, market stands. It blocks nobody. Model it as a box and it becomes an upright cylinder as wide and as tall as that box.

What actually counts as "has collision"

A destruct level must carry at least one Collision 3D, gate or boiling oil volume, or export is blocked and the build would fail.

A Soft Collision on its own does not satisfy it — tested directly: a level holding only a soft collision is refused with "has no collision mesh". A gate volume or a boiling-oil volume does count, which is how a gate-only piece in a real fort gets away with carrying no ordinary volume at all.

Platform optional

A walkable floor. This is how the game knows units can stand on your battlements.

Platform Ground is the variant for irregular rubble — typically the surface a destroyed piece leaves behind.

Lines optional

Curves that tell the battlefield AI how to move around and through the building. Draw a curve, then pick its Line Type.

What the line types do

Outline Collision — a closed loop around the footprint that units cannot cross. This is what stops soldiers walking through your building, not the 3D collision. You can have several, which is how you leave a gap where a gate goes.

Hard Collision — the same thing under its other name, for when one loop covers the whole footprint.

Gate Closed / Gate Ajar Hard Collision — the same idea for a gateway, shut and open.

Ground AD — "AD" is area divider: a line splitting the terrain areas around the building. Blocks nothing; units cross it freely.

Pipe: … — 15 kinds of route: ladders, ropes, stairs, windows, doors, jumps, climbing over rubble. Draw the line where you want units to travel.

EFLines optional

EF is short for Entity Formation. Each line says "form units up here, facing that way, doing this" — firing over a low wall, defending a doorway, manning a crenellation.

Press New Line to get one with a direction pointer. Move the end points to place it and the pointer tip to turn it.

An EFLine must sit over a Platform. Units need a floor to stand on. Validate checks this for you.

Docking Lines optional

Where siege engines dock against the building — a siege tower dropping its ramp onto your wall, a siege ladder going up, a battering ram reaching the gate.

Same shape as an EFLine, with the same direction pointer, but it needs no Platform under it. Put them along the wall tops and at the gate.

Referenced Props optional

A marker that tells the game to place a prop that already exists — a torch, a barrel — instead of you modelling it again.

An Empty is enough. Set its Referenced Prop Name and place it; the game reads only the position and rotation.

Arrow Emitters optional

The points a fort tower shoots its arrows from — the defensive towers on your own walls, not an attacker's siege tower.

Press New Arrow Emitter for the right marker, then move and rotate it to aim it.

Height Map Mesh optional

A 3D model placed on a battle map in TEd as walkable terrain — a hillside, a ramp, a raised plateau that units march over.

It never becomes a game file. A height map mesh lives only in the .CS2. Nothing compiles it further.

So if you share one, ship the .CS2 and its raw_data table entries with it. Without them, any TEd map using it cannot find the terrain and comes up empty.

Destruction Animation optional

The debris that flies away when this level is destroyed. Each chunk is a normal mesh with a UV map and material, plus keyframes on its position and rotation.

Key them the ordinary Blender way — I in the viewport. A chunk with no keyframes just sits there.

Whole-building extras

These belong to the building itself, not to any one piece. Add them from the Add… menu with the Building folder selected.

Flag optional

Where the building's icon appears in the battle UI — the marker is that icon's position in 3D space, so put it somewhere the player can see, usually above the roof.

One per building. Press New Flag and move the marker.

Region Zones optional

Closed areas belonging to the whole building, drawn as cyclic curves (Alt+C in Edit Mode).

What the game does with them is not established. Real buildings carry them, and they import and export faithfully — so copy the arrangement from a building like yours rather than inventing one. Nothing breaks if you leave them out.

Gates & boiling oil

With a Display folder selected, the Add… menu offers four more. All of them live inside Display.

Gate Closed / Gate Open

The gate meshes in each position, one per LOD. Model the open version where the doors actually end up once swung.

Gate Animation

The moving door leaves. Keyframe each one, then set its Gate Animation Kind: opening, closing, or destroyed while shut or open.

Boiling Oil

The pouring mechanism defenders use on a gatehouse. Its collision goes in the Collision folder as Collision 3D Boiling Oil.

A complete gate needs three parts

A gate is not one setting — it is three things in three different folders, and all three carry a matching name:

Display gets Gate Closed and Gate Open meshes. Collision gets a Gate Closed and a Gate Ajar volume. Lines gets a Gate Closed and a Gate Ajar hard-collision loop.


Workflow

Units

Soldiers and the gear they carry.

A soldier is not one model. His body, his helmet, his sword and his shield are separate assets, and the game assembles them. That is what makes the same body reusable across a hundred units.

roman_body ← Unit Asset. One exported file. ├── body ← Unit Model, with its LOD meshes └── weapon_01 ← attachment point on a bone roman_gladius ← a second asset, on its own └── gladius

Unit Asset required

One exported file. Name it for what it is — that name is the filename.

Unit Model required

One named mesh inside the file, holding its LOD meshes. An asset can hold a few: a head asset carries the head in one model and the eyes and tongue in another.

Model Type required

Weighted Model — skinned to a skeleton, so it bends when the soldier moves. Bodies, armour, cloth.

Rigid Model — a solid item that rides on one bone without bending. Swords, shields, helmet crests.

Every model in one asset must be the same type. A file carries one kind or the other, never both. Split them into two assets.

Skinning a weighted model

  1. Get a skeleton into the scene — import one from the Assembly Kit, or make one in the Skeleton workflow.

  2. Press Bind To Skeleton. Every mesh in the asset gets the modifier it needs.

  3. Paint weights the normal Blender way, onto vertex groups named after the bones.

    Two rules: every vertex needs some weight, and at most two bones may pull on any one vertex. Extra influences are dropped.

  4. Watch it move. The clip picker sits right in the Unit panel — pick an animation and press Play without leaving the workflow.

Attachment Points

A named socket the game hangs something off — weapon_01, crest_centre. The sword asset does not know where the hand is; the socket on the body does.

Press New Attachment Point, name it, pick the bone it rides on, and move it to where the item should sit.

Which shader for which part

Weighted for armour, cloth and equipment. Weighted Skin for faces, hands and bare limbs — light scatters through it properly. Add Dirtmap for grime, Decal for insignia and war paint. A rigid weapon or shield uses Standard.


Workflow

Skeletons

The bones a soldier is built on. One skeleton serves every model weighted to it.

Most of the time you do not need this. Import one of the game's skeletons and weight your models to that — it already matches every animation the game ships.

  1. New Skeleton makes an empty Blender Armature in its own folder. Or press Import to bring one in.

  2. Add bones in Edit Mode, exactly as you would for any Blender rig.

  3. Leave Edit Mode to set each bone's options. Blender only exposes them outside Edit Mode — the panel tells you so.

Bone Type
What kind of bone this is: Root, Core, Face, Left/Right Hand, Floating (a bone with no skin on it, used to hang props from). Not In Bone Table means the game never indexes it — helper and marker nodes.
Sort Order
0 on the root bone, 1 on everything else. That is what every skeleton in the game does.
Bone Object
Export as a real bone with a length, rather than a bare marker point.
Reference / Cinematic
Whether other skeletons derive from this one, and whether it is a higher-detail skeleton for cinematics rather than for battle.

Export skeletons into raw_data/animations/skeletons/ — not a subfolder of it. BOB looks a skeleton up by name in that exact folder. The add-on warns you if you export anywhere else.


Workflow

Animation

Clips for a skeleton — a walk, a swing, an idle.

  1. New Animation Clip. Give it a name, a length in frames, and a rate.

  2. Pose the bones and key them with Blender's own I. Nothing special here — it is an ordinary Blender Action.

  3. Play it from the panel to check it.

  4. Validate, then Export Animation.

Clip picker
Swap between clips on the skeleton. X puts the skeleton back in its rest pose and keeps the clip; the bin deletes the clip for good.
Clip FPS
Frames per second. One Blender frame is one clip frame, so this is both what you watch and what gets compiled.
Skeleton
Which skeleton the clip is for. It has to exist in raw_data/animations/skeletons/ for the build to resolve it.

Not sure what rate to use? Every clip measured for this add-on runs at 20 fps — though those were building debris rather than soldier animation. If you have a game clip to compare against, match it.

Opening the game's own animations

Far easier than animating from scratch: bring in a clip the game already ships, watch how it moves, and edit from there.

  1. Import the skeleton first. A clip is just bone motion — without the matching skeleton there is nothing for it to move.

    Skeletons live in the Assembly Kit under raw_data/animations/skeletons/.

  2. Import the clip. Either the authored .CS2 from the Assembly Kit, or a compiled .anim pulled out of a game pack with RPFM.

    Both arrive as ordinary Blender Actions, and the workflow switches to Skeletal Animation by itself.

  3. Pick it in the clip menu and press Play. It is now yours to scrub, edit and re-export like any clip you authored.

Import the skeleton before the clip. The other way round, the add-on has nothing to attach the motion to and tells you so.


Workflow

Vegetation

Trees, shrubs and stones.

A tree is one exported file, and one collection holds the whole thing. Inside it, a Display collection holds one mesh per level of detail — the same shape a building's Display collection has.

oak_h ← Vegetation Model. One exported file. └── Display ← its meshes live here ├── oak_h_lod01 ← LOD 1. Bark and leaf materials on one mesh. ├── oak_h_lod02 ← LOD 2 └── oak_h_lod03 ← LOD 3

Vegetation Model required

One exported file, named for what it is. Press New Vegetation Model and you get the collection and its Display collection together.

Display required

Put your LOD meshes in here. One mesh per level — not one per material.

LOD Level required

Select a mesh and set it in the Vegetation panel. It decides how far away that mesh is still drawn: LOD 1 out to 100 m, LOD 2 to 200 m, LOD 3 to 400 m.

Skipping a level is allowed and means what it says. A shrub built as LOD 2 and LOD 3 is simply never drawn at the closest distance — which is what the game's own shrubs do.

Bark and leaves on one mesh

Give the mesh two material slots: Tree for bark, trunk and solid props like stones, and Tree Leaf for leaf cards and whole shrubs. Assign each to its own faces the ordinary Blender way. The build tool splits the mesh along that division for you.

A shrub that is all foliage needs only Tree Leaf. A stone or a dead trunk needs only Tree. The game sways both shaders in the wind.

Textures

Vegetation wants all five slots filled on every material — the same five raw textures the shader works with everywhere else in the add-on. The build tool refuses a mesh that leaves any of them empty, and Validate tells you first.

SlotWhat to put there
DiffuseThe bark or leaf art. Leaf cards carry their shape in its alpha.
NormalThe normal map.
GlossThe gloss map. See the naming note below — this one matters.
LevelRequired, but it does not reach the finished model. The game's own trees point it at the same flat swatch as Gloss.
SpecularThe specular colour map.

Almost every tree in the game points Gloss, Level and Specular at shared flat swatches (test_gloss, test_gray) rather than at art of its own — vegetation gloss is effectively a constant. Copying that is entirely normal.

Name your gloss texture <something>_gloss. The build tool renames it to <something>_gloss_map on the way in. A file already called ..._gloss_map therefore comes out as ..._gloss_gloss_map, which the game cannot find. Export warns you if it spots one.

Open a tree from the game and its Level slot arrives empty — the finished model does not carry one, so there is nothing to bring back. Re-exporting still works: the add-on feeds the Gloss map through for you. Fill Level properly when you are authoring your own.

Opening a tree from the game

Import a tree's .rigid_model_v2 and you get exactly the collections above — its LOD meshes, their materials and their textures. Re-exporting one rebuilds the same model.

Some of what is in a compiled tree never appears in the scene, because the build tool makes it fresh from your meshes every time: the flat far-distance stand-in, and the shape the fire spreads over when the tree burns. There is nothing in either to author, so bringing them in would only give you objects that ignore your edits.


When stuck

Common problems

Nearly everything that goes wrong is one of these.

"Select a … collection in the Outliner first"

The button acts on whatever is selected, and nothing suitable is. Click the folder it names in the Outliner and press it again.

The button I need is not there

Buttons appear only where they can work. Check the Workflow at the top of the sidebar is the right one, and that you have the right thing selected.

BOB refuses to build

It only builds files inside the Assembly Kit's raw_data folder. Export there. Also make sure BOB is not already open — it will not run twice.

"has no collision mesh"

Every destruct level needs at least one collision mesh. A plain box will do.

"is missing a UV map" / "has no material"

Visible meshes need both. Unwrap with U in Edit Mode, add a material, then press Make Total War Material.

"is scaled in Object Mode"

Only position and rotation are exported, so the scale would be silently lost. Apply it: Ctrl+A → Scale.

An imported model came in without its skeleton

The add-on could not find a matching skeleton, so its vertex groups are named bone_0, bone_1… Import the right skeleton, then re-import the model.

My mod does not show up in game

A Mod pack has to be switched on in the launcher's mod list. A Release pack is for TEd, not for the game.


When stuck

Word list

The jargon you will meet, in one place.

Assembly Kit
Total War's official modding tools, free on Steam.
BOB
The Assembly Kit tool that turns source files into game files. This add-on can drive it for you.
TEd
The Assembly Kit's battlefield editor, where you place buildings on a map.
.CS2
The source file this add-on writes. Not yet loadable by the game.
.pack
The bundle the game actually loads. Lives in the game's data folder.
Piece
One chunk of a building that is destroyed as a unit.
Destruct level
One damage state of a piece: intact, damaged, ruined.
LOD
Level of detail. LOD 1 is the close-up version; higher numbers are simpler.
Collision
The invisible solid shape units and shots hit.
Platform
A surface units are allowed to walk on.
EFLine
A marker saying units fight from here, facing this way.
Pipe
A route units travel along: a ladder, a rope, a staircase, a window.
Weighted
Skinned to a skeleton, so it bends when the bones move.
Rigid
Solid, riding on one bone without bending.
Attachment point
A named socket the game hangs a weapon, shield or crest from.
Bone table
The list of bones the game indexes, exported beside a skeleton.