AMod Kit / Definitions, Accelerated Accelerated · 16 modules

AshForge Mod Kit · Definitions · the whole lane, one course

Sixteen categories, one form,
and four that go nowhere.

The half of the Mod Kit that reaches the game without a single mesh. Sixteen categories share one editor, a typed reference that does not resolve fails the whole definition, and four of the categories you can author are never read by the exporter at all.

Application  AshForge Mod Kit Prerequisites  none Format  one course, 16 modules Time  ~95 min

What it is

Data-driven editors for a mod's content — factions, weapons, items, biomes, terrain and eleven more — all writing JSON into your mod's definitions/ folder.

Modules 1–4 are the workspace, 5–10 are typed references, 11–16 are what actually ships.

The two that cost you

An unresolved name fails the whole dec, not the field. And a recipe's skill defaults to a value the game does not have.

Modules 5 onward. The untouched default is the broken case, which is the opposite of the usual arrangement.

Why this is one course

This lane is 16 things worth knowing, not three escalating tiers. The old split implied the later material needed the earlier and it does not — read straight through, or jump to the module that matches your problem. The Mod Kit's other lanes are separate courses.

01

The shape of it

Sixteen categories, one machine

Read one file each

Left is the category list and the entries in the one you picked. Centre is that entry's form. Every category writes its own JSON file into the mod's definitions/ folder.

CategoryFileCategoryFile
Modabout.jsonResearchresearch.json
Factionsfactions.jsonRecipesrecipes.json
Weaponsweapons.jsonResourcesresources.json
Itemsitems.jsonStatus Effectsstatus_effects.json
Questsquests.jsonEventsevents.json
Vehiclesvehicles.jsonTerrainterrain.json
Equipmentequipment.jsonBiomesbiomes.json
Buildingsbuildings.jsonCharacterscharacters.json

Verified: sixteen categories, sixteen distinct files, no two sharing one. That matters more than it sounds, because each category is described by a small record — its file, how to count its entries, how to name one, how to create, duplicate, delete and load — and the list, selection and auto-save machinery around that record is shared.

So the workspace is not sixteen editors that happen to look alike. It is one editor being handed sixteen descriptions. Learn the interaction once and the only thing that changes between factions and biomes is which fields are on the form.

Key
The category you can see is the category being saved. Everything on this page about saving applies to one category at a time — the one you are looking at.
02

The exception

The one that is different

Know Mod / about.json

Fifteen categories are lists — many factions, many weapons. One is not.

Mod is a singleton: your mod has exactly one identity, so the category shows a form with no entry list beside it. There is nothing to create, duplicate or delete, and the workspace's whole left-hand column simply does not apply to it.

It is also the one category the workspace marks not editable here. Your mod's name, id and version are set where the mod is created rather than typed into this form — the workspace shows them so you can confirm which mod you are editing, not so you can rename it mid-session.

Using it
Treat the Mod category as a label: glance at it to confirm you are in the right mod before you start typing. That single habit prevents the mistake in the next lesson.
03

The one trap

Open the mod first

Do check the header

The workspace does not refuse to work when no mod is open. It works, and it saves somewhere else.

Header saysWhere your work goes
Editing mod: MyModInto the mod, at MyMod/definitions/. Correct.
No active mod — saving to user://definitions Into a folder outside any mod, which no exporter reads.

Verified against the running workspace: a freshly opened Definitions workspace has no active mod and reports exactly that string. Nothing is lost — the JSON is written and it is still there next time — but it is not in your mod, so it will not be exported, packaged or seen by any other tool in the suite.

This is the same shape of problem the other tools have with user:// destinations, and it has the same one-line fix: open the mod before you author anything. The header at the top of the workspace tells you which case you are in, always, in plain words.

If it already happened
Your files are in the app's user data under definitions/. Copy them into your mod's own definitions/ folder — the format is identical, because it is the same writer. Nothing needs converting.
04

Persistence

Saving, and what it saves

Know 0.6 s, one-shot

There is no Save button to hunt for. Editing a field starts a timer; when the timer fires, the active category is written.

BehaviourVerified
Delay0.6 seconds after the last edit.
Repeated typingOne-shot — each keystroke restarts the timer, so a burst costs one write.
Before any editThe timer is idle; nothing is pending.
An editStarts the timer. Does not write yet.
A flush with nothing pendingDoes nothing at all.
What a write coversThe active category only.

