uefn-quests
Builds custom quests with the Verse Progression API (quest, objective, rewards, collection, participant) that UEFN 43.00 lets you publish. Use when the owner asks for a quest, mission, objective chain
SKILL.mduser-level-skills/uefn-quests/SKILL.md
GitHubCustom quests in UEFN 43.00
The Progression API left experimental in 43.00: a custom quest can be published. There is no editor tool for it; a quest is Verse. The facts below were read from the project's own digests and a minimal quest was compiled in the lab (compile only: it has not been run in a session, and publishing one has not been tried).
When to use
- "Collect 10 coins", "talk to three NPCs", "finish the course": a goal with progress and an end.
- A reward or a notification when something is completed, tracked per player.
When not to use: a plain score or timer (use a device and a variable), an ordered chain of steps without tracking (use the ordered objectives recipe), saving progress between sessions (use verse-patterns, persistable data).
The pieces (all in the digests)
objective: has a state (Inactive, Active, Complete) and a progress text.progress_objectivecounts up toRequiredProgress.quest: an objective that players join and abandon; has join, abandon and complete events.basic_questis "do X, get Y": it completes by itself when its objective completes and grants its rewards once.quest_collection: groups quests (usefort_quest_collection).quest_categorysorts them for the player.quest_participant: who plays. For a player useagent_quest_participant{Agent := Player};quest_participant_infotells whether they contribute, observe or receive.quest_reward: what the quest grants (entitlement_quest_rewardfor an entitlement). Leave the rewards empty for a quest without one.- Devices that show progress to the player:
objective_device,timed_objective_device,tracker_device,progress_based_mesh_device.
Workflow
- Say the quest in one line: who, what, how many, what reward. Ask only what is missing.
- Subclass
basic_quest, make aprogress_objectivewithRequiredProgress, put the quest in a collection, join the player, activate, advance withSetProgress. Start fromreferences/quest-minimal.verse.txt. - Bind every result:
JoinandActivatereturn a result, and_ :=does not compile. - Subscribe to the quest's complete event for the reward moment and the feedback (see
game-feel-uefn). - Build, then playtest one player: progress text and the complete event must both print.
Rules (symptom, cause, remedy)
- Error 3600 on
progress_objective{}:RequiredProgressmust be set in the archetype; a laterSetRequiredProgressis too late. - Error 3512 on a
caseoverobjective_state: the enum is open; add a default clause. - Errors 3514/3532 on
_ := ...: give the result a name. - Quest never completes: the objective was not activated, or progress was set on another objective than the quest's.
- Several players: one participant per player; progress is per participant, not shared, unless the design says so.
- Experimental: nothing in these classes is marked experimental in the Verse digest, and the compiler printed no warning. The UnrealEngine digest was not scanned for it: read it before promising a publish.
Class list with signatures: references/quest-minimal.verse.txt compiles against them; the full digest lines are in the editor's Verse.digest.verse and UnrealEngine.digest.verse.