Make a campaign plugin
A campaign plugin (a world pack) renames the rules into your setting: its peoples, callings, backgrounds, spells, gear and monsters, plus its factions, places, the characters who live there, hooks, glossary and the brief that tells the narrator how the world sounds. It never changes a rule. Characters keep the ordinary names underneath, so a character made in your world still works anywhere.
A pack is one .json file. There are three ways to make one, and they mix: build it in the workshop's Plugin tool, fill it from a world you built in WorldForge, or write it by hand.
In the workshop's Plugin tool
- Open Workshop on the home screen, then a workshop (or make one), then the Plugin card.
- Guided setup opens the first time and asks one question at a time: what the world is called, whose world it is (what it is inspired by and who owns that), what kind of world it is (the base genre and theme), how the narrator should sound, and whether to fill it from the workshop. Rerun it from the tool's header whenever you like.
- People, Magic & gear and Bestiary: pick the real race, class, background, spell, item, feature or monster from the catalogue, then type your world's name for it and a line about it. You never type an id; the challenge rating and creature type come with the monster.
- Setting: factions, places, the world's own characters, hooks, a glossary and name seeds for people and places. Characters are its rulers, villains, mentors and rivals, each with a line about who they are: the narrator casts them by those names instead of inventing stand-ins, and when it brings one into the story they take the picture you give them. The seeds show up as suggestions in the character builder.
- Pictures: upload a cover and a picture for any race, class, background, monster, place, faction or character. Each is resized in your browser to fit its slot, so any image works. Every slot is optional; an empty one shows the default plate.
- Publish lists anything missing or out of bounds. Fix it, then Download the pack to get
<id>.json, or Install on this server if you are its administrator.
The draft saves as you go, is copied by Duplicate, and travels inside the workshop bundle, so sharing a workshop shares the half-built pack too. Start from something on the Publish tab reads an existing pack file, or a world already installed on the server, into the draft to keep editing.
That is also how to update a plugin that is already installed: start from it on the Publish tab and it comes in with its pictures and its id, so after your changes Install on this server updates that world in place (the Publish tab says which world it will replace). Raise its version first, so tables see the new pictures.
Everything here works the same in the desktop and Android apps.
From a world you built in WorldForge
WorldForge entries are the workshop's own records: a Character is a cast member, a Location is a place, a Faction is lore filed under factions, and artifacts, deities, cultures and other entries are lore too. Build the world there first (with Forge and Draft if your server has the AI for them), then open the Plugin tool and press Pull from this workshop, or say yes to the last question of Guided setup.
| In the workshop | Becomes in the pack |
|---|---|
| Factions (WorldForge Faction entries) | Factions, with each one's description |
| Places (WorldForge Location entries, the Region tool) | Places, and place name seeds |
| Other lore (artifacts, deities, cultures, history) | Glossary lines |
| Cast (WorldForge Character entries) | Characters, each with their line, and people name seeds |
| Storyboard hook cards | Hooks |
A pull adds and never overwrites, so whatever you typed in the Plugin tool survives a second pull. Long entries are clipped to a pack's line lengths; read the Setting tab before you publish.
Two things never come over, because a pack only renames what the rules already have. The renames themselves (your world's word for an elf, a wizard or fireball) are yours to write in People, Magic & gear and Bestiary. And a monster built from scratch in the Bestiary tool stays behind: in a pack, a monster is a new name and picture over an existing stat block, so pick the closest SRD creature in the Plugin tool's Bestiary and name it.
By hand
A pack is plain JSON, and the whole format, every field and its limits, is documented in the repository's worlds.md. Running a server from source, node scripts/validate-world-packs.mjs <folder> checks a folder of packs before you share them. A hand-written pack also opens in the Plugin tool through Start from something, so you can switch between the two. One part is by hand only: a pack can carry its world's own calendar (its months, weekdays, moons and festivals), which a campaign made on it starts with; the Plugin tool keeps a calendar it reads in but has no editor for one.
Rules every pack follows
- Rename, never change. Anything mechanical, a new spell or a new species, is a homebrew entry in the workshop, not a pack.
- Write it in your own words. Do not paste text, art or logos from a published book, a wiki or another fan conversion.
- Name the rights holder if the world is built on somebody else's setting (the "who owns that" question in Guided setup). The pack then carries a clear "unofficial, not affiliated with" notice everywhere it appears.
Install and share it
On any server, an administrator installs a pack from Admin, Campaign plugins, Install from a file, or from the Publish tab in one press. Once installed, it is offered when a campaign is created. To update a pack, raise its version and install it again; campaigns already using it pick up the new build on their next turn.
To share a pack, send the .json file. An operator who wants a list of packs to browse can host a registry, a JSON index of packs on any https host, and set its address under Admin, Campaign plugins, Registry. None is built in. See Content pack and world packs.