Shrine of Karguk: The Quiet Road
Shrine of Karguk: The Quiet Road is a small demonstration module built for Foundry Virtual Tabletop using the Pathfinder Second Edition system. The project was designed as a compact encounter that combines exploration, environmental storytelling, scripted interaction, and scene-based narrative delivery.
The encounter centers on the ruined shrine of Karguk the Quiet Road, a legendary half-orc wanderer said to have protected travelers, refugees, and outcasts during the fall of the old kingdoms. Players approach a ruined forest shrine, encounter a wary ratfolk seeker named Talan Rook, solve a ritual altar puzzle, uncover a hidden inner sanctum, and awaken a supernatural guardian tied to Karguk’s legacy.
Project Goals
This module was built to demonstrate how printed tabletop adventure content can be translated into an interactive VTT experience. The project focused on scene readability, encounter flow, environmental storytelling, journal-driven narration, and simple but effective Foundry API scripting.
- Build a readable encounter scene with an exterior approach and hidden interior chamber
- Use journal entries to deliver boxed text and environmental prompts
- Script token reveals and hidden shrine interactions using the Foundry API
- Create a short encounter that feels like a playable mini-module rather than a static map
Full Encounter Layout
Full scene overview showing the forest approach, ruined shrine structure, outer altar area, and inner chamber layout.
Forest Approach and Encounter Setup
The encounter begins in a forest glade surrounding a ruined stone structure. This opening area was designed to establish atmosphere, guide player movement toward the shrine, and create room for the initial social beat with Talan Rook before the party descends into the hidden shrine.
Boxed text journal entry used to introduce the forest ruin and establish the legend of Karguk the Quiet Road.
Forest approach scene before the encounter begins, showing the ruined clearing and approach toward the shrine.
The forest approach was built to support exploration and gradual discovery before the inner shrine is revealed.
Scripted reveal of Talan Rook, a ratfolk seeker searching the ruins for Karguk’s secrets.
Traveler’s Altar Puzzle
The shrine entrance is framed around a small ritual puzzle. Players encounter a traveler’s altar with three bowls representing the road walked, the light carried through darkness, and the offering paid along the road. This altar serves as the gateway to the hidden shrine beneath.
Journal entry used to communicate the bowl puzzle and the symbolic logic of the traveler’s altar.
The outer shrine room and traveler’s altar, designed as the first mechanical interaction in the encounter.
Hidden Shrine Reveal
Solving the altar puzzle triggers the hidden mechanism behind the shrine. The scene uses a concealed door and scripted chat narration to reveal the passage leading into the inner chamber, turning a simple puzzle beat into a cinematic transition.
Read-aloud journal entry used when the hidden shrine opens and the inner sanctum is revealed.
Scripted chat feedback tied to the opening of the hidden shrine door.
Hidden passage opening behind the traveler’s altar, revealing the route into the inner shrine chamber.
Inner Shrine Chamber
The inner shrine chamber was built as the sacred core of the encounter. The glowing altar, ritual bowls, debris, and carved stone floor were arranged to create a sense of age, meaning, and quiet menace. This room serves as both the narrative payoff and the stage for the final guardian encounter.
Interior shrine chamber showing the glowing altar, ritual objects, and spatial layout of the hidden sanctum.
Shadow of the Quiet Road
The final beat of the encounter is the awakening of a supernatural guardian: a shadowy reflection of Karguk himself. This moment combines token reveal, journal-driven boxed text, and environmental staging to turn a lore concept into a playable VTT encounter.
Read-aloud journal entry describing the manifestation of Karguk’s shadow in the inner shrine.
Scripted reveal of the shrine guardian, presented as a dark reflection of Karguk the Quiet Road.
Selected Implementation Snippets
Below are a few representative excerpts showing how the module was structured, how Foundry entities were retrieved dynamically, and how scripted interactions were used to support encounter flow.
Module Manifest
{
"id": "shrine-of-karguk",
"title": "Shrine of Karguk the Quiet Road",
"compatibility": {
"minimum": "13",
"verified": "13"
},
"relationships": {
"systems": [
{
"id": "pf2e",
"type": "system"
}
]
},
"esmodules": [
"scripts/main.js"
]
}
Module manifest defining Foundry compatibility, PF2e dependency, and script loading.
Helper Methods for Scene Entities
findTokenByName(name) {
return canvas.tokens.placeables.find(t => t.document.name === name);
},
findJournalByName(name) {
return game.journal.find(j => j.name === name);
},
async openJournal(name, notifyIfMissing = true) {
const journal = this.findJournalByName(name);
if (!journal) {
if (notifyIfMissing) ui.notifications.warn(`Journal not found: ${name}`);
return null;
}
journal.sheet.render(true);
return journal;
},
Utility methods used to locate scene tokens and journal entries dynamically through the Foundry API.
Scripted Shrine Reveal
async openHiddenShrine() {
const secretWalls = canvas.walls.placeables.filter(
w => w.document.door === 2
);
if (!secretWalls.length) {
ui.notifications.warn("No secret door found.");
return;
}
for (const wall of secretWalls) {
await wall.document.update({ ds: 1 });
}
await this.postChat(`
<p><strong>The stone shifts.</strong></p>
<p>With a grinding whisper, the false wall beside the travelers' altar slides inward. Dust spills from its seams as a narrow passage opens into the hidden shrine beyond.</p>
`);
}
Scripted scene interaction that opens the hidden shrine door and delivers narrative feedback through Foundry chat.
Developer Notes
The main design goal for this project was to create a compact but complete VTT encounter that felt authored rather than merely assembled. I wanted the scene to move through clear beats: forest approach, social reveal, altar puzzle, hidden chamber, and final supernatural encounter.
On the implementation side, I focused on using Foundry’s own scene objects and API patterns—tokens, journals, walls, chat output, and hooks—rather than relying on a complicated external automation setup. That made the module easier to test, easier to reason about, and more representative of the practical workflow involved in building and iterating on interactive encounter content.
Tools and Technologies
- Foundry Virtual Tabletop
- Pathfinder Second Edition system
- JavaScript
- Foundry VTT API
- Scene composition with tiles, lighting, walls, and journal notes
Outcome
This project was built as a portfolio demonstration of virtual tabletop module development, combining scene design, narrative presentation, and API-driven interaction. It also became the foundation for a playable encounter that can be used in an original campaign setting centered on the Black Brood, the fall of the old kingdoms, and the legends of the Quiet Road.
Credits & Asset Attribution
Encounter design, scripting, narrative writing, scene composition, and documentation:
Joel Southall
Character tokens and creature artwork:
Original artwork by Joel Southall.
Environmental map assets and scene elements:
Some tiles and environmental assets used in this scene composition were created with resources from:
- 2-Minute Tabletop — https://2minutetabletop.com
- Forgotten Adventures — https://www.forgotten-adventures.net
These resources are used here under their respective creator licenses for non-commercial portfolio presentation.
This project is presented as a case study demonstrating virtual tabletop encounter design, scene composition, Foundry VTT scripting, and narrative interaction.
Use of these assets does not imply endorsement or affiliation with the creators.
