LoreForge

Creative prompts

Three tools against the blank page: a questionnaire to ground your world, inspiration tables to draw from, and templates for AI assistants that output packs you can import directly into the studio.

1. The creator's questionnaire

Answer each question in one or two sentences — in writing, really. Ten minutes later you'll have the skeleton of a world that stands up:

  1. What is the central place, in one image? (a crypt under a village, a harbor in the rain, a forest that sings…)
  2. What just changed that worries everyone?
  3. Who is the antagonist — and what do they want that's understandable, almost legitimate?
  4. What happens if nobody acts for ten days?
  5. What secret can the player discover that reframes everything?
  6. What three places will the player cross?
  7. Who helps the player, and what does that help hide?
  8. What item is worth hunting for, and what door does it open (literally or not)?
  9. What does the good ending look like? And the bitter one?
  10. Which scene do you want to write first? Start with that one.

2. Inspiration tables

Roll a d12 — or pick whatever itches. Combine a hook, an antagonist and a place: that's a scenario.

Hooks (d12)

1The bells have been ringing on their own for three nights.7A child comes back from the well speaking a dead language.
2The caravan arrived — without its merchants.8The lord pays double for no questions asked.
3The graveyard's dead were turned face-down.9The river has flowed backwards since the eclipse.
4A treasure map, sewn into the lining of a stolen coat.10Every night, one more house is empty by morning.
5The lighthouse went dark; ships keep arriving anyway.11An old rival leaves you everything — on one condition.
6Snow fell in midsummer, and it isn't melting.12The local hero came home. It isn't him.

Antagonists (d12)

1A priest who's right about the danger, wrong about the cure.7An ancient creature honoring a very old contract.
2A smuggler protecting her village through crime.8A scholar who'll do anything to verify his theory.
3The victim's twin, convinced he's the survivor.9A starving garrison that "requisitions".
4A spirit of the place defending its territory — the people are the territory.10A child-king ill-advised by a voice in his seal.
5The gravediggers' guild, who know what must stay buried.11A former hero who wants to finish "his" war.
6A witch who buys up debts — and memories.12The whole village, bound by an oath nobody dares break.

Places (d12)

1Brownleaf, Dawnmount, Wolfrock7The Ford of the Seven Sisters
2The Crypt of the Three Oaths8The Black Salterns
3The Weeping Mill9The Drowned Library
4Mistport and its silent fish market10The Hanged Men's Orchard
5The Tower of the Extinguished Watcher11Candlevale, where people only sleep at noon
6The Last Detour Inn12The Ashen March

3. AI templates → importable pack

Paste these templates into an AI assistant (Claude, ChatGPT…). The assistant outputs a JSON file in LoreForge's exchange format, which you import as-is:

  1. Copy a template below and replace the bracketed placeholders [THEME], [TONE]
  2. Paste it into your AI assistant and save its answer as a .json file (plain text).
  3. In the studio, Import (JSON) to create a world — or, from a world's Overview, "Import a pack" to merge a bestiary into it.
The import checks everything before writing: if the assistant made mistakes, nothing is imported and every error is listed — paste those errors back to the assistant and ask it to fix them. And always proofread generated content: the AI proposes, you're the DM.

Template A — a complete world

You are a narrative RPG designer. Write a complete branching scenario on the
following theme: [THEME], with a [TONE] tone. Content language: English.

Answer ONLY with a valid JSON object (no surrounding text, no code fences),
in the following "loreforge-pack" format:

{"format":"loreforge-pack","version":1,"kind":"world",
 "meta":{"name":"…","tagline":"…","description":"…","language":"en"},
 "content":{"races":[…],"classes":[…],"items":[…],"monsters":[…],
            "quests":[…],"lore":[…],"scenes":[…],"encounters":[…],
            "start_scene":1}}

Format rules:
- Every element has an integer "id" unique WITHIN its collection (1, 2, 3…).
  Every reference (item_id, monster_id, target_scene_id…) points to an id
  defined in this same file.
- Do NOT include a "stats" collection: only use the codes str, dex, con, int,
  wis, cha (default value 10, bounds 1 to 20).
- races: {"id","name","description","stat_modifiers":{"dex":2,"con":-1}}.
- classes: {"id","name","description","base_hp","hp_per_level","base_defense",
  "attack_stat":"str","abilities":[{"name","description",
  "effect":{"damage":"2d6","uses":3}}]} — dice as NdM or NdM+K;
  "heal" may replace "damage".
