Home
Features

Quests

Multi-objective quests with progress tracking, completion events, and replay-safe state.

Note:

Screenshot embedding lands once the F-Gallery test harness flips on with the RB browser-CI gate.

Problem

A "Clear the harbor" quest has three objectives: defeat 5 bandits, deliver 3 crates to the tavern, talk to the harbormaster. The quest tracks each objective independently + fires a completion event when all three resolve.

Snippet

import { GameboardQuest } from 'declarative-hex-worlds/quests';

world.spawn(GameboardQuest({
  id: 'quest:clear-harbor',
  title: 'Clear the harbor',
  objectives: [
    { id: 'defeat-bandits', kind: 'defeat-count', target: 5, current: 0 },
    { id: 'deliver-crates', kind: 'deliver-count', target: 3, current: 0 },
    { id: 'talk-harbormaster', kind: 'interact-actor', target: 'npc:harbormaster' },
  ],
  rewards: { gold: 100, xp: 250 },
}));

What the library handles

  • Objective tracking. Each kind has its own update hook that runs during the simulation tick.
  • Completion semantics. A quest completes when every objective's status === 'satisfied'.
  • Event records. GameboardQuestAdvancedEvent / GameboardQuestCompletedEvent / GameboardQuestBlockedEvent for downstream UIs.