A human- and AI-readable knowledgebase for modding Tom Clancy's Ghost Recon: Breakpoint (GRB) — the Ubisoft Anvil engine, its .forge archives, the Anvil Toolkit (ATK), and the asset-replacement pipeline the modding community uses.
Status: Living research project. First established 2026-06-30. Maintained primarily through the Tier 1 Imports modding community. Expect rapid expansion — see
meta/research-log.mdfor what is verified vs. inferred, and the current open questions.
GRB's official modding tools are effectively gone; the scene survives through a handful of skilled people who built ATK and a body of hard-won, mostly-undocumented tribal knowledge living in Discord threads. The goal here is to capture that knowledge in a structured form so that:
- Humans new to GRB modding have a real reference instead of scattered chat logs.
- AI coding agents (Claude Code and others) can load this repo as context and meaningfully assist with — or eventually automate — GRB modding tasks.
We do not have one single end goal. The near-term mission is breadth and accuracy: build a trustworthy map of how GRB's data works and how we change it, then expand into tooling, automation, and worked examples.
GRB stores nearly all of its game data inside large .forge archive files. A .forge is a Ubisoft Anvil engine container (engine codename "Scimitar" — it's literally the magic string at the top of every forge). Inside a forge are many .data entries; each .data is itself a small container holding one or more typed resources — meshes, textures, materials, build tables, skeletons, and so on.
ATK (the Anvil Toolkit) is a Windows .NET/WPF application that acts as a specialized file explorer for forges: it unpacks a .forge into a browsable folder of .data files, lets you view/replace textures and meshes, exports resources to standard formats (DDS, glTF/GLB, XML), re-imports edited versions, and repacks everything back into a forge the game will load.
A finished asset-replacement mod is, in practice, a small set of patch forges (*_patch_01.forge) that the game loads on top of its base forges, overriding specific entries by ID. Most cosmetic mods touch three forges together:
| Forge | Holds |
|---|---|
DataPC_patch_01.forge |
Item / inventory definitions (WI_…), BuildTables, entity data |
DataPC_extra_patch_01.forge |
Gameplay definitions (WG_…) |
DataPC_Resources_patch_01.forge |
The heavy resources: meshes (…_LOD0–3) and textures (…_Mip0–N) |
The authoring loop is: model/texture in Blender → export to glTF/DDS → import into the forge with ATK → repack the forge in place in your install. (You point ATK at your GRB install and repack its forges directly — there's no separate "drop a file in" step; a modded install just accumulates mods in its forges over time.) See docs/07-modding-workflow.md.
Start with docs/01-overview.md, then read the docs in order. Use reference/glossary.md when a term is unfamiliar. The examples/ folder walks through real mods end-to-end.
Read CLAUDE.md first — it is the orientation file written for you. It tells you the safety rules (e.g. never touch a forge without a backup), the mental model, and where to find authoritative facts. AGENTS.md points here too.
docs/ Conceptual documentation, numbered in reading order
reference/ Lookup tables: forge inventory, resource types, glossary, cloth section types
examples/ Worked case studies of real mods, plus the studied mod corpus
tools/ Scripts (e.g. cloth_inspect.py — inspect/diff MotionCloth .cloth resources)
meta/ Research provenance, verification status, sources, open questions
assets/ Diagrams and supporting images
| Doc | Topic |
|---|---|
docs/01-overview.md |
Anvil/Scimitar engine, GRB, the modding scene |
docs/02-forge-file-format.md |
The .forge archive format (binary layout, what's verified) |
docs/03-data-and-resources.md |
.data containers, typed resources, file IDs, nesting |
docs/04-anvil-toolkit.md |
ATK deep dive: tech stack, features, the file-explorer model |
docs/05-three-forge-model.md |
base vs. patch forges; the three-forge mod structure |
docs/06-game-load-and-reassembly.md |
How GRB merges many forges into one index at load |
docs/07-modding-workflow.md |
End-to-end: Blender → glTF/DDS → import → repack → install |
docs/08-naming-conventions.md |
Prefixes, LOD/Mip suffixes, the 77777 convention, ID formats |
docs/09-textures.md |
DDS, pixel formats, swizzling, mips, gamma |
docs/10-meshes-and-skeletons.md |
Vertex formats, LODs, the glTF pipeline, skeletons |
docs/11-cloth-and-physics.md |
The .cloth / MotionCloth format, reverse-engineered from ATK source — sections, tunable properties, how to mod cloth |
docs/12-localization-and-text.md |
Renaming items, weapons, and any in-game text via LocalizationPackage XML |
docs/13-blender-for-grb.md |
Blender from a standing start, for someone who has rigged a player model before |
docs/14-ai-and-npc-behaviour.md |
The gameplay DB layer — enemy perception, fighting behaviour, reinforcement waves, health; how to read and patch it |
Lookup tables of note: reference/forge-inventory.md · reference/resource-types.md · reference/resource-type-ids.md · reference/buildtable-xml.md · reference/cloth-section-types.md · reference/ai-db-records.md · reference/mod-anatomy.md · reference/install-edit-classes.md · reference/glossary.md
Techniques and sources: reference/hex-item-swaps.md (swap what an item does, in a hex editor) · reference/community-tutorials.md (index of absorbed Tier 1 Imports tutorials) · reference/crowdfund-history.md (how the community funds mods, and why two thirds never reach Nexus) · live panel
-
🧵 Cloth Inspector (
tools/) — a click-to-run tool (window, drag-and-drop, or a standalone.exe) that reads a GRB cloth (.Clothor.data) and tells you, in plain language, what it is: its cloth pieces (LODs), the mesh + LOD each drives, the sim-mesh size, and how the garment is attached (DIRECT vs BARYCENTRIC — i.e. how you can reskin it). Now backed by the exact MotionCloth reader (motioncloth.py). No coding needed. Seetools/README.md. -
🔎 Data Inspector (
tools/) — a click-to-run tool (window, drag-and-drop, or a standalone.exe) that lists the typed resources inside any GRB.data(name, type, ClassID, size), Oodle-decompressing via the game's DLL. No coding needed. Seetools/README.md. -
🗂️ Forge Inspector (
tools/) — a click-to-run tool (window, drag-and-drop, or a standalone.exe) that reads a whole.forgeby its index (fast, no unpacking) to show its resource-type histogram, or diff two forges by real file ID to find mod conflicts/overrides. No coding needed. Seetools/README.md. -
🧵 Rebind Check (
tools/rebind_check.py) — you have put a vanilla garment's weight painting onto a new mesh and you are about to repack. This answers, from files alone, the question a rebind actually fails on: does the new mesh's weight painting reach the bones Reflex3 actually drives? Plus influence count, weight coverage, UV sets and vertex colours. Catches a dead dangle-chain before you spend a game launch on it. Stdlib only — no Blender, no dependencies. -
🧠 DB Inspector (
tools/db_inspect.py) — walks the 61,426 gameplay records inside GRB'sDBContainerEntry(AI perception, fighting behaviour, reinforcement waves, NPC health, loot, economy). Lists them, extracts them by regex, and--diffs two records of the same fixed-size type to reveal the field layout without a schema — which matters because ATK ships noDB*classes at all. Seedocs/14-ai-and-npc-behaviour.md. -
⚙️ ATK Bridge (
tools/atk_bridge.py) — calls ATK's own format engine from Python, headlessly. ATK has no command line, butAnvilToolkit.dllis an ordinary .NET library and the app is only a shell over it, so the community's reference implementation can be used as a second opinion against this repo's parsers. Also resolves bone names via ATK's 820,037-name dictionary. Read-only by policy.
- Tier 1 Imports — the primary active GRB modding community.
- Anvil Toolkit Discord —
https://discord.gg/vsuGFEapdq(from ATK's README; tool support & updates).
This knowledgebase is assembled by inspecting a real GRB install, the ATK distribution, and a large corpus of community mods on one researcher's machine. Wherever a claim is observed and verified, we say so. Wherever it is inferred from naming, structure, or general Anvil-engine knowledge, we flag it as such. If you can confirm or correct something, update meta/research-log.md and the relevant doc. Treat unverified claims as hypotheses, not gospel.