Demo Scene
Simple Quest Forge includes an interactive demo scene that showcases all quest features at runtime. The demo mirrors the pattern used by Simple Enemy Forge's Bestiary Demo — a generator creates a complete UI canvas with multiple tabs, and a runtime MonoBehaviour drives the interactive features.
The demo is designed as a self-contained data browser. Once generated, you can enter Play Mode and
explore every quest, chain, and procedural template in your databases without writing a single line
of code. It also doubles as a live reference for how to use the runtime API classes like
SimpleQuestTracker, SimpleQuestChainTracker, SimpleQuestHelper,
and SimpleProceduralQuestGenerator in your own projects.
Prerequisites
Before generating the demo scene, make sure the following requirements are met:
- TextMeshPro package — The demo UI is built entirely with TextMeshPro components (TMP_Text, TMP_InputField, TMP_Dropdown). TextMeshPro is included by default in Unity 2019.4 and later. If you are prompted to import TMP Essentials when entering Play Mode, accept the import and re-enter Play Mode. Without TextMeshPro, the demo will not compile.
- At least one generated Quest Forge database — You need a fully generated
Quest Forge database (the
.assetfile, not just the wizard data). Run the Quest Forge Wizard through all 5 steps and click Generate. Wait for compilation to finish and confirm the.assetfile appears in your output folder. - Quest Chain database (optional) — If you also generate a Quest Chain database, the Chains tab will be populated with your chain data. Without it, the Chains tab will appear but display no content.
- Procedural Quest database (optional) — If you also generate a Procedural Quest database, the Procedural tab will let you browse templates and generate random quest instances on the fly. Without it, the Procedural tab will appear but display no content.
Generating the Demo
Create at least a Quest Forge database using one of the wizard templates. Optionally, also generate a Quest Chain database and a Procedural Quest database for the full demo experience. Make sure each wizard completes both generation phases (script compilation + asset creation) before proceeding.
Navigate to
Window → Simple Quest Forge → Generate Quest Demo. This opens
the QuestDemoGenerator window, which provides database assignment slots and a
Generate button.
The generator window shows array slots for quest databases, chain databases, and procedural databases. Drag your generated
.asset files into the appropriate slots. You can assign multiple
databases of each type — the demo will merge them and display all entries across all assigned
databases.
Click Generate to create the demo canvas in your scene. The generator creates all UI elements (panels, scroll views, buttons, text fields, tab bar), wires up references, and attaches the
QuestDemo MonoBehaviour with all database references pre-assigned. The entire
canvas hierarchy appears under a root GameObject named "QuestDemoCanvas".
Demo Tabs
The demo features 5 interactive tabs, each demonstrating a different aspect of the quest system. Switch between tabs using the teal-highlighted tab buttons along the top of the canvas.
Quests Tab
The Quests tab is the primary data browser. On the left panel (32% width) you see a scrollable list of all quests from every assigned database, each showing its icon (if assigned) and display name. A search field at the top filters quests by name or code in real time. A category dropdown lets you filter by any category defined in your schema (e.g., Quest Type, Difficulty).
Selecting a quest populates the right detail panel (68% width) with the full quest data: code, name, description, icon preview, all objectives (with target codes, required counts, and objective-level dynamic properties), all rewards (with item codes, quantities, and reward-level properties), prerequisites, and every dynamic property value at the quest level — categories, flags, numerics, and texts, each labeled with their schema-defined names.
Chains Tab
The Chains tab displays quest chain data. The left panel lists all chains by name. Selecting a chain shows its ordered sequence of steps in the right panel. Each step displays its linked quest code (resolved to a name when possible), whether it is required or optional, and its branch group assignment with color coding. Steps within the same branch group share a color, making it easy to visualize parallel branches. The overall chain structure — linear progression with optional branching points — is presented as a vertical timeline, giving you an at-a-glance view of chain flow.
Procedural Tab
The Procedural tab lets you browse procedural quest templates and generate random quest
instances in real time. The left panel lists all templates. Selecting a template shows its
configuration: the title and description patterns with {variable} tokens, all
defined variables (TextList with their option pools, NumericRange with their min/max bounds),
and objective/reward templates.
Click the GENERATE button to produce a random quest instance from the selected template. The generated result appears below, showing every token resolved to a concrete value: the final title, description, objective targets and counts, reward quantities — all with their random selections highlighted so you can see exactly which values were chosen.
Tracker Tab
The Tracker tab is an interactive demo of SimpleQuestTracker in action. You see a
list of available quests that can be started. Click a quest to start tracking it, which moves
it into the "Active" section. Each active quest shows its objectives with current/required
progress counters and + / - buttons to increment or decrement
progress. A real-time completion percentage bar updates as you modify progress. When all
objectives reach their required counts, the quest automatically moves to "Completed".
The tab also demonstrates save/load snapshots: click Save to capture the
current tracker state, then modify progress or complete quests, then click Load
to restore the saved snapshot. This shows how SimpleQuestTracker's serialization
works for save systems.
Helper Tab
The Helper tab demonstrates the utility methods in SimpleQuestHelper. It provides
interactive buttons for each helper function: Check Prerequisites evaluates
whether a selected quest's prerequisites are met given the current tracker state.
Group Rewards shows all rewards for a quest organized by type.
Find by Target searches across all quests for objectives that reference a
specific target code (useful for "which quests involve this enemy?" queries).
Find Dependents shows which quests list the selected quest as a prerequisite.
Traverse Prerequisites walks the full prerequisite chain recursively,
displaying the complete dependency tree.
Setup Instructions
After generating the demo:
- The demo canvas is added to the currently open scene as a root-level GameObject
- A
QuestDemoMonoBehaviour is attached with database references pre-assigned - Enter Play Mode to interact with the demo — the UI is not functional in Edit Mode
- Use the tab buttons at the top to switch between views
- The Back button in the top-left corner destroys the demo canvas (useful for testing in your own scene without leaving Play Mode)
- If you regenerate your databases with different schemas, regenerate the demo as well to pick up the changes
Demo Architecture
The demo is built from exactly two C# files, following the same pattern established by Simple Enemy Forge's Bestiary Demo:
QuestDemoGenerator.cs (Editor)
Location: Editor/Demo/QuestDemoGenerator.cs
This is a static editor class that creates the entire demo UI programmatically. It is accessed via
the menu item Window → Simple Quest Forge → Generate Quest Demo. When you
click Generate, this class:
- Creates a root Canvas with CanvasScaler (Scale With Screen Size, 1920x1080 reference)
- Builds the tab bar with 5 tab buttons (Quests, Chains, Procedural, Tracker, Helper)
- Creates 5 tab content panels, each with their own layout of scroll views, text fields, buttons, and list items
- Builds prefab-style elements for list entries, detail panels, and interactive controls
- Attaches a
QuestDemoMonoBehaviour to the root and assigns all UI references and database arrays - Applies the Black + Teal color scheme to all UI elements
This file lives in an Editor folder and is stripped from builds automatically. It only runs in the Unity Editor and has no runtime cost.
QuestDemo.cs (Runtime)
Location: Runtime/Demo/QuestDemo.cs
This is the runtime MonoBehaviour that drives all interactive behavior. It holds arrays for each
database type (ScriptableObject[] questDatabases, ScriptableObject[] chainDatabases,
ScriptableObject[] proceduralDatabases) and caches their interfaces
(ISimpleQuestDataSource, ISimpleQuestChainDataSource,
ISimpleProceduralQuestDataSource) on Awake().
At runtime, QuestDemo manages:
- Tab switching (showing/hiding content panels)
- Quest list population with search filtering and category dropdown filtering
- Detail panel updates when a quest, chain, or template is selected
- Procedural quest generation via
SimpleProceduralQuestGenerator - Quest tracking state via
SimpleQuestTracker(start, progress, complete, save, load) - Helper queries via
SimpleQuestHelper(prerequisites, rewards, cross-references) - Back button cleanup (destroys the canvas GameObject)
Color Scheme
The demo uses the SQF documentation color scheme:
- Background: Black (#121212)
- Primary: Teal (#2CA5A5)
- Secondary: Light Teal (#4DB8B8)
- Panel backgrounds: Dark grey (#1A1A1A)
This matches SEF's Bestiary Demo pattern (which uses Black + Crimson Red) but with the SQF teal color scheme for visual distinction. Active tab buttons and selected list items are highlighted in teal, while inactive elements use muted greys.
Tips
Run in Play Mode
The demo UI is completely inert in Edit Mode. All interactivity — tab switching, list selection, search filtering, quest tracking, procedural generation — only works when you enter Play Mode. If the canvas appears but nothing responds to clicks, make sure you are in Play Mode.
Use 1920x1080 Game View
The demo is designed for a 1920x1080 resolution. In the Game view, set the aspect ratio to "1920x1080" (or "Full HD") from the resolution dropdown for the best layout. The CanvasScaler will adapt to other resolutions, but text sizes and panel proportions are optimized for 1920x1080.
Back Button Destroys Canvas
Clicking the Back button in the top-left corner calls Destroy() on the entire
demo canvas. This is intentional — it lets you test the demo in your own scene without
leaving Play Mode. If you accidentally click Back, simply exit and re-enter Play Mode (the
canvas GameObject is still in the scene hierarchy, it is only destroyed at runtime).
Safe to Regenerate
You can regenerate the demo as many times as you like. Each generation replaces the previous demo canvas in the scene. If you have regenerated your quest databases with a different schema or different quests, regenerate the demo to pick up the new data. The generator does not modify any of your database assets — it only reads from them.