Task State Issues
Tasks have three states: NotActive, Active, and Completed. This guide helps when tasks get stuck or don't transition as expected.
Understanding Task Persistence
Important: All tasks in Portals start in the NotActive state. This applies to:
- New tasks you create
- All tasks for new players entering your space for the first time
Tasks persist by default. Once a task changes state, it stays in that state across sessions unless:
- You explicitly change it with a trigger/effect
- You've enabled "Non-Persistent" in the task settings
This means if a player completes a quest and returns later, the task will still be Completed. Tasks do not automatically reset to NotActive on their own.
Quick Checklist
- Task exists - Verify the task name in Space Options > Tasks
- Trigger is firing - Reproduce the action and confirm its expected visible result
- Effect is configured - The effect must set the correct target state
- No conflicting effects - Multiple effects on the same task can cause issues
Task Won't Change State
Symptom: Trigger fires but task state doesn't change.
Step 1: Verify the Trigger
- Perform the action that should trigger the change in a fresh play session
- Confirm the item gives the expected visual, audio, or state-based feedback
- If the action never begins, review the trigger type and target item
If no activity appears:
- Check trigger configuration (correct trigger type, correct object)
- For collision triggers, verify the trigger cube is positioned correctly
- For click triggers, ensure the object is clickable
Step 2: Check the Effect Configuration
- Edit the task and find the trigger
- Verify the effect is set to change the task state
- Check the target state is correct:
SetNotActiveToActive- Activates from NotActiveSetActiveToCompleted- Completes from ActiveSetAnyToActive- Activates from any state
Step 3: Look for Conflicts
Multiple effects targeting the same task can override each other:
// Problem: Two triggers fire at once
Trigger A → Set task to Active
Trigger B → Set task to NotActive
// Result: Unpredictable state
Fix: Add conditions or delays to prevent simultaneous execution.
Dependent Task Not Activating
Symptom: A task that depends on another task won't activate even after the parent completes.
How Dependencies Work
- Parent task must be Completed (not just Active)
- Dependent task starts in NotActive
- When parent completes, dependent task becomes Active automatically
Diagnostic Steps
Check parent task state
- Complete the parent task through its normal player flow
- Verify the dependent task becomes available afterward
Verify dependency configuration
- Edit the dependent task
- Check "Depends On" field
- Task name must match exactly (case-sensitive)
Check for circular dependencies
// Problem: A depends on B, B depends on A Task A: Depends on Task B Task B: Depends on Task A // Result: Neither can ever activate
Task Resets Unexpectedly
Symptom: Task state reverts to NotActive when it shouldn't.
Remember: By default, tasks persist across sessions. If a task is resetting, something is explicitly causing it.
Common Causes
Non-Persistent Setting Enabled
- Check Space Options > Tasks
- If "Non-Persistent" is enabled, task resets on page reload
- Disable for tasks that should save progress
- Default is persistent - you must explicitly enable non-persistent behavior
Reset All Tasks Effect
- Search for any "Reset All Tasks" effects in your space
- These reset ALL tasks to NotActive
- Consider using targeted task state changes instead
Player Log In Trigger Resetting Tasks
- Check if you have a Player Log In trigger that sets tasks to NotActive
- This would reset returning players' progress
- If you want one-time initialization, check the task state first:
// Only set up if player hasn't started yet if($T{gameStarted} == 'NotActive', SetTask('tutorial', 'Active', 0.0), 0.0 )Page Reload Triggered
- Teleporting between spaces resets non-persistent tasks
- Check if any portals are inadvertently reloading the space
Task Shows the Wrong State
Symptom: A task behaves as though it is in a different state than expected.
Single-Player vs Multiplayer Tasks
| Task Type | Behavior |
|---|---|
| Single Player | Each player has their own task state |
| Multiplayer | All players share the same task state |
Issue: You're checking one player's state while another player changed it.
Fix:
- For shared progress, use Multiplayer tasks
- For individual progress, use Single Player tasks
Checking the Correct Task
- Note the exact task name from Space Options > Tasks
- Match that name exactly in the trigger and effect configuration
- Multiple tasks with similar names can cause confusion
Quest Not Appearing in Quest Log
Symptom: Task is Active but doesn't show in the player's quest log.
Requirements for Quest Visibility
Visibility must be ON
- Space Options > Tasks
- Select the task
- Enable "Visibility" toggle
Task must be Active or Completed
- NotActive tasks don't appear in quest log
- Activate the task first
Quest group (optional)
- Assign a group name to organize related quests
- All tasks in same group appear together
Task State Transition Reference
Tasks can transition between any states. Use the correct transition value:
| From | To | Value |
|---|---|---|
| NotActive | Active | SetNotActiveToActive |
| Active | Completed | SetActiveToCompleted |
| Completed | Active | SetCompletedToActive |
| NotActive | Completed | SetNotActiveToCompleted |
| Active | NotActive | SetActiveToNotActive |
| Completed | NotActive | SetCompletedToNotActive |
| Any | Active | SetAnyToActive |
| Any | Completed | SetAnyToCompleted |
| Any | NotActive | ToNotActive |
Using with Function Effects
// Set task to Active immediately
SetTask('myTask', 'Active', 0.0)
// Set task to Completed after 2 seconds
SetTask('myTask', 'Completed', 2.0)
// Check state before changing
if($T{door} == 'NotActive',
SetTask('door', 'Active', 0.0),
0.0
)
Debugging Workflow
- Identify the task by name
- Reproduce its normal player flow from a fresh session
- Note the observed state (NotActive/Active/Completed)
- Trigger the action that should change state
- Watch for:
- Trigger activity (did the trigger fire?)
- State change (did the task update?)
- Any other tasks changing (conflicts?)
- If state doesn't change, check effect configuration
- If state changes incorrectly, look for conflicting effects
