Learning Paths
Action RPG Quest Loop
Connect dialogue, quest state, reward, map event, and combat-ready feedback.
v0.9.4Godot 4.7 stable4.6.3 supportedCurrent
This page summarizes the current v0.9.4 workflow and keeps Early Access boundaries clear.
Scenario C: Action RPG quest loop
Goal: an NPC gives a quest, the player defeats one enemy, then receives a reward.
Difficulty: beginner/intermediate.
Tools: Action RPG DNA → Database → Map Editor/Scene Composer → Narrative Weaver → Visual Logic → Content Validator → Quick Play.
| Step | Action | Why | Expected result |
|---|---|---|---|
| 1 | Choose Action RPG DNA. | Prioritizes actors, enemies, quests, loot, maps, and NPCs. | Action RPG workflow is selected. |
| 2 | Create a small room or field scene. | Keeps the quest loop testable. | A playable test area exists. |
| 3 | Create one quest resource in Database. | The quest needs a stable data record. | A quest resource exists with objective and reward. |
| 4 | Create one enemy and one reward item. | The quest must have a target and payoff. | Enemy and item resources exist. |
| 5 | Place one NPC and connect dialogue. | The player needs someone who gives the quest. | NPC starts the quest through dialogue/event logic. |
| 6 | Place one enemy encounter. | The quest needs a simple objective. | Defeating the enemy updates the objective. |
| 7 | Connect reward and completion. | The loop must end cleanly. | Player receives reward once and quest completes. |
| 8 | Validate and Quick Play. | Confirms the full loop works. | Quest starts, updates, rewards, and completes. |
Do not continue until: the quest starts, the enemy objective updates, the reward item exists, and the reward cannot be claimed infinitely unless intended.
Full tutorial: first Action RPG quest room
Phase 0: Create a safe training project
Click pathGodot Project Manager → New Project → Create Folder → Create & Edit
What to doCreate a clean project named
Dreamcatcher_First_RPG_Loop.WhyA clean project prevents mistakes from damaging a real project.
Expected resultGodot opens an empty project.
Created/changedNew Godot project folder.
If it failsUse a shorter folder path with no special characters.
Continue whenYou can open the empty project.
Phase 1: Enable Dreamcatcher
Click pathProject folder →
res://addons/dreamcatcher/, then Project → Project Settings → Plugins → Dreamcatcher → EnableWhat to doPlace Dreamcatcher in the addons folder and enable it.
WhyGodot plugins do nothing until enabled.
Expected resultDreamcatcher tools/dock/menu appear in the editor.
Created/changedPlugin enabled in project settings.
If it failsConfirm the path is exactly
res://addons/dreamcatcher/ and restart Godot if needed.Continue whenDreamcatcher tools are visible.
Phase 2: Choose Action RPG workflow
Click pathDreamcatcher dock → Genre DNA / Almanac → Action RPG → Apply / Use Profile (UI labels may vary)
What to doSelect Action RPG, or Universal if the selector is unclear.
WhyAction RPG prioritizes movement, maps, quests, enemies, combat, rewards, and HUD feedback.
Expected resultAction RPG templates and workflow hints become easier to find.
Created/changedWorkflow/profile selection.
If it failsChoose Universal and manually open Scene Composer, Map Editor, Database, Visual Logic, and Narrative Weaver.
Continue whenAction RPG or Universal is selected.
Phase 3: Create the player
Click pathScene Composer → Action RPG / Player / Actor template → Create / Duplicate / Export starter scene (UI labels may vary)
What to doCreate one player scene. Expected safe parts: sprite, collision, camera, interaction area, attack area, DreamBehavior.
WhyThe player is the controlled object, not just a sprite.
Expected resultA player scene opens or appears in the FileSystem.
Created/changedA
.tscn player scene.If it failsCreate a manual
CharacterBody2D with Sprite2D, CollisionShape2D, and Camera2D.Continue whenA player object exists in a scene.
Phase 4: Configure input
Click pathProject → Project Settings → Input Map
What to doCreate
move_up, move_down, move_left, move_right, interact, attack, dash, pause, confirm, and cancel.WhyVisual Logic and player controllers need consistent action names.
Expected resultInput actions are listed in Godot Input Map.
Created/changedProject input settings.
If it failsStart with movement, interact, and attack only.
Continue whenPressing the test key can trigger a simple notification.
Phase 5: Give the player stats
Click pathDatabase → Actors / Actor Data → New
What to doCreate
DreamActorData: player_hero with HP, attack, defense, speed, and Player faction.WhyCombat needs numbers. Graphs read stats to calculate damage and survival.
Expected resultThe player has reusable actor data.
Created/changedActor data resource.
If it failsUse temporary graph values first, then replace with actor data later.
Continue whenPlayer data exists and is assigned where the template expects actor data.
Phase 6: Create the map
Click pathMap Editor → New Map / New Scene → Small room template (UI labels may vary)
What to doCreate one small room, then paint floor, walls, collision, and player spawn in that order.
WhySmall maps make debugging easier. Visual walls alone may not block movement; collision does.
Expected resultA small room exists and the player can spawn safely.
Created/changedMap scene/resource, layers, collision, and spawn marker.
If it failsUse a normal 2D scene and simple placeholder floor/walls if map creation is unclear.
Continue whenPlayer spawns in the room and cannot walk through walls.
Phase 7: Add an NPC and dialogue
Click pathMap Editor → Event Paint → NPC template; then Narrative Weaver → New Dialogue
What to doPlace a guard NPC and create a short dialogue: “A slime is blocking the old door. Can you defeat it?” with Yes/Not yet choices.
WhyNarrative Weaver owns words and choices; map events own placement.
Expected resultInteracting with the NPC can show dialogue.
Created/changedNPC event and dialogue resource.
If it failsFirst make the NPC show one line before adding branches.
Continue whenThe player can trigger the NPC dialogue.
Phase 8: Create the quest
Click pathDatabase → Quest → New
What to doCreate
quest_defeat_slime with objective “Defeat 1 slime” and a small reward.WhyThe quest stores progress. Dialogue presents the story, but quest data remembers the objective.
Expected resultA quest resource exists.
Created/changedQuest data resource.
If it failsUse a simple switch first if quest UI is not ready.
Continue whenThe quest has ID, title, objective, and reward.
Phase 9: Link dialogue choice to quest start
Click pathVisual Logic → New Graph; save as
res://dream/logic/quests/start_slime_quest.dcsWhat to doMake choice “Yes” start the quest, set
quest_slime_started = true, and show a notification. Attach the graph to the NPC/map event.WhyThis is the first bridge: dialogue choice becomes gameplay state.
Expected resultChoosing Yes starts the quest and shows feedback.
Created/changedVisual Logic graph, switch/state, NPC graph assignment.
If it failsCheck that the graph is saved, assigned, and the dialogue choice points to it.
Continue whenQuest starts from the NPC choice in Quick Play.
Phase 10: Add a locked door
Click pathMap Editor → Event Paint → Door template; Visual Logic → New Graph
What to doPlace a door and make it check
old_door_unlocked. If false, show “The door is locked.” If true, open or transfer.WhyThe door proves quest state can change the map.
Expected resultBefore the quest it is locked; after reward it opens.
Created/changedDoor event and door logic graph.
If it failsUse only a message before attempting scene transfer.
Continue whenDoor has different behavior before and after quest completion.
Phase 11: Create enemy data
Click pathDatabase → Enemy → New
What to doCreate
enemy_slime with HP 30, attack 5, defense 1, slow speed, Enemy faction, and reward/drop.WhyEnemy data gives combat and reward numbers.
Expected resultA slime enemy resource exists.
Created/changedEnemy data resource.
If it failsUse very low stats for the first test.
Continue whenEnemy data has HP, attack, defense, faction, and reward.
Phase 12: Create enemy scene
Click pathScene Composer → Enemy / Slime template, or manual 2D scene
What to doCreate a slime with sprite, CollisionShape2D, DetectionArea, Hurtbox, AttackArea, and DreamBehavior.
WhyEnemy behavior needs detection, damage receiving, and attack areas.
Expected resultThe slime appears on the map.
Created/changedEnemy
.tscn scene and map placement.If it failsStart with a stationary enemy before AI.
Continue whenThe enemy exists and can be reached by the player.
Phase 13: Create enemy AI
Click pathVisual Logic / AI tool → New graph; save as
res://dream/logic/enemies/slime_ai.dcsWhat to doUse a simple FSM: Idle → Chase → Attack → Cooldown → Return → Dead.
WhyFSM is easier than a behavior tree for the first enemy.
Expected resultThe slime detects and reacts to the player.
Created/changedEnemy AI graph assigned to the slime.
If it failsFirst show “Player detected” before adding movement and damage.
Continue whenThe slime changes behavior when the player enters detection range.
Phase 14: Make the player attack
Click pathVisual Logic → New Graph; save as
res://dream/logic/player/player_attack.dcsWhat to doOn attack input: play animation, enable AttackArea briefly, detect enemy hurtbox, calculate damage, apply HP change, show feedback.
WhyInput becomes combat only when it connects to hitbox/hurtbox and damage logic.
Expected resultPressing attack near slime reduces slime HP.
Created/changedPlayer attack graph and attack area behavior.
If it failsFirst show an attack notification, then enable hit detection.
Continue whenThe enemy loses HP when hit.
Phase 15: Enemy death updates quest
Click pathVisual Logic → New Graph; save as
res://dream/logic/enemies/slime_death.dcsWhat to doWhen slime HP reaches 0, set
slime_defeated = true, update quest objective, play feedback, drop reward, remove enemy.WhyEnemy death is how combat affects quest progress and rewards.
Expected resultThe slime dies and the quest updates.
Created/changedDeath graph, quest state, reward/drop.
If it failsIf death works but quest does not, check IDs and quest objective conditions.
Continue whenThe quest recognizes the slime defeat.
Phase 16: Return to NPC for reward
Click pathVisual Logic → New Graph; save as
res://dream/logic/quests/complete_slime_quest.dcsWhat to doIf quest active and slime defeated, show completion dialogue, give reward, complete quest, set
old_door_unlocked = true.WhyThis closes the loop and changes the map state.
Expected resultNPC rewards player and unlocks door.
Created/changedCompletion graph, reward state, door unlock switch.
If it failsTest the three NPC states: before quest, quest active, quest complete.
Continue whenThe NPC reacts differently based on quest state.
Phase 17: Add HUD feedback
Click pathUI Builder → HUD layout → Label / HP bar / Quest text
What to doCreate a small HUD showing HP, current objective, and reward feedback.
WhyHUD helps the player understand what changed.
Expected resultThe scene shows HP and/or objective text.
Created/changedHUD scene/resource and scene instance.
If it failsStart with static labels; connect dynamic values later.
Continue whenHUD appears during Quick Play.
Phase 18: Validate and Quick Play
Click pathContent Validator → Validate; then Quick Play
What to doValidate the player, map, NPC, dialogue, quest, enemy, combat, door, HUD, and generated assets. Then test the loop in order.
WhyValidation finds missing links; Quick Play proves the player experience.
Expected resultThe loop can be played from spawn to reward to unlocked door.
Created/changedValidation report and any safe fixes.
If it failsFix the first warning only, then validate again.
Continue whenThe whole loop works from start to finish.
