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.

Foundry VTT Pathfinder 2e JavaScript Scene Scripting Encounter Design Portfolio Project

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 Foundry VTT encounter scene showing the forest approach, ruined shrine exterior, and hidden interior chamber of the Shrine of Karguk.

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.

Journal entry in Foundry titled Forest Approach containing boxed text describing the ruined forest shrine of Karguk.

Boxed text journal entry used to introduce the forest ruin and establish the legend of Karguk the Quiet Road.

Top-down Foundry view of the forest clearing outside the Shrine of Karguk before the encounter begins.

Forest approach scene before the encounter begins, showing the ruined clearing and approach toward the shrine.

Foundry scene showing players moving through the forest approach near the shrine ruins.

The forest approach was built to support exploration and gradual discovery before the inner shrine is revealed.

Foundry chat and scene screenshot showing Talan Rook revealed in the ruins.

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 in Foundry titled Traveler's Altar describing the three bowl puzzle at the shrine entrance.

Journal entry used to communicate the bowl puzzle and the symbolic logic of the traveler’s altar.

Foundry scene showing the small outer shrine room with the three-bowl 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.

Foundry journal entry titled Hidden Shrine Revealed containing boxed text for the opening of the inner sanctum.

Read-aloud journal entry used when the hidden shrine opens and the inner sanctum is revealed.

Foundry chat text reading The stone shifts as the hidden shrine door opens.

Scripted chat feedback tied to the opening of the hidden shrine door.

Foundry scene showing the traveler's altar room with the hidden passage beyond the false wall now open.

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 of the hidden shrine showing the glowing inner altar and ritual chamber in Foundry VTT.

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.

Foundry journal entry titled Shadow of the Quiet Road describing the guardian of Karguk's shrine.

Read-aloud journal entry describing the manifestation of Karguk’s shadow in the inner shrine.

Foundry scene showing the shadow guardian manifested inside the inner shrine chamber.

Scripted reveal of the shrine guardian, presented as a dark reflection of Karguk the Quiet Road.

Journal text describing shadows gathering into the shape of Karguk's guardian.

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:

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.