Skip to main content
Fabled

Module Creator

Build a shared scene encounter

Author a bounded Living Dungeon with cooperative runes, crystal beams, timed choices and elemental spell reactions.

Candidate availability

Scaffold and check the package

Run these commands from the candidate web repository with its supported Node.js version. The example project and archive are created beside that checkout. Validation and packing are offline checks, not proof of publication or multiplayer operation.

node packages/module-cli/bin/fabled.js module init ../my-dungeon \
  --template scene-encounter --publisher-id my-studio
node packages/module-cli/bin/fabled.js module validate ../my-dungeon
node packages/module-cli/bin/fabled.js module pack ../my-dungeon --output ../my-dungeon.zip
node packages/module-cli/bin/fabled.js module inspect ../my-dungeon.zip

Author inert JSON

Edit frames/encounter.json and its labels in locales/en.json. The frame kind is fabled.scene-encounter.v1, shown through campaign.blade. Its declared action binds vtt.encounter.campaign.v1 and requires vtt-encounters.play.campaign with an honest consent purpose. After editing assets, update their exact byte counts and SHA-256 digests in fabled.module.json before validating again.

  • Maximum definition: 32 KiB, depth 12, 1024 nodes. Board width and height are integers from 200 to 4000; all points stay inside it and radius regions must fit.
  • Use 1–8 crystals, 1–8 runes, 0–8 zones, 1–4 phases and 1–6 public hints. Radii are 20–200; portal countdown is 10–600 seconds and phases are 15–600 seconds.
  • IDs are globally unique, including the encounter ID. All label keys must exist. Each phase requires 1–12 distinct crystal/zone objectives, never more than the definition contains.
  • Directions are 0=north, 1=east, 2=south, 3=west. Use only the template's declared keys and fixed vocabularies: no scripts, URLs, GLSL, arbitrary shaders or direct state patches.

Rehearse the room

  • After review, acquire access, install the exact accepted release and enable it in the campaign. This template targets campaigns, not account-wide activation. Open an existing VTT scene and the encounter panel; each participant, including the owner, explicitly consents before interacting.
  • The exact campaign owner controls placement, start, pause/resume, hint, boss-phase advance and reset. Other consenting members with scene access can rotate crystals, choose the portal outcome and complete objectives. A promoted GM role alone does not grant owner controls.
  • Placement sets an origin and scale (0.25–4); starting does not move or create tokens. Position distinct visible participant-owned tokens on every rune at once. The server uses committed token centres, not optimistic drag positions. Several tokens may belong to one participant; hidden or unassigned NPC tokens do not count.
  • Rune power latches once occupied. For the supplied template, use dawn=0 (north), dusk=1 (east), midnight=2 (south) to direct the beam into the portal. The trace stops at the board edge or a loop and never exceeds 9 segments.
  • Choose stabilise for full boss-phase timers or unleash for 75% of each duration; portal timeout defaults to unleash. Complete different crystal/zone objectives per phase. Final completed objective IDs distinguish meeting the threshold from a missed timer.
  • Pause freezes progress and remaining time; resume rebases the server deadline. Reset clears only encounter progress, not map content. Reconnect reloads server state; stale revisions must refresh before retrying. At most 32 encounter instances on active module activations are supported per map.

Cast spells into the environment

Enable an approved spell-effects module such as Arcane Arsenal separately. Its existing campaign-owner permission and the owner's encounter consent are both required. Only authorized casts at committed target token centres affect zones; a client claim that a spell happened is not accepted.

Reviewed host presetsZonePersisted reaction
frost_breath, frost_novafloodfrozen
dragon_fire, meteor_strikevinesburned
lightning_arcconductorcharged

Spell visuals and eligible zone changes commit together; an encounter-write failure rolls back that cast. Paused encounters do not react, and replaying an old cast cannot reapply it after reset. Other presets remain visual-only for these zones. No automatic damage, combat turns, character-sheet edits or arbitrary scene changes are introduced.

Publish and verify the complete flow

Use the matching CLI's normal login and publisher-namespace flow, then submit the inspected archive for review. Submission is not approval or installation. After approval, acquire/install that exact release, activate it in a test campaign and verify owner/player consent, movement, reconnect, pause/reset and spell reactions on matching deployments. Disabled gates, Safe Mode or invalid signed authority must be recovered normally, never bypassed. This end-to-end live proof is still pending for this candidate.