The debounce is the right design — without it, typing a description would rewrite the file on every character — but be clear about what it means: the form is not the file until the timer fires. If the application dies inside that 0.6-second window, the last edit was never written.

The workspace protects you at the obvious seams: switching category flushes anything pending first, so moving from Weapons to Items does not strand a half-second of typing. What it cannot protect you from is closing the lid mid-sentence.

In practice
Pause for a moment after your last edit before doing anything drastic. That is the whole discipline — there is no keystroke to learn, just a beat to wait.
05

The rule

What a typed reference costs

Know all or nothing

The game's definitions refer to each other by name, and it resolves those names when it loads. There is no fallback and no partial load.

The adapter states the consequence plainly in its own report: an unresolved name fails the whole dec. Not the field — the definition. A biome whose animal list contains one typo does not load with three of its four animals; it does not load.

This is why the adapter would rather remap or drop a reference it cannot vouch for, and write down that it did, than pass your text through and let the game reject the result. Every line in UNMAPPED.txt is a place it made that choice for you.

Key
Values are forgiving and references are not. When something you authored does not appear in the game at all — rather than appearing and behaving oddly — suspect a reference, not a number.
06

The trap

The default that doesn't exist

Do set the skill

A recipe has a required crafting skill. It is a reference to one of the game's skill definitions, and its default value is not one of them.

The field defaults to "Crafting", which reads like exactly the right answer and is the one word the game does not use. Its twelve skills include Mechanics, Cooking, Tailoring, Melee and Research — but nothing named Crafting.

So a recipe you created and never thought about carries a dangling reference from birth. The adapter does not ship it: it remaps to Mechanics so a colonist will actually pick up the bill, and records the substitution. But it is worth knowing that the untouched default is the broken case, which is the opposite of the usual arrangement.

Habit
On every recipe, set the skill deliberately — even to Mechanics, which is what you would have got anyway. A field you chose is a field you will notice when it is wrong.
07

Recipes

Three skills do the work

Know silent otherwise

Twelve skills exist. Three of them have a task worker that will pick up a crafting bill.

SkillSpeed statWill a colonist work the bill?
MechanicsCraftingSpeedYes
CookingCookingSpeedYes
TailoringTailoringSpeedYes
Any of the other nineNo. The bill is listed at the station and never crafted.

This is the nastiest failure on the page because it is not an error anywhere. The dec loads. The recipe appears. The workbench shows the bill. Nobody ever works it, because the three task workers each dispatch on one exact skill and no other — so a recipe attached to Construction or Medicine is a permanently pending job.

The adapter's remap exists precisely to stop this reaching a player, and it says so in the report: mapped to Mechanics so a colonist will actually work the bill.

08

Terrain

Atlases and costs

Do 3 and 11

Terrain is the most data-only category there is — a label, a fertility, a couple of texture paths — and it carries two typed references.

FieldWhat it must name
AtlasOne of three: Natural, Artificial, Roofing. Blank defaults to Natural.
Build categoryOne of the game's eleven.

And one behaviour that is not a reference at all but catches people the same way: IsBuildable is derived from the build costs alone. Terrain with build settings but no costs is treated as natural ground that nobody can build — so the category, work and icon you filled in are left out rather than emitted as a build that could never start.

Two more things the adapter will substitute silently unless you look: a terrain with no texture of its own draws with the base game's soil, and one with no edge mask meets the world on borrowed edges. Both load and render perfectly. Both look like ordinary dirt.

Watch for
"It loaded and it looks like nothing" is the terrain failure mode. It is not a broken reference — it is a placeholder that worked. The report lists every one.
09

Collisions

One namespace for every dec

Know across categories

The workspace keeps names unique within a category. The game's namespace is wider than that.

An item called Hammer and a weapon called Hammer are two obviously different things to you, and the bundle is right not to complain — it only refuses duplicates inside one category. But a weapon definition is a kind of item definition to the game, both reduce to the dec name Hammer, and the game ends up with two definitions answering to one name.

★ The other half of this is slugging. Names become dec names by being reduced to a safe form, so "Iron Bar" and "Iron-Bar" are two entries you can happily create in two rows of the same list — and one dec. The collision is created by the conversion, which is why the adapter checks for it by reading back what it wrote rather than by inspecting what you authored.

