Modders' workshop · guide · 61 min read
Terry, the guide: Total War: Warhammer III's terrain editor, from your first battle map to campaign terrain
Terry is the 3D terrain editor in Total War: Warhammer III's Assembly Kit. This guide takes you through it step by step: opening it, reading its window, moving around, painting, making a first battle map and seeing it in game. It then gathers what is known about campaign map terrain, which the kit does not ship, learnt while porting a whole map into Warhammer III.
Reviewed on 25 September 2026, update 9.0. Checked against the Assembly Kit on patch 8.1, CA's wiki and tw-modding. The 9.0 changes that affect our project are included; the rest has not been rechecked. Corrected on 5 October 2026: facts proven since on the game's 9.0.2, and versions released since (CAIME 1.1.0, RPFM 5.1.1). Community corrections from 26 September 2026. When in doubt, check, and tell us.
What Terry is, and what it does in the public kit§
Terry (Terrain Metadata Editor) is Creative Assembly's (CA) 3D terrain editor, shipped with the Total War: Warhammer III Assembly Kit. It is where a terrain is made: relief, textures, vegetation, props, logical zones, lighting and sounds. It is not a separate program: it is a mode of Tweak, the kit's editor.
Terry does not write the files the game reads, but sources, in the kit's raw_data folder. BOB, the kit's builder, builds them into working_data; RPFM puts them into a pack. Terry starts BOB itself: File → Process with BOB.
- In the public kit, Terry makes battle tiles and battle maps, with their logic (deployment, playable area, capture points), and prefabs.
- The kit ships no campaign terrain: in the Warhammer III kit,
raw_data/only holdsterrain/ battles/andtiles/.battle/ - No command drives Terry: you can only open it; the rest happens in its window.
The journey of a battle map, from Terry to the game:
- Terry
You paint the tile (relief, textures, props, logical zones) and place it in a tile map.
.terry,.layer,.tif,tile_map.pnginraw_data - BOB
It builds the tile map, then the tile, into game files.
working_data/terrain/ … - RPFM
The pack: the built files, a
battles_tablesrow, a text, an image.my_map.pack - In game
The map appears in custom battle.
This guide follows that journey, then gathers what is known about campaign map terrain.
Terry's vocabulary§
A few words come up everywhere. Here is the meaning this guide gives them.
| Word | Meaning |
|---|---|
| Tile | a piece of terrain made in Terry: relief, textures, props, logic. A battle map is a tile placed in a tile map. |
| Tile map | the large terrain, assembled from tiles, around the battlefield; your tile has its place in it. On a campaign map, tile_map.png says which kind of tile goes on each hex: land, sea, coast, road. |
| Raster | an image in which each pixel carries a value: a height, a texture blend, a mask. One .tif file per saved raster (relief, texture blend…). |
| Vista | a ready-made tile map, reused as scenery around your tile; the Warhammer III kit ships none (see the FAQ). |
| Layer | a group of entities. A File Layer is a .layer file; a Logical Layer is just for tidying. |
| Prefab | a ready-to-place, reusable assembly of objects; battle or campaign. |
| Logical entity | what the game reads without showing it: deployment zones, playable area, AI hints, no-go zones, capture points. |
| Playable Area | in battle, the logical entity bounding where movement orders can be given; it also sets where units rout and reinforce from, and the minimap's edges (CA). CA's introduction page adds that its edges bound the camera. |
| Campaign playable area | the campaign_map_playable_areas row describing a campaign's map; its terrain_folder column names a battle terrain. |
| BOB | the kit's builder: it turns the sources in raw_data into game files, in working_data. Each execution is called a run here. See the BOB guide. |
raw_data / working_data | what the kit's tools read (your sources) / what they produce (the game files). |
| Catchment | an export variant of the same map (catchment_01…), picked by the catchment_name column of the battles table. On a campaign, catchment maps pick the battle map according to the location. |
Opening Terry§
Since Terry is a mode of Tweak, there are three ways in, all leading to the same window.
- From the kit's launcher
In Steam (Library → Tools), start the Warhammer III Assembly Kit, then pick Play Battle Map Editor: Terry.
According to the tw-modding wiki's Custom Campaign Settlement Skins page (Warhammer III part, ChaosRobie).
- From Tweak
Open
binaries/in the kit folder, then the Plugins → Terry menu.tweak.modder.x64.exe According to the same page.
- From the command line
From the kit's
binariesfolder:tweak.modder.x64.exe /.standalone TerrainMetadataEditor It is the command the launcher option runs; the only known one for Terry.
How to check. The window is titled TWeak - Terry. It takes a while to come up: about 25 seconds for us. On start-up, the Project Wizard appears.
The Project Wizard§
The Project Wizard appears on start-up (Show on startup box) and reopens with File → Project Wizard…: it offers recent projects and the New tab, which it opens on (tw-modding).
In Warhammer III it shows three icons. The right-hand one, a dotted box, creates a prefab, battle or campaign (tw-modding, Custom Campaign Settlement Skins). The kit only knows three project types: tile, tile_map and prefab, each on a battle or campaign tile database (file working_data/). So the other two icons are probably the tile and the tile map (see the “What we have not seen on screen” box).
Terry's window§
Terry's window is made of panels that can be detached and docked: the layout is adjustable, and yours may differ. The figure shows a common layout, with numbered markers: menus and toolbars at the top, scene hierarchy on the left, properties at the bottom and on the right, 3D view in the centre, BOB's messages at the bottom right.
- 1Menus and toolbarsFile, View, Tools; toolbars open from View → Toolbars.
- 2The Basic toolbartools 1 to 4 (select, move, rotate, scale), four painting modes, the Process with BOB globe (Ctrl+P), World or Editor View; then Entity Creation (Visual, Logical, Other).
- 3Scene Hierarchyentities, sorted into layers; a double-click makes a layer active (in red).
- 4Entity Propertiesthe selection's properties, editable for several objects at once.
- 5Project Errorswhatever would stop the map working in game.
- 6The viewportthe 3D scene: the tile grid, the playable area, the deployment zones (Alliance 0 = attacker, blue in Warhammer III's Terry; 1 = defender, dark red; the 2016 docs had it the other way round: trust the number).
- 7Tool Propertiesthe active tool's settings: brush, or a prefab picker.
- 8Map Properties and Settingsthe project's settings; Terry's own (autosave, BOB, camera).
- 9BOB's messagesbottom right, during a run: pop-ups, according to tw-modding.
| Panel | What it is for |
|---|---|
| Viewport | the 3D scene. World View shows a game-like preview; Editor View adds the debug lines. The G key switches between them. |
| Scene Hierarchy | the entities, sorted into layers: a File Layer per .layer file (at least one per project), Logical Layers for tidying. Double-clicking makes a layer active: it turns red, and new objects land in it. Unticking Export turns it into a reference layer, which is not exported. |
| Entity Properties | the selection's properties, editable for several objects at once. Bottom left. |
| Tool Properties | the active tool's settings: the brush, or the choice of a prefab, with a search field. |
| Map Properties | the project's settings. Bottom right. |
| Settings | Terry's own settings, not the map's: autosave, BOB options, overlays, camera, preview environment (Set As Default For Project Type button). |
| Project Errors | whatever would stop the map working in game. |
| Toolbars | through View → Toolbars, or the Tools menu. Basic: tools 1 to 4, the four painting modes, Show in Explorer, World / Editor View, and the export: the globe with an arrow, Process with BOB. Then Advanced, and Entity Creation (Visual, Logical, Other). |
A project's files§
<project>.terry: an XML file describing the project type, its rasters and its scene.- One
.tifper saved raster (<project>.height.<id>.tif,<project>.blend.<id>.tif…): the relief, the texture blend… The kit's example tile declares eight rasters but saves only two. - The
.layerfiles: one per File Layer, with its entities. <project>.terry.user: the preview settings.
In these XML files, a property carries the name it shows in Terry, in lower case, with spaces turned into underscores: Lighting File is written lighting_file. Handy for finding in a file what you set in the window.
Coordinates§
- The Y axis is altitude, pointing up.
- In battle, three extents: the Usable Area, a 2,048 m square centred on the battlefield, where physics and unit pathfinding apply; the tile map, drawn out to 8 km from the centre; the Playable Area (see “Terry's vocabulary”). An 8 × 8 tile is 2,048 m across (read off the kit's example tile): placed in the centre of the tile map, it covers exactly the Usable Area.
- On a campaign map, the axes are those of hex space: see campaign terrain, below.
Getting around: camera and shortcuts§
These shortcuts come from CA's documentation. The keyboard ones are in Terry's shortcut file (working_data/): a local file, which Terry rewrites and which keeps your own settings; we quote its default keys. The mouse ones come from CA's pages and the kit's status tooltips (working_data/). Ctrl+S and Ctrl+Shift+S are missing: the file lists “save as” with no key, and “save” not at all.
| Keys | Action |
|---|---|
| W A S D (Shift: faster) · Q / E | move · rotate |
| C / X · R · Z | up / down · top-down view, centred · zoom to the selection |
| wheel · middle button · Alt + middle · Shift + middle | zoom · pan · rotate · up or down |
| right-click or Esc | leave the current tool |
| 1 2 3 4 · Tab | select, move, rotate, scale · edit the entity |
| Shift + drag · Ctrl + drag | duplicate · rotate the selection |
| Ctrl+G / Ctrl+U | group / ungroup |
| Ctrl+A · Ctrl+D · Ctrl+I · Ctrl+H · F | select all · select none · invert the selection · hide · freeze the selection |
| [ / ] · O / P · N / M · , / . | brush size · opacity − / + · “other value” − / + · previous / next palette |
| hold Shift · Alt + click · Ctrl+Alt + mouse | quick smoothing · pick a value · brush size and rotation |
| 5 · Shift+5 · Alt+5 | align · raise · lower the terrain under the selection |
| H · G | coloured relief (topography) · world / editor view |
| Shift+C · L · Shift+T · Shift+2 | switch camera (probably perspective or orthographic) · local or world axes · clamp and orient to the terrain · place tool (meanings deduced from the file's command names: to be checked) |
| Ctrl+N · Ctrl+O · Ctrl+P | new · open · Process with BOB |
| Ctrl+S · Ctrl+Shift+S | save · save as (unconfirmed in Warhammer III) |
Two commands have no default key: CopyCamera and PasteCamera. They copy and paste the viewpoint through the clipboard, in the form camv3;eye x;y;z;target x;y;z: a way to compare two states of a terrain from the same angle. To give them one, the ConfigureKeyset command is probably the shortcut settings (its menu label is still to be checked); keys are stored in keyboard.xml.
The painting and creation modes§
Terry works in modes: pick a mode, a tool, then paint or place. The four painting modes are on the Basic toolbar; the creation modes on the Entity Creation toolbar and in the Tools menu.
Relief: Terrain Height Painting§
- Three panels. Maps: the rasters and their layers (Add Layer on right-click), which blend in order. Operations. Brushes: New Round creates a round brush, with Scale, Hardness, Size Jitter…
- Warhammer III operations: Add, Subtract, Absolute, Smooth, Erase.
- To see slopes steeper than 45° in red: Settings → View 3D → Overlay → Land No Gos.
Textures: Terrain Texture Painting§
- Each channel is one of the project's textures (
grass01,mud01…). - A low flow blends textures into one another.
- Operations: Normal, Smooth, Erase, Replace.
Forests: Terrain Forest Painting§
You don't place trees one by one: you paint the forest texture, and forest grows wherever that texture exceeds 60%.
Logical ground: Terrain Painting (Other)§
This mode paints logical ground types: what the game knows about the ground, regardless of the texture you see.
On a campaign map: other rasters, other operations§
A campaign project paints other rasters than a battle tile, and each has its own operations. Terry keeps them in working_data/ (read on 25.09.2026, kit 9.0); the neutral values are those of the Immortal Empires project (read on 21.09.2026).
| Raster | Operations | Good to know |
|---|---|---|
Height, HeightSea, HeightShroud | Add, Subtract, Absolute, Smooth, Erase | the same as a tile's relief |
BlendCampaign | Set, Clear | one texture number per pixel, not blended channels (for us, 0 to 143) |
ColorOverlay, ColorOverlaySea | Normal, Smooth, Erase | neutral in Immortal Empires: (115, 117, 115); deep water in ColorOverlaySea: (25, 32, 41); the ColorOverlay layer has an opacity of 0.5 there |
CampaignTree | Set, Clear, Replace | one tree colour per pixel; 255 = no tree |
CorruptionMask, SnowMask | Normal, Erase, Absolute | — |
PatchVisibilityMask | Set, Clear Visibility, Reset Visibility | 255 everywhere in Immortal Empires |
Placed vegetation (Vegetation) and the Procedural Exclusion Zone are battle-only (entity_configuration.xml): on a campaign map, trees come from the CampaignTree raster.
CampaignTree's palette is thecampaign_tree_idstable (one colour = one tree family); BOB builds the map's tree list from it. BOB only knows the ids indb.pack: for new trees, paint a family the database knows, then rename after BOB.- A
BlendCampaignnumber is a ground group: a new group only exists for the game if it is declared in a variation catalogue (warscape_asset_variation_db/); otherwise it takes the array's last texture (grey ground). For us, a catalogue of our own, under a name of our own, holding only our keys (the game reads every*.assetdb .assetdbin the folder); never a copy of CA'sterrain_textures_campaign.assetdb, which would overwrite another map mod's.
Objects: Entity Creation (Visual)§
- Entities: Prefab, Building, Prop, Decal, VFX, Polygon Mesh, Terrain Hole, Vegetation (Place or Paint), Procedural Exclusion Zone, and lights.
- While placing, [ and ] set the scale; Shift + mouse, the rotation.
- A lake is a
water_planeprop, Surface Oriented unticked, placed in a hollow of the relief. Water shallower than 0.5 m stays passable, with a penalty; deeper water is impassable (CA).
Logic: Entity Creation (Logical)§
- Entities: AI Hint, No-Go / Go Region, Deployment Zone, Deployment Zone Region, Playable Area, and, in Warhammer III, capture points.
- The kit keeps these entities for battle projects (
entity_configuration.xml). A campaign project has its own:CampaignSettlementandCameraConstraintVolume; lighting zones (EnvironmentVolume) are allowed, as in any tile map.
- ATile mapthe scenery all around, borrowed from a vista; drawn out to 8 km from the centre (CA).
- BYour 8 × 8 tilethe ground you fight on, which you paint, in the middle of the tile map.
- CUsable Areathe same square as the tile (B): an 8 × 8 tile is 2,048 m across (read off the kit's example tile); placed in the centre, it covers exactly the Usable Area, 2,048 m centred on the battlefield, the only place with physics and unit pathfinding (CA).
- DPlayable Areawhere move orders can be given; its edges set where units flee and reinforcements arrive, and the minimap's edges (CA, Creating Zones); CA's introduction page adds that they bound the camera.
- EDeployment ZonesAlliance 0 = attacker, 1 = defender; in Warhammer III's Terry, 0 is blue and 1 dark red (the 2016 docs had it the other way round): trust the number. Each zone has its additive region (+), created with it (tutorial); an optional subtractive region (−) cuts a piece out (CA).
- FCapture pointsfor a domination map: type domination 1, 2, 3; importance score; from 80 × 80 to 180 × 180 (tutorial).
- GReinforcement linesAI Hint attacker or defender teleport reinforcement line: a short two-point line; about 20 units long is enough (tutorial).
- HProcedural Exclusion Zonelaid between the playable area and the tile's edge, to make the map lighter: no procedural vegetation outside play, grass but also forest trees; repaint the forests you want by hand (tutorial).
- INo-Goa closed polygon marking an impassable area (CA).
- JDefensive Hillan AI Hint showing the AI a defensive position: a closed polygon; left open, a probable crash (CA).
Advanced tools: Advanced and Other§
A ruler to measure; Snap BBox and Snap Verts to align; the grid and snapping; a perspective or orthographic camera; Sound Marker to place sounds; Camera Bounds, which limits the editor's camera only, not the game's.
Several variants of one map§
A layer can carry an export type (catchment_01…). The catchment_name column of the battles table then picks the variant the game loads. That is how one terrain gives both a domination map and a classic battle.
Your first battle map, step by step§
This walkthrough follows the tw-modding wiki's Warhammer III tutorial, completed with CA's documentation. Two pieces of advice first. Save often: CA warns that Terry sometimes crashes. And set the autosave in Settings (on our install, it was set to 15 minutes). Terry keeps its autosaves in working_data/ and logs its errors in working_data/, in the kit folder.
An autosave is a numbered folder (001, 002…) holding a full copy of the project, its files renamed autosave.* (autosave.terry, its .tif and .layer files); settings.xml allows 100 of them and warns 15 seconds before each one (settings of our install). We have not yet restored a project from an autosave: before any attempt, copy its folder elsewhere, and keep your project's original.
A first try: the kit's example map§
Before making your own map, you can see the Terry → BOB journey on the example map the kit ships. What we checked in the files: its tile is raw_data/ (8x8, a single File Layer, textures grass01, grass02, mud01, mud02, forest01); its tile map is raw_data/, which already places the tile in its centre (no vista, no explicit_tiles to set); their built files ship in working_data, dated the day the kit was installed. It has no row in the battles table: it does not show up in game on its own.
- Keep a copy of the example map's two folders, outside the kit, before touching them.
- Open the tile (File → Open…, Ctrl+O), raise a hill with Terrain Height Painting, then save (File).
- Build: Process with BOB on the tile map, then on the tile.
- Check:
binaries/ends withbob.log Exit code: 0, and the tile's outputs inworking_data/carry today's date.terrain/ tiles/ battle/ test_tiles/ assembly_kit_example_tile/
This try applies the rules of the walkthrough below; we have not done it as such, nor taken it into the game. To see a map in game, you have to declare it as in the RPFM section, further down; the walkthrough makes a map of your own, on the same model.
Your map, step by step§
A battle map is two Terry projects. The tile is the ground where the fighting happens, which you paint in detail; the tile map is the scenery around it, drawn out to 8 km (CA), which you borrow from a vista. Only a 2,048 m square in the centre, the Usable Area, has physics and unit pathfinding (CA). The figure shows both projects one above the other, with their files, BOB's two runs and the battles_tables row that links it all to the game.
- Create the project. In the Project Wizard, on the New tab, choose a battle tile. The exact label of that choice is not confirmed in Warhammer III.
- Save it straight away (File → Save As…): the dialog asks for the map name, in lower case (a folder name, not the name shown in game); the tile set, a folder name of your own, in lower case (the tutorial, which makes a domination map, calls it
domination); the size, 8x8, to stay compatible with Warhammer II's tile maps; the climate (which drives, among other things, grass and trees). Leave the bottom box ticked, as the tutorial says (its label is not confirmed here). Check: going by the kit's example map, the tile is stored inraw_data/. The Show in Explorer button opens the folder: aterrain/ tiles/ battle/ <tile set>/ <map>/ .terry, at least one.layer, some.tiffiles. - Paint the relief, textures and forests, then place the props. To make the map lighter, the tutorial places a Procedural Exclusion Zone between the playable area and the tile's edge: no more grass outside play, but no more trees in that band's forests either; it repaints them by hand. Check in World View (G key), the game-like preview, and with H, the coloured relief.
- Place the logic, with Tools → Entity Creation (Logical). A Playable Area: 2x2 to 3x3, the tutorial advises, without giving the unit; without one, the game sets it between 800 and 1,300 m depending on the number of units, or fits it to the deployment zones, whichever is larger (CA). Two Deployment Zones, each with its additive Deployment Zone Region: Alliance ID 0 for the attacker, 1 for the defender, Zone ID at 0. In Warhammer III's Terry, alliance 0 shows in blue and 1 in dark red (CA's 2016 documentation had it the other way round): trust the number. For a domination map, capture points: type domination 1/2/3, importance score, from 80 × 80 to 180 × 180; the tutorial adds a second region to each deployment zone, of type guerilla exclusion additive, for vanguard deployment (the opposite alliance cannot deploy in it), and makes sure no player can vanguard-deploy onto a capture point. And reinforcement lines: an attacker or defender teleport reinforcement line AI Hint, a short two-point line; about 20 units long is enough, the tutorial says. Check: the zones show in the 3D view, and the Project Errors panel reports nothing.
- Create the tile map with Tools → Create battle for tile…: Terry creates its project in
raw_data/. Once is enough, the tutorial says; after that you work in the files it created. Check: the folder holds aterrain/ battles/ <map>/ .terry,tile_map.png,climate_map.pngandexplicit_tiles. - Place your tile in the tile map. In that folder, replace
tile_map.pngandclimate_map.pngwith those of an existing vista, a ready-made tile map that will serve as scenery. Then, inexplicit_tiles, change the first two numbers of the linex,y,tile path,0(see right after the list): x,y is your tile's top-left corner intile_map.png, in pixels. An 8 × 8 tile in the centre of a 64 × 64 tile map goes at 28,28; the kit's example map has its own in the same place. - Build the tile map: open it in Terry, run File → Process with BOB (Ctrl+P, or the globe on the Basic toolbar), then reload it. Check: your tile is in its place.
- Build the tile. Reopen it. In Map Properties, untick legacy vegetation generation (in the
.terry, theuse_legacy_procedural_vegetationproperty). Then Process with BOB. The tile map always comes before the tile; after that, when you touch up the tile, only the tile needs re-exporting. - Declare the map to the game with RPFM: see the next section.
- Test it in a custom battle, with the pack enabled in the launcher.
By default, the tutorial says, explicit_tiles holds something like this:
3,3,terrain/tiles/battle/lzd_hills_infield/chaqua_pit,0Change only the first two numbers. x,y are read in pixels of tile_map.png, x from the left, y from the top: open the image in your drawing program and point at the top-left corner of the vista's black square, that is 28,28 in a 64 × 64 tile map (tutorial). Check that the path is your tile's, from terrain/, with forward slashes; keep the final 0.
The kit's example map places its tile differently: its tile (raw_data/) declares the colour (0, 255, 127) in its .terry, and its tile map's tile_map.png, 64 × 64 pixels, carries a block of it from 28,28 to 35,35, without explicit_tiles.
Declaring it to the game with RPFM, and testing it§
BOB has produced the game files. What remains is to put them in a pack and tell the game the map exists: that is the job of a battles_tables row, a text and an image. RPFM does all of it; its basic moves are in the RPFM guide.
- Create a pack and add the
working_data/folder to it, as the tutorial does, then remove everything that is not yours: the kit's example map (terrain assembly_kit_example_tile_map,assembly_kit_example_tile,_tile_database/) and any game file you may have extracted there. Check in RPFM that only your folders remain: the tile map, the tile and itsTILES/ test_tiles_assembly_kit_example_tile.* _tile_database/entry.TILES/ <tile set>_<map>.* - Add a row to
battles_tables: right-click the pack → Create… → Create DB →battles_tables, a file named after you (neverdata__, which would replace the game's table); copy aclassicrow from the game, Paste as New Row, and change the key first (the RPFM guide). That way you keep every column; fill them in from the table below. - Add the text
battles_localised_name_<key>: it is the name the player will see. - Add the image at the path given by
screenshot_path: three times as wide as it is tall (tutorial). The space infrontend uiis intended. - Save the pack, then PackFile → Install in RPFM, which copies it into the game's
datafolder. A square image with the same name as the pack serves as its thumbnail (the tutorial plans it for the Workshop). Then enable the pack in the launcher. - Test with a custom battle. A domination map is tested in multiplayer, or with a community mod (see the tw-modding tutorial).
| battles_tables column | What it takes | Example |
|---|---|---|
key | your map's key: a key of your own, never that of a game map | myprefix_my_map |
type | classic or domination | classic |
specification | the tile map's folder, with the trailing slash, as in the tutorial; CA mostly writes terrain\: if you copy a CA row, keep its form | terrain/ |
screenshot_path | the map's image; it must be in the pack | ui/ |
team_size_1, team_size_2 | the size of the two sides | 1, 1 |
singleplayer, multiplayer | where the map is offered | 1, 1 |
battle_environment | the atmosphere: an .environment_group file from weather/ (CA leaves it empty in 808 of its 1,319 rows, on patch 9.0); not to be confused with battle_environment_audio, right next to it | weather/ |
catchment_name | the export variant to load (see the modes, above) | your layers' export type; with no export type, to be checked (258 CA rows leave it empty, on patch 9.0) |
Campaign map terrain: what we know§
For a campaign map, the kit ships nothing: no Terry project, no raw terrain data. That is true of the Warhammer III kit, and of the Warhammer I kit. Yet Terry can open a campaign project: to Terry it is a tile map (QTU::ProjectTileMap) on the campaign tile database, with terrain_setup="terrain/; ChaosRobie calls it a “campaign-type Terry project”. ChaosRobie, the author of Immortal Empires Expanded, proved it: he rebuilt the Immortal Empires map as a Terry project, and shared that project with the community. Here it is, dissected: it is the blueprint to follow.
| Item | What it is |
|---|---|
the raw_data/ folder | missing from the kits: this is what you create |
raw_data/ | BOB's recipe, in the parent folder: [Terrain] with PrefabRoot = art\ (ChaosRobie's project's value; battle for a battle), TileDatabase = terrain\, HeightPatch = true… |
<map>/ | a copy only: [Copy] copies the raw project into assembly_kit/ on every run, with [+AssetGraph] alongside. Recreate only the map folder and you lose the recipe. |
<map>.terry | the project, in XML (version 27): the map's settings, ten terrain layers, and **one File Layer per region** (an ECFileLayer entity named after the region's database key) |
<map>.terry.user | the preview settings: without it, Terry shows neither water nor trees |
tile_map.png | the tile map: land, sea, coasts, cliffs, roads, one colour per type |
ten .tif rasters | relief, sea floor, texture blend, colours, fog-of-war height, trees, corruption, snow, patch visibility (table below) |
one .layer per File Layer | placed objects: set dressing, mountains, water; one per region, plus any you add (our project has seven more: sea, mountains, lighting…). For mountains or cliffs placed as props, CA only uses materials 68, 86 or 97; ours, with the terrain tiles' material 49, are the named cause of an intermittent rendering crash (game on 9.0.2): an encouraging lead, not yet a proof |
lighting/ | the lighting files (.environment); the .terry names one as the global lighting |
Remember that the project is tied to the map's list of regions: one more region means one more File Layer, that is an ECFileLayer entity in the .terry and its <map>.<id>.layer file. The logical half (regions, ground, roads, towns) is made in CAIME (Campaign AI Map Editor), the Campaign Map Toolkit's editor: the CAIME guide.
The project's settings§
The .terry's first block, QTU::ProjectTileMap, carries these four settings among others, read in both projects (September 2026):
| Attribute | What it holds |
|---|---|
terrain_setup | the terrain folder: terrain/ |
world_width | the world's width: for us, the maxx of the campaign playable area (266.53); in Immortal Empires, 961.3. BOB's Campaign Trees action places no tree beyond z = world_width × 2/√3: on a map deeper than that, trees get squashed onto a single row; check the tree list after each run |
global_lighting | the global lighting, an .environment from the lighting/ folder; BOB writes environment_collection.xml from it and from the EnvironmentVolume entities (seen in September 2026, kit 8.1); with no EnvironmentVolume zone at all, BOB does not write that file |
water_plane_material | the game does not read it: a campaign's sea material comes from warscape_asset_variation_db/ (water_plane_material key of campaign_texture_terrain/), seen on 23.09.2026, patch 8.1 |
Raster sizes follow from the number of hexes§
Every resolution is proportional to the map's number of hexes, the CAIME one (read from ChaosRobie's project and applied to our map). The last column gives the example of our map, 400 × 440 hexes.
| Layers | Pixels per hex | Example, 400 × 440 hexes |
|---|---|---|
Height, HeightSea, BlendCampaign, ColorOverlay, ColorOverlaySea | 8 (plus 4 rows) | 3200 × 3524 |
HeightShroud | 4 (plus 2 rows) | 1600 × 1762 |
CampaignTree, CorruptionMask, SnowMask, and tile_map.png | 2 (plus 1 row) | 800 × 881 |
PatchVisibilityMask | one cell per patch of p tile-map pixels, p = ceiling(longest side / 128) | 114 × 125 |
The arithmetic: 400 × 8 = 3200 pixels wide, 440 × 8 + 4 = 3524 high. For the patches, the tile map is 800 × 881: p = ceiling(881 / 128) = 7, and you count whole patches (800 / 7 gives 114, 881 / 7 gives 125).
In the folder, each raster has its file <map>.<name>.<id>.tif, where the name is not the type's (read off both projects):
| Raster (type) | File | What it holds |
|---|---|---|
Height | .height. | the relief |
HeightSea | .sea_height. | the sea floor |
BlendCampaign | .blend. | the ground texture |
ColorOverlay, ColorOverlaySea | .color_overlay., .color_overlay_sea. | the colours, on land and at sea |
HeightShroud | .height_shroud. | the fog-of-war height |
CampaignTree | .tree. | the trees |
CorruptionMask, SnowMask | .corruption_mask., .snow_mask. | corruption, snow |
PatchVisibilityMask | .patch_visibility_mask. | the patches where ground is drawn |
Campaign terrain: conventions, BOB's order and limits§
Conventions§
They were established by reading ChaosRobie's project and trying them on our own (September 2026); CA does not document them.
- Rasters run north to south; heights are in world units, water at 0. Each compiled file has its own direction:
full_height_map.ddsruns south to north,lf_normal.ddsandcamera_heightmap.pngnorth to south; check it by correlating with the heights before making one. - x points east, z north, and the world is hex space. Rasters have square pixels, but campaign world space is deeper: Terry stretches them by 2/√3 along z. A world point (x, z) therefore maps to raster position z × √3/2 (in world units, not pixels). For us: 338.9 units of world depth for 293.5 units of raster.
- The sea is declared in
tile_map.png(seatile, colour 83, 141, 213), not by height. The sea floor (HeightSea) must stay below 0 wherever there is sea: if it rises above the water meshes, it hides them. There is no seabed tile under land, so its value there makes no difference (ChaosRobie, 26 September 2026). - The sea surface is made of large water planes placed as objects: Polygon Mesh entities (
ECPolygonMesh) with the map's water material, at height 0; Immortal Empires has 997 of them. Without them, no water on the sea, even with the floor below 0 (seen on 23.09.2026). Their pivot must be inside the map, or BOB drops them (“Failed to find valid quadtree node”). Draw each water plane whole, then cut it exactly: tiles drawn separately leave a waterless slit a quarter of a hex wide at the cuts. - The tile-map coast: export
tile_map.pngfrom CAIME (Tools → Export → Baseline Tilemap), without painting or retouching it. With CAIME 1.1.0 or later, the image comes out north-up; up to 1.0.1, it comes out upside down (south at the top): flip it vertically, and only that (check: its coast lies over the PNG export of the Ground Types layer). For Warhammer III, the export gives coastal landcliff_gen(253, 3, 1), beach transitionscliff_gen_ends(84, 230, 84), and beaches without roadssea_coast(255, 255, 0). Our old pixel-level retouching caused 148 “Failed to find tile” warnings; shape the visual shore in Terry and judge it in game. - Cliff ends: CAIME puts two
cliff_gen_endsaround every beach, whereas CA's Immortal Empires map has only 36 for 412 beaches, most beaches joining the cliff directly. An end can be laid two ways; bound to the beach, it leaves a tile hole on the cliff side (at CA, all 36 are bound to the cliff, no hole). “Exported without retouching” stays the general rule; on our Saison Expanded map, these ends are repainted ascliff_gen, a departure we own. No cliff or beach on row 0, the last row or the last column of the grid, and no one-hex isthmus where two cliffs cross: no coast tile exists there. - A river mouth is marked Beach AND River in CAIME: on export, every coastal land hex that is not a beach becomes a cliff, rivers included; without it, the river ends on a cliff and never reaches the sea.
- Roads: CAIME exports a solid 2 × 2 pixel
roadsblock (93, 66, 24) per road hex after sea and coastal cliffs take priority. A road on a beach takes priority over the beach.
The tile_map.png legend is in the campaign tile database, terrain/, a binary file. The colours we read in it (21.09.2026, patch 8.1):
| Tile type | Colour (R, G, B) |
|---|---|
generic (land) | 223, 180, 145 |
sea | 83, 141, 213 |
sea_coast · sea_rock_coast · sea_coast_sand | 255, 255, 0 · 220, 180, 0 · 255, 255, 170 |
roads · roads_light · roads_grey | 93, 66, 24 · 125, 100, 65 · 125, 120, 110 |
cliff_gen · cliff_gen_ends · cliff_custom | 253, 3, 1 · 84, 230, 84 · 254, 0, 0 |
river | 0, 0, 255 |
river_mesh · river_mesh_start · river_mesh_mouth · river_mesh_crossing | 253, 160, 37 · 255, 100, 10 · 255, 200, 22 · 147, 20, 20 |
A colour in the legend is not enough: only the families present in working_data/ have tiles, and the database has a single river tile.
- Rivers: Warhammer III has almost no river tiles left. Its rivers are meshes placed as objects, or sea channels lined with coast.
- Starting from CAIME: the CAIME guide has CAIME export
tile_map.png(Tools → Export → Baseline Tilemap) for the Terry project. In Warhammer III, ordinary rivers usegenericand river mouths (hexes marked Beach and River) usesea_coast: no river tile is requested (BaselineTilemapExporter.cs). Count the “Failed to find tile” warnings after the first run. - What the kit lacks (the campaign tile database,
terrain/, with the legend oftiles/ campaign/ _tile_database tile_map.png's colours; the lighting; the sea materials) is extracted from the game's packs with RPFM.
The order of runs§
The tw-modding tutorial on campaign maps gives this order, run by run in BOB's window; the details, which are the reference, are in the BOB guide. From Terry, a single Process with BOB selects all the terrain's actions at once (12 in a full successful run; 15 on 21.09.2026, when Generate Camera Height Map was requested, and it crashes BOB):
- The relief first: the next steps depend on it and read it from your pack. Put it in your pack (the tutorial says “your pack”; for us, BOB mounts the packs in
<game>\and indata assembly_kit\), then close and reopen BOB.working_data - The tile map: into the pack again, then close and reopen BOB.
- The global tile map (roads and cliffs).
global_props.bin, the placed objects: redo it whenever a region is added or removed (BOB then reads CAIME'smap.hex); up to ten minutes on a large map, the tutorial says.
From Terry, each Process with BOB starts a new BOB. After each run, read bob_warnings.log, in assembly_kit/, and count the “Failed to find tile”: each one is a hole in the terrain. Check bob.log too: its first line states how many actions were selected (N action(s) were selected for execution.), and each finished action has its (STATUS: Finished) line; how many to expect: see the limits, below. Aim for zero “Failed to find tile”, except on the last row of a campaign's battle terrain, outside the grid and harmless (1 for us on the Season, 3 on Expanded). Finally, look in working_data/: the built relief (full_height_map.dds), tile_list.bin and global_props.bin.
Known limits§
- Six actions out of twelve. A full successful run on a campaign terrain has 12 actions (our successful runs of September, kit 9.0, and October, kit 9.0.2; 15 if Generate Camera Height Map is requested, and that action crashes BOB). Durations we recorded (patch 8.1): on 21.09.2026, the first full build took about 26 minutes, about 25 of them compressing the relief; that same evening, under a minute, relief included according to our notes; on 22.09.2026, 53 to 64 seconds. For a map that the game's database (the one in CA's packs) does not know, BOB runs only 6 of them, without a message: the placed objects (
global_props.bin,global_props_sound.bin) and five masks, with no relief, tiles, textures, logic map or shroud (the objects alone take 11 to 24 seconds for us). According to our investigation of 21.09.2026 (kit 8.1), BOB looks up the terrain folder's name in thecampaign_map_playable_areastable of that database, the one indb.pack; adding the map to the kit's database or to a mod pack changes nothing. As a result, a project that modifies a CA map, in a folder named after that map (such aswh3_main_combi_map_1for Immortal Empires Expanded), should get all its actions (deduced from BOB's DLL, not tried); a new map does not. We know of no official way to lift this limit: make a control case, then ask the community. A control case is a known-good project copied under another name: if it also stops at 6 actions, your project is not the cause (ChaosRobie's project, copied under another name, stops there). Our new maps got their 12 actions through a tool of ours, outside the official routes, owned as such: BOB run under a debugger (the BOB guide). - “Generate Camera Height Map”: our finding (21.09.2026, kit 8.1) is that this action crashes BOB; the tutorial, for its part, writes that Terry should be able to produce this map but crashes when you try. The camera height map (
camera_heightmap.png) is approximated by the tutorial from the relief, scaled, setting atEXtblock of the PNG to the right value; the corruption mask is painted by hand or by script. - As long as no built terrain exists, Terry crashes when opening the project in 3D (seen on patch 8.1, not rechecked since): untick 3D View in the opening dialog (Open…).
- A campaign has two terrains: its own, and a battle terrain declared by its campaign playable area (
terrain_foldercolumn,terrain/). Without it, the game crashes at the first land battle, even between two AIs, so often at the very first end of turn. It is a battle tile map, which BOB builds as such; CA's also carries battle locations and catchment maps.battles/ <folder>/
The full story of a port, walls included: the porting tutorial.
Terry's pitfalls§
First, the working_data lock, in four cases:
- An open Terry locks
working_data, including the packs placed there. Before running BOB from its own window, or saving a pack intoworking_data, close Terry and the game; Process with BOB, started from Terry, is not affected. - Tweak and Terry closed during CAIME's exports: during CAIME's Map Data and Dynamic Resources exports, Tweak and Terry must be closed (Terry is a mode of Tweak). Don't rely on CAIME's warning: it looks for a program named
Tweak.AssemblyKit, whereas the Warhammer III kit's one is calledtweak.modder.x64.exe. - The preview is not the game: every culture variant shows at once; decals are white spheres; campaign tree-map forests only show if the matching preview option is on (
show_campaign_tree_map, in the Settings; off on our install), and only for tree families the kit's database knows; map-specific textures are ignored; water is rendered differently. All of that is judged in game. - Create battle for tile…: once per map is enough. What a second run would do to a folder you have edited is not documented: don't rerun it on a tile map you have changed.
- Without
.terry.user, a campaign preview has neither water nor trees: that small file, next to the.terry, holds the preview settings. - CA's documentation dates from the first Warhammer. Its Export Map has become Process with BOB, followed by RPFM; and the deployment zone colours have swapped (see step 4 of the walkthrough): trust the Alliance ID, never the colour.
- The Defensive Hill AI Hint must be a closed polygon, or a crash is likely.
- BOB rewrites its outputs on every run: a manual touch-up in
working_datadisappears on the next run. - Snow since 9.0: the Immortal Empires snow material (
combi_campaign_snow.xml.material) no longer cites a mask; the game binds the campaign's ownsnow_mask.ddsby itself. Don't copy a snow material for each map.
For an AI reading this page§
If you are an AI helping someone use Terry, here are the essentials, checked on a real project. These facts were gathered on the game's patch 8.1 (September 2026), then reviewed for update 9.0 (for us, the kit update rewrote the raw_data\ tables, some working_data files (including Terry/ and the Terry/ tile template) and BOB's DLLs; our projects in raw_data/ were untouched). Update 9.0.2 replaced BOB and Terry again and rewrote raw_data\; a terrain run was rechecked there on 04.10.2026 (12 actions, code 0). Any update can do it again: count your rows, then make a control run, and check these facts again.
- Ask the human before launching the game, driving the screen or publishing; delete nothing: tidy away, only the human deletes.
- Reading and documenting a file format, as RPFM and CAIME do: yes. Altering CA's programs or working around their limits: no, with one exception the workshop owns, stated plainly in the BOB guide: BOB run under a debugger for a new map's terrain. When a tool gets stuck, a control case, then the community (CAIME's Discord, tw-modding).
- Terry is a mode of Tweak. Assembly Kit Steam launcher: Battle Map Editor: Terry =
tweak.modder.x64.exe /, fromstandalone TerrainMetadataEditor binaries(windowTWeak - Terry, about 25 s); Exporter: BOB =bob.modder.x64.exe -no_console; Database Editor: Dave (Dave, which CA spells DaVE). No command drives Terry; no guessed options. - BOB opens from the Assembly Kit's Steam launcher (Exporter: BOB), from its executable
bob.modder.x64.exe, or from Terry (Process with BOB, Ctrl+P), which hands it the work. BOB has no command-line help; two official command lines are known, those of its launchers:-no_console(Steam launcher) and the one Terry passes to it (see the tools guide). - Public kit: battle tiles only. Tile:
raw_data/; tile map:terrain/ tiles/ battle/ <tile set>/ <map>/ raw_data/, created by Create battle for tile… (once is enough); BOB on the tile map, then on the tile.terrain/ battles/ <map>/ explicit_tiles: thex,y,path,0line already exists (tutorial): change its x,y, in pixels oftile_map.png, x from the left, y from the top (the tile's top-left corner); path fromterrain/, with forward slashes. 8 × 8 tile in the centre of a 64 × 64 tile map: 28,28, as in the kit's example map.- Alliance ID 0 = attacker, shown in blue in Warhammer III's Terry; 1 = defender, in dark red (CA's 2016 documentation says the opposite). Trust the number, never the colour.
battles_tables: copy a game row, Paste as New Row, change the key first; table file never nameddata__.specification=terrain/;battles/ <map>/ battle_environment= an.environment_groupfromweather/;battle/ screenshot_pathimage in 3:1 format; textbattles_localised_name_<key>.- Terry's logs:
working_data/; autosaves inTerry/ local/ terry_error_log.txt working_data/(every 15 minutes on our install, set inTerry/ local/ autosave/ settings.xml). - Campaign: project to create in
raw_data/; to Terry, a tile map (terrain/ campaigns/ <map>/ QTU::ProjectTileMap) on thecampaigntile database (.terryversion 27, one File Layer per region, named after its key; other File Layers are allowed). Therules.bobrecipe is in the parent folder,raw_data/; the one in the map folder only copies (terrain/ campaigns/ rules.bob [Copy]).world_width= for us themaxxof the campaign playable area; the game does not read the.terry'swater_plane_material(sea material:terrain_textures_campaign.assetdb). - Rasters: 8 px per hex (+ 4 rows),
HeightShroud4 (+ 2), trees, corruption, snow andtile_map.png2 (+ 1).PatchVisibilityMask: one cell per patch of p tile-map pixels, p = ceiling(longest side / 128), i.e. (width // p) × (height // p) cells. - Sea declared in
tile_map.png(sea, 83, 141, 213), floor below 0 at sea (irrelevant under land), surface as Polygon Mesh entities with the water material at 0, each plane drawn whole then cut. Exporttile_map.pngfrom CAIME without manual retouching (north-up since CAIME 1.1.0; up to 1.0.1, flip it vertically, and only that): coasts and transitions, roads as 2 × 2 blocks, rivers asgeneric, river mouths marked Beach and River. CAIME puts twocliff_gen_endsaround every beach (CA: 36 for 412 beaches); an end bound to the beach leaves a hole on the cliff side. No coast on row 0, the last row or the last column, nor a one-hex isthmus between two cliffs. Smooth coast: for a coast without coast tiles (generic), slope the bank over about one unit, with no one-pixel step or cliff on the shoreline (ChaosRobie and our project); with CAIME's coast tiles, relief continuous and smooth under the sea, shoreline in the tiles and the floor only, no channel dug into the relief (as CA). - Props: mountains and cliffs as props with CA's materials (68, 86 or 97); the tiles' material 49 is the named cause of our rendering crash (9.0.2, a lead, not a proof). Trees:
CampaignTreepalette =campaign_tree_ids,db.packids only; no tree beyond z =world_width× 2/√3. Ground: a new group is declared in a.assetdbcatalogue of your own. Direction:full_height_map.ddssouth to north,lf_normal.ddsandcamera_heightmap.pngnorth to south. - Order of campaign runs: the relief, put it in the pack (BOB mounts the packs in
dataandworking_data), close and reopen BOB; the tile map, into the pack, close and reopen BOB; the global tile map;global_props.bin, to redo whenever a region is added or removed (it reads themap.hex). The tutorial says restart: you close BOB and reopen it, you don't just “rerun” it. - A full successful run on a campaign terrain has 12 actions (15 if Generate Camera Height Map is requested, and it crashes BOB). For a map that the game's database (the one in CA's packs) does not know, BOB runs only 6, without a message; adding the map to the kit's database or to a mod pack changes nothing (seen on 21.09.2026: BOB looks up the terrain folder's name in
campaign_map_playable_areasofdb.pack; a CA map modified under its own name should get all its actions, not tried). No known official way: a control case, then the community; our route, outside the official ones, is BOB under a debugger (the BOB guide). Never promise 12 actions for a new map through the official routes. - Before running BOB from its own window, or saving a pack into
working_data, close Terry and the game; Tweak and Terry closed during CAIME's Map Data and Dynamic Resources exports. Readbinaries/andbob.log binaries/. Judge in game, not in the preview.bob_warnings.log - Details: BOB, RPFM, CAIME, the modder's tools, modding with an AI.
Sources and links§
- Creative Assembly wiki, pages written for the first Total War: WARHAMMER's kit (some labels have changed since): Terry introduction, Terry contents, interface, shortcuts, quick start, including zones, navigating the viewport, painting and saving, and Rules.bob.
- tw-modding wiki: Map Making for WH3 (WakaWaka300), Campaign Map Making for Warhammer III, Custom Campaign Settlement Skins (Warhammer III part, ChaosRobie), RPFM For Dummies, and, for Warhammer II, Land Battle Maps and Custom Vistas.
- The Warhammer III Assembly Kit's files, read only: Terry's settings, tools and shortcuts (
settings.xml,tool_state.xml,keyboard.xml,status_tooltips.xml,entity_configuration.xml), the kit'srules.bobfiles, the example map, thebattlestable (battles.xml, on patch 9.0). - The Immortal Empires Expanded campaign Terry project, shared by ChaosRobie, and our own project.
- Our other guides: BOB, RPFM, CAIME, the modder's tools, modding with an AI; and the modders' workshop.
Frequently asked questions
Can Terry edit a campaign map?
Yes: to Terry, a campaign project is a tile map on the campaign tile database. But the public kit ships none, nor any campaign terrain data: you have to rebuild one, on the model of the project ChaosRobie shared for Immortal Empires Expanded.
How do I open Terry?
From the Assembly Kit launcher in Steam (Play Battle Map Editor: Terry, which runs the command below), from Tweak (Plugins → Terry), or with the command tweak.modder.x64.exe /, run from the kit's binaries folder. Don't try any other option.
Can Terry be driven from the command line?
No: you can only open it. Everything else happens in its window, with keyboard and mouse; BOB is started from Terry with File → Process with BOB.
Alliance ID 0 or 1: who attacks?
0 is the attacker, 1 the defender. In Warhammer III's Terry, 0 shows in blue and 1 in dark red; CA's 2016 documentation had it the other way round. Trust the number, never the colour.
Why doesn't my map show up in custom battle?
Check that the pack is in the game's data folder and enabled in the launcher, that it holds the built files of both the tile map and the tile, that the specification in battles_tables points to the tile map's folder (terrain/ with the trailing slash, as in the tutorial; if you copied a CA row, keep its form), and that the battles_localised_name_<key> text and the image exist.
Why doesn't Terry show my map the way the game does?
Its preview is not the game: every culture variant at once, white spheres instead of decals, no map-specific textures, water rendered differently. Campaign tree-map forests only show if the show_campaign_tree_map option is on in the Settings, and only for tree families the kit's database knows. Fidelity is judged in game.
Why does BOB only build part of my new campaign map's terrain?
A full successful run on a campaign terrain has 12 actions. For a map that the game's database (the one in CA's packs) does not know, BOB runs only 6 of them, without a message: the placed objects and five masks. According to our investigation of 21.09.2026 (kit 8.1), BOB looks up the terrain folder's name in the campaign_map_playable_areas table of db.pack; adding the map to the kit's database or to a mod pack changes nothing. We know of no official way to lift this limit: make a control case, then ask the community. Our new maps got their 12 actions with BOB run under a debugger, a method of ours, outside the official routes (the BOB guide describes it).
Terry crashes when opening my campaign project: what can I do?
As long as no built terrain exists for that map, Terry crashes when opening it in 3D: untick 3D View in the opening dialog (Open…).
Must I close Terry before running BOB?
Before running BOB from its own window, or saving a pack into working_data, close Terry and the game: an open Terry locks working_data. Process with BOB, started from Terry, is not affected.
Terry crashed: where should I look?
In the kit's working_data/ folder: terry_error_log.txt, where Terry logs its errors, and the autosave folder, where it keeps its autosaves (every 15 minutes on our install; the delay is set in the Settings). Save often: CA warns that Terry sometimes crashes.
My tile doesn't show in the tile map: what should I check?
The explicit_tiles line: x,y in pixels of tile_map.png, x from the left, y from the top, at the top-left corner of the vista's black square; a path starting from terrain/, with forward slashes, to the tile's folder; the final 0. Then run Process with BOB on the tile map and reload it in Terry, as the tutorial says. Finally, read bob_warnings.log, in the kit's binaries folder.
The armies deploy in the wrong place: why?
Check the Alliance ID of both deployment zones: 0 for the attacker, 1 for the defender, whatever their colour. Each zone has its additive Deployment Zone Region, Zone ID at 0. Then redo the BOB run on the tile and put its files back into the pack.
Where can I find a vista?
The Warhammer III kit ships none. The tw-modding tutorial for Warhammer III provides some, taken from Warhammer II; the same wiki's Custom Vistas page, written for Warhammer II, explains how to make one from those in the Warhammer II kit (raw_data/). From a vista you take tile_map.png and climate_map.png, which you place in your tile map's folder.
This guide as plain text (Markdown), for AIs and offline reading
This is a community guide
A mistake, a pitfall you hit, a tip or a newer tool version: tell us, and every correction will be checked, then added with its source.