A Foundry VTT module for play-by-post games, mainly inspired by Powered by the Apocalypse, although it works with any system. It isn't tied to a specific ruleset.
The goal is simple: players post whenever they have time, and the GM keeps the game moving by collecting everyone's posts and advancing the story.
Episode. An episode represents a scene or location where the action
takes place. You can have several running at the same time, each with
its own participants and pace. Internally, every episode is stored as a
Foundry JournalEntry, with each post as a journal page, so everything
can be searched, exported and backed up using Foundry's own tools.
Episode modes:
| Mode | What it's for |
|---|---|
| Free | Anyone can post whenever they want |
| By rounds | Everyone posts once in any order. When everyone has written, the GM opens the next round |
| Strict turns | Turn order for combat or other situations where posting order matters |
For most play-by-post campaigns, By rounds is usually the best choice. It keeps the game moving without forcing everyone to wait for the slowest player before anyone else can write.
Voices. Posts are written as one of your characters, complete with their portrait. The GM can freely switch between NPCs, and posts marked as out of character don't count towards the current round, making it easy to coordinate without affecting gameplay.
Visibility. Episodes can be public, private (participants only) or hidden (GM only). Public episodes also allow secret posts that are only visible to selected recipients.
Drafts. Your text is saved automatically while you type, even if you can't publish it yet. Finish writing now and post it once the round is open.
Campaign Log. Round summaries and highlighted posts build a timeline of the campaign. Everything is searchable and can be exported as Markdown.
On smaller or touch-enabled devices the module switches to a full-screen layout with larger controls. This behaviour can be enabled, disabled or left on automatic from the module settings.
One recommendation for mobile users: play-by-post games usually don't need an active Foundry scene. Since Foundry only loads the canvas and scene assets when a scene is active, leaving every scene inactive reduces loading times and memory usage considerably. This module doesn't use the canvas, so you only need to activate a scene when you actually want to display a map.
If you also want a more touch-friendly Foundry interface, modules like Swipe VTT work well alongside PBTA Manager.
From Foundry: search for PBTA Manager in the module browser.
Using the manifest URL: open Add-on Modules → Install Module and paste:
https://github.com/imird-eidon/pbta-manager/releases/latest/download/module.json
Manual installation: download module.zip from the
releases page
and extract it into:
Data/modules/pbta-manager/
You'll also need to install and enable socketlib. After enabling both modules, leave the world and join it again so socketlib can finish registering its communication channel.
Open the episode list from the Journal sidebar, press
Ctrl+Shift+P, or call game.pbtaManager.openThreads().
The Campaign Log can be opened with Ctrl+Shift+K.
PBTA Manager includes English and Spanish translations. By default it uses the same language as Foundry, although you can override it in the module settings. Changing the language requires reloading the world.
Translations are maintained in scripts/i18n/*.js. The lang/*.json
files registered by Foundry are generated automatically with
node build-lang.mjs.
No GM online. Players can continue posting even when no GM is connected because they own their own episodes. If a GM is online, their client validates every action. Otherwise, validation is handled locally by the player's client. It's a practical compromise that keeps the game moving without requiring the GM to be connected all the time.
Status: v0.13.0
License: MIT. See PUBLISHING.md for release instructions.