Rule of thumb
Keep display names distinct across the whole mod, not just within a category, and avoid pairs that differ only by punctuation or spacing. Neither the form nor the list will warn you — the export will.
10

Biomes

Biomes name everything

Do every key resolves

A biome is almost entirely references: which ground it uses, which plants and rocks grow on it, which animals live there, and in what proportions.

The probe biome exported for this page names three terrain, three plant, two rock and two animal definitions. Every one must already exist — in the game, or in your mod — and a single unresolved key fails the entire BiomeDec at load. A biome is therefore the category where a typo costs the most, because it is the category with the most names in it.

⚠ And one hard limit worth knowing before you plan around it: a mod cannot practically ship its own animal. A concrete agent needs a rigged model, a named animation tree and a per-bone collider skeleton — so the animals in your biome should be base-game names. The plants, rocks and terrain are yours to make; the wildlife is borrowed.

11

The map

The ledger

Read three fates

Every category you can author meets one of three fates.

FateCategories
Becomes its own Decs/ file Factions, Weapons, Items, Buildings, Characters, Research, Resources, Terrain, Biomes, Sounds
Folded into another Recipes → the crafting on items · Equipment → character loadouts
Never read Quests · Vehicles · Status Effects · Events

The export does not land in your mod. It is written under the application's own user data, at export/aoa/<ModId>/ — on the machine this page was written on that resolved to ~/.local/share/godot/app_userdata/AshForge/export/aoa/ExportProbe. That is where UNMAPPED.txt is too, so "read the report after every export" means going there and not into your mod folder.

The probe export written for this page produced eleven XML files — the ten categories above plus a Tags.xml the adapter derives rather than takes from you — alongside mod.json, an Assets/ folder and UNMAPPED.txt.

The Mod category is the sixteenth and does not appear in that table because it is not content: it becomes mod.json, the identity block the loader reads.

Key
A category producing no file is not necessarily a failure — two of them are folded in on purpose. The distinction that matters is folded versus never read, and only this page tells you which is which.
12

The gap

The four that go nowhere

Know plan around it

Quests, Vehicles, Status Effects and Events are authorable, saveable, previewable — and never consumed.

This is not an oversight in the adapter so much as a fact about the game: there is no counterpart among its definition types for a quest, a status effect or a scripted event. Those are behaviour, and behaviour arrives in a mod as compiled code, not as data. The suite reached the same conclusion independently when it triaged which tools could reach the game at all.

Vehicles sit slightly differently — there is nothing conceptually impossible about them — but the adapter has no mapping today, and a category with no mapping and no warning is indistinguishable from one that will never work. Treat all four the same way until told otherwise.

What this means for planning
If your mod's central idea is a questline, a status effect or a world event, the Mod Kit is the wrong half of the pipeline for it. Author the things those systems act on here — the items, factions and buildings — and expect the behaviour itself to need an assembly.
13

Indirection

Folded, not lost

Read two of them

Two categories produce no file of their own and still reach the game, because the game models them as part of something else.

CategoryWhere it ends upWhat you lose
RecipesThe crafting attached to the output item. Its description — the game builds a bill's label from the output item, and an item's recipe has no description field.
EquipmentAn index of character loadouts. Only equipment your mod actually emits can be tagged; anything else is a base-game reference.

Both are correct modelling rather than compromise. A recipe in this game is not a free-standing object — it is a property of the thing produced — so emitting a separate recipe definition would be inventing a concept the game does not have.

The practical consequence is small but real: time spent writing recipe descriptions is time wasted, and equipment that exists only in your head rather than in your Items list cannot be handed to a character.

14

Weapons

What a weapon loses

Know damage isn't yours

The weapon form has a Damage field and a firing rate. For a ranged weapon, neither reaches the game.

★★ A ranged weapon's damage lives in its ammunition's projectile, not on the weapon. The probe sidearm is chambered for the base game's handgun ammunition, and that is where its damage comes from — so the bundle's damage of 12 has, in the adapter's own words, nowhere to go.

Firing rate is the same story told differently: the game models a burst count and a cycle time, not a rate, so a single rate number cannot be translated into it without inventing one of the two.

