Skip to content

Pack Authoring Kit

Everything a modder needs to start building packs for WM: Crossgate.

Start here: Where packs go covers the two valid drop locations (new structured format under resources/packages/ vs. legacy loose files under resources/characters/) and which one to pick.

Want a complete worked example? A complete pack, end to end walks through every file in a minimal one-girl pack.

A pack is a folder of files the game loads at startup: one or more girls, plus optional custom traits, items, and images. Packs live under resources/packages/ and each pack is its own subfolder.

You don’t need to ship all of it. A girls-only pack, an items-only pack, a traits-only pack, and anything in between are all valid.

  • where-packs-go.md: which folder to drop your pack into and how the loader picks them up.
  • AUTHORING_GUIDE.md: the walk-through. Read this first if you’re new.
  • reference/editor-setup.md: read this before anything else: VS Code and other IDE setup so .girlsx / .lua editing is not painful.
  • reference/: one-topic pages you’ll keep coming back to:
    • filename-cheatsheet.md: the one-page “what do I name this image” lookup
    • girlsx-schema.md: fields for Girls.girlsx
    • items-reference.md: item effect types with examples
    • traits-reference.md: trait schema and the core trait list
    • image-types.md: the 86 image types and how fallbacks work
    • lua-scripting.md: script lifecycle, triggers, and the wm.* API
    • when-conditions.md: full <When> condition language for job XML
    • jobs-reference.md: complete schema reference for job data directories
    • effects-reference.md: full effects.xml grammar including the <Mod> registry of synergy hooks
    • visible-synergies.md: discipline for visible synergies, the four partner-direction shapes, and a worked Bouncer example
    • gains.md: trait-gain rules — the progress-accumulator schema referenced from jobs-reference.md <GainTrait>
    • pricing.md: how the engine derives girl ask-prices and job wages — the formulas behind Cost= on items, AskPrice on girls, and wage.xml on jobs
  • snippets/: copy-paste skeletons for each pack file.
  • examples/: worked patterns (“I want a potion that does X”, “I have these images, how do I tag them”, common mistakes).
    • complete-pack-walkthrough.md: end-to-end walkthrough of a minimal one-girl pack: every file, every line, why each one is there
    • jobs-cookbook.md: three worked job recipes: pure-effect, performance+wage, parameterized multi-slot
    • unique-scenes-cookbook.md: personality-, status-, and named-girl-gated scenes via <When> and the <Girl name=> leaf (v1.15+)
  • tools/: a pointer to pack-validator.exe and how to run it.

The kit doesn’t duplicate content that already ships with the game. Seven sample packs sit under resources/packages/ covering every pattern:

Folder Shows
Sample_Full Everything in one pack (girls, traits, items, random templates)
Sample_GirlsOnly Girls and images only
Sample_ItemsOnly Items with no girls
Sample_TraitsOnly Traits with no girls
Sample_WithDeps A pack that requires another pack
Sample_Addon An addon extending another pack
Sample_Building A building definition pack

Read these alongside the kit. Every field you see in a snippet is used for real in one of them.

Note: the Arena ships as a built-in engine building (combat, crafting, and support jobs). It’s not a pack and doesn’t appear under resources/packages/; the Sample_Building pack remains the template for player-authored building packs.

This kit is the friendly version. If anything here turns out to be wrong in the engine, tell us and we’ll fix it.

The Rust authoring tool (Content Manager) includes a tag editor for per-girl images. Open a girl in Content Manager, then go to the Images tab to see every image with inferred tags pre-filled. You can override any tag and save; the tool writes a minimal images.xml covering only the entries that differ from inference. If every image matches inference, the tab shows a “no manifest needed” notice and Save is disabled.

If something in this kit was wrong, confusing, or missing, open an issue or tell us on the patron Discord. The kit improves when modders push back.