- items: {"id","name","type":"weapon|armor|consumable|quest|misc",
  "description","effects":{"damage":"1d8"} or {"defense":2} or {"heal":"2d4"}}.
- monsters: {"id","name","description","level","max_hp","defense",
  "attack_bonus","damage_dice":"1d6","xp_reward",
  "loot":[{"item_id":1,"chance":30}]}.
- quests: {"id","name","description","reward_xp",
  "reward_items":[{"item_id":1,"qty":1}]}.
- lore: {"id","type":"history|city|region|faction|npc|deity|note","title",
  "body","parent_id":null,"sort_order":0}.
- scenes: {"id","title","body","type":"narrative|combat|ending",
  "encounter_id":null,"pos_x","pos_y","choices":[…]}. Lay scenes out on a
  left-to-right grid (pos_x in steps of 260, pos_y in steps of 160).
- choices: {"label","target_scene_id","fail_target_scene_id":null,
  "outcome_text":null,"fail_text":null,"conditions":null,"effects":null}.
- conditions: {"all":[ {"stat":"str","gte":12} | {"has_item":1} |
  {"quest":1,"state":"active|done|failed"} | {"flag":"name","is":true} |
  {"class_in":[1]} | {"roll":{"stat":"dex","dc":12}} ],
  "display":"hide|show_disabled"}. A "roll" requires fail_target_scene_id and
  fail_text on the choice.
- effects: {"hp":-2,"xp":10,"gold":5,"heal_full":true,"set_flag":{"name":true},
  "add_item":[{"item_id":1,"qty":1}],"remove_item":[{"item_id":1,"qty":1}],
  "quest":{"1":"active"}}.
- encounters: {"id","name","monsters":[{"monster_id":1,"count":2}],
  "victory_scene_id":REQUIRED,"defeat_scene_id":null,"flee_scene_id":null}.
  Every scene of type "combat" must reference an encounter_id.

Scenario requirements:
- [NUMBER OF SCENES] scenes (12 if unspecified), including 2 contrasting
  endings and 1 to 3 fights of rising difficulty.
- Branches that CONVERGE (several choices aiming at the same scene).
- At least 2 dice rolls with a narrated failure path (fail_text).
- At least 1 key item required by a has_item condition, planted earlier.
- Flags set then read back (set_flag → {"flag":…}).
- 1 or 2 quests activated then completed through effects.
- 3 races, 3 classes with distinct styles, a bestiary consistent with the theme.
- start_scene = the id of the opening scene.
- Scene texts: 2 to 5 evocative sentences, never deciding in the player's
  place.

Template B — a bestiary to merge

You are the head bestiary-keeper of a narrative RPG. Create a bestiary on the
theme: [THEME] ([TONE] tone), in English.

Answer ONLY with a valid JSON object (no surrounding text, no code fences):

{"format":"loreforge-pack","version":1,"kind":"content",
 "meta":{"name":"…","tagline":"…","language":"en"},
 "content":{"items":[…],"monsters":[…]}}

Rules:
- Integer "id" unique within each collection; monsters[].loot references items
  FROM THIS FILE via item_id.
- items: {"id","name","type":"weapon|armor|consumable|quest|misc",
  "description","effects":{"damage":"1d8"} or {"defense":2} or {"heal":"2d4"}}.
- monsters: {"id","name","description","level","max_hp","defense",
  "attack_bonus","damage_dice":"NdM or NdM+K","xp_reward",
  "stats":{"str":12,"dex":10},"abilities":[{"name","description",
  "effect":{"damage":"2d6","uses":2}}],"loot":[{"item_id":1,"chance":30}]}.
  Allowed stat codes: str, dex, con, int, wis, cha.

Requirements:
- 8 monsters from level 1 to level 5: small packs, scouts, brutes, and one
  memorable "boss" with a signature ability.
- 4 to 6 related items (loot, one consumable, a thematic weapon).
- Indicative balance: HP ≈ 6 to 8 per level, defense 10 to 14,
  attack bonus ≈ level + 1, XP ≈ 10 to 25 per level.
- Descriptions of 1 to 2 sentences, precise and evocative.

Unsure about the format? The DM guide, packs section, explains export, import and merging.