This is worth internalising because the form does not hint at it. You can tune a ranged weapon's damage all afternoon in the Mod Kit and change nothing in the game. What you can change is which ammunition it is chambered for.

Rule
For ranged weapons, the ammunition is the balance lever. For melee, the weapon's own numbers are what matter. The form looks identical for both.
15

Characters

What a character loses

Know an archetype, not a body

A character definition becomes an archetype and a group. An archetype decides what a spawned human wears and carries — and nothing else.

You authoredWhat happens
Loadout, factionCarried. This is what an archetype is for.
Health, move speed Cannot be carried. Those belong to the human agent the game already ships, not to an archetype.
Party size Invented. A character definition has no field for it, so the adapter takes numbers from the two groups the game ships.
Anything spawning them Nothing does, yet. The game reaches a group through a world-event worker or a map spawn table.

That last row is the one to plan around. Your raiders exist, they are correctly equipped, they belong to a faction — and no code path brings them into a game. The game ships one event to copy, which is an assembly, not a definition. So a character in the Mod Kit is content waiting for behaviour, exactly like the four categories in lesson 02.

16

Shipping

What blocks a release

Do read the report

The export always succeeds. That is not the same as the mod being releasable.

The probe export ends with a line that is not a warning but a refusal: one shipped asset had no origin record and cannot be cleared for release. Signing will not accept a mod it cannot account for, so every asset needs a small origin file in the folder it was downloaded into. An export with unaccounted assets is a mod that will package and never sign.

Alongside that sit the placeholders — substitutions made so your definitions load and render at all. Items and buildings with no model of their own get the base game's wood mesh; research nodes and items with no icon get a stock one, and an item with no icon loads but never draws. ⚠ And one that is a limitation rather than a placeholder: a modded mesh cannot be textured yet, because the material is applied as an override and the loader answers a mod-owned material with a flat colour.

The habit this ladder is really teaching
Export, then read UNMAPPED.txt top to bottom. It is generated from the adapter's own tables, it names each definition and what it lost, and it is the only place the gap between what you authored and what ships is written down.

Course complete

What you now know

Check yourself

  • Sixteen categories, each writing its own JSON file into the mod's definitions/ folder, with no two sharing a file.
  • They share one list/selection/save machine — learn the workspace once and every category behaves the same.
  • Mod / about.json is the singleton: one identity, no entry list, and not editable here.
  • With no mod open the workspace still saves, to user://definitions, where nothing else in the suite will look. Open the mod first.
  • Saving is a 0.6-second one-shot debounce, not a button — and a write covers the active category only.
  • Switching category flushes what is pending, so the seams are safe.
  • A typed reference is a name the game resolves at load, and an unresolved one fails the whole dec — not the field.
  • A recipe's skill defaults to "Crafting", which the game does not have. The untouched default is the broken case.
  • Only Mechanics, Cooking and Tailoring have a task worker. Any other skill leaves the bill listed and never worked — with no error anywhere.
  • Terrain names one of three atlases and one of eleven build categories, and IsBuildable comes from the costs alone.
  • Missing terrain textures and edge masks are silently replaced with base-game ones — it loads, and it looks like dirt.
  • Dec names are one namespace across every category, and slugging can collide two names that looked different in the form.
  • A biome is mostly references; one bad key fails all of it. And animals must be base-game names.
  • Read UNMAPPED.txt after every export.
  • Ten categories become their own Decs/ file; the export also derives a Tags.xml, and Mod becomes mod.json.
  • Recipes fold into items and Equipment folds into character loadouts — correct modelling, not compromise. Recipe descriptions are discarded.
  • Quests, Vehicles, Status Effects and Events are never read. Those are behaviour, and behaviour ships as an assembly.
  • A ranged weapon's damage lives in its ammunition, and firing rate is a burst count plus a cycle time. Tuning those fields changes nothing.
  • A character becomes an archetype: loadout yes, health and move speed no, party size invented, and nothing spawns the group yet.
  • An asset with no origin record cannot be signed, and placeholders are substituted silently so things load.
  • The harness proves the adapter runs and writes well-formed XML. Conformance against the installed game is a separate check, and it skips where the game is absent.

That is the definitions lane. ⛔ Ten categories become their own Decs/ file, two fold into others, and Quests, Vehicles, Status Effects and Events are never read — those are behaviour, and behaviour ships as an assembly.