Dialogue and Quest System

VerifiedCaution

Complete dialogue and quest system with branching conversations, quest stages, objectives, rewards, and event-driven progression. Use it to implement NPC dialogues, track quest progress, handle objectives like kill X or collect Y, and award rewards upon completion.

Sby Skills Guide Bot
DevelopmentAdvanced
306/2/2026
Claude Code
#gameplay#dialogue#quests#npcs#narrative

Recommended for

Our review

Provides a complete dialogue and quest system for games, supporting branching conversations, quest stages, objectives, and rewards.

Strengths

  • Structured data management using ScriptableObjects
  • Supports branching dialogues with multiple choices
  • Includes quest states and objective types (Kill, Collect, Interact, etc.)
  • Event-driven progression for responsive gameplay

Limitations

  • Tied to Unity engine and ScriptableObject pattern
  • Requires additional integration for save/load
  • May be overkill for simple narrative systems
When to use it

Use when building a quest-driven RPG or narrative game that needs complex NPC interactions and branching quests.

When not to use it

For linear stories, non-game applications, or when a simpler dialogue tree would suffice.

Security analysis

Caution
Quality score85/100

The skill declares run_command, a powerful tool, but only uses it for legitimate development tasks (building, running scripts) within the context of implementing a quest system. No destructive or exfiltrating instructions are present.

No concerns found

Examples

Kill Quest
Quest to kill 10 wolves.
Dialogue Choice
NPC offers two quest paths.

name: dialogue-quest-system description: "Complete dialogue and quest system with branching conversations, quest stages, and event triggers." version: 1.0.0 tags: ["gameplay", "dialogue", "quests", "NPCs", "narrative"] argument-hint: "action='create_quest' name='Kill10Rats' stages='Accept,InProgress,Complete'" disable-model-invocation: false user-invocable: true allowed-tools:

  • run_command
  • list_dir
  • write_to_file

Dialogue Quest System

Overview

Complete dialogue and quest system with branching conversations, multiple quest stages, objectives, rewards, and event-driven progression.

When to Use

  • Use when implementing NPC conversations
  • Use when creating branching dialogue
  • Use when tracking quest progress
  • Use when implementing objectives (kill X, collect Y)
  • Use when rewarding quest completion

Architecture

┌─────────────────────────────────────────────────────────────┐
│                    DialogueSO                               │
├─────────────────────────────────────────────────────────────┤
│  DialogueNode[] (Speaker, Text, Choices)                    │
│  Conditions (RequiredQuest, MinLevel)                       │
└─────────────────────────────────────────────────────────────┘
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                     QuestSO                                 │
├─────────────────────────────────────────────────────────────┤
│  Stages: NotStarted → InProgress → Completed                │
│  Objectives: [{Type, Target, Count}]                        │
│  Rewards: [Item, XP, Gold]                                  │
└─────────────────────────────────────────────────────────────┘

Quest States

  • NotStarted: Quest available but not accepted
  • InProgress: Quest active, tracking objectives
  • Completed: All objectives done, rewards pending
  • TurnedIn: Rewards collected, quest finished
  • Failed: Quest failed (optional)

Objective Types

  • Kill: Kill X enemies of type Y
  • Collect: Obtain X items
  • Interact: Talk to NPC, use object
  • Reach: Arrive at location
  • Escort: Keep NPC alive to destination

Best Practices

  • ✅ Use ScriptableObjects for dialogue/quest data
  • ✅ Implement ISaveable for quest progress
  • ✅ Use events for objective updates
  • ✅ Support quest prerequisites
  • NEVER hardcode dialogue text
  • NEVER forget to save quest state

Few-Shot Examples

Example 1: Kill Quest

User: "Quest to kill 10 wolves."

Agent:

// QuestSO asset with objective:
// Type: Kill, TargetId: "wolf", RequiredCount: 10
// Reward: 100 gold, 50 XP

Example 2: Dialogue Choice

User: "NPC offers two quest paths."

Agent:

DialogueNode choice = new()
{
    Speaker = "Elder",
    Text = "Which path will you take?",
    Choices = new[] 
    {
        { Text = "The Mountains", NextNode = mountainQuestNode },
        { Text = "The Forest", NextNode = forestQuestNode }
    }
};

Related Skills

  • @save-load-serialization - Persist quest progress
  • @inventory-crafting-logic - Quest rewards
  • @scriptableobject-architecture - Data patterns

Template Files

Available in templates/ folder.

Related skills