Skip to content

NPC Jobs and Activities

Part of NPCs World Verbs Rewards and Living World


Principle

NPCs should not directly own "activities".

NPCs own story problems. The system maps problems → activity types.

Bad model

  • Merchant → Missing Letter only
  • Fisherman → Read Aloud only
  • Lighthouse Keeper → Spelling only

Becomes repetitive and brittle.

Better model

Merchant has a box label problem. That problem can be solved with Missing Letter, Spelling, or Reading depending on session need.

Same story setup → multiple learning modes.


Job structure (conceptual)

npc_job:
  id: merchant_repair_box_labels
  npc_id: merchant_mara
  story_stage: first_meeting
  world_verb: repair
  target_object: crate_labels
  supported_activity_types:
    - missing_letter
    - spelling
  min_rounds: 3
  max_rounds: 5
  required_for_progression: true
  unlocks:
    - boat_access

Job categories per NPC

Every NPC should have:

Category Purpose
Main story jobs Limited, handcrafted, required
Relationship jobs Limited but optional
Repeatable jobs Reusable with variation
Collectible jobs Eligible for optional keepsakes

Example complete NPC — Merchant Mara

See [[NPC and Job Data Model#Example — merchant_mara]] for full YAML-style definition including:

  • first_interaction job
  • repeatable jobs (wet_labels, shipping_manifest, single_crate)
  • deterministic reward merchant_boat_access
  • optional drops (small_wooden_crate, old_market_photo)

What Godot receives

Godot does not invent the activity. It receives a served job:

  • NPC identity + story copy (opening / request / success)
  • activity.type, rounds, words
  • world verb + target objects + completion effects
  • reward result after server save

Godot Server Split - NPC Pipeline