Download Download Support FPE

How to Connect Blender Triggers to Dialogue in Godot

How to Connect Blender Triggers to Dialogue in Godot

The artist can decide where and when a conversation begins in Blender; Godot owns the conversation resource and presentation. Dialogue stays easier to extend when detection, data, UI, and gameplay effects remain separate.

A clean conversation flow: a trigger requests a conversation by ID; a manager validates its conditions and creates an instance; the UI renders the current line and replies; selected replies advance data and emit gameplay events.
Invisible interaction trigger volume selected near a Blender scene prop
Shape the conversation area in Blender and keep the trigger invisible when it should not appear in the game.

When should dialogue start?

Common choices are automatic proximity, a deliberate Use action, a scripted event, or an interaction after a quest condition becomes true. Treat the trigger as a request—not proof that the conversation may start. The conversation manager should still check required characters, prior state, and whether another dialogue is open.

Model dialogue as data

Give every conversation and comment a stable ID. Each comment contains a speaker, text, and zero or more reply options. A reply points to the next comment and may include conditions or effects. Ending is simply reaching a comment with no valid replies or selecting a reply with no next ID.

signal conversation_started(instance)
signal conversation_ended(conversation_id: StringName)

func request_start(id: StringName, actor: Node) -> bool:
    var definition = catalog.get(id)
    if definition == null or not definition.can_start(actor):
        return false
    active = definition.create_instance(actor)
    conversation_started.emit(active)
    return true
FPE Trigger Events panel configured for player interaction and a semantic event
In Blender, dispatch a conversation event from the trigger. In Godot, let the dialogue system resolve that event to conversation data and UI.

Build the conversation in Godot and connect it in Blender

  1. In Godot, create the conversation, comment, and reply resources. Give the conversation a stable ID and connect each reply to the next comment.
  2. In Godot, add the conversation to the catalog used by FPEConversationManager, and make a dialogue UI that reads the active comment and reply choices.
  3. In Blender, create or select the trigger volume where the conversation begins. Follow the Blender trigger guide if that step is new.
  4. In Blender's Trigger Events panel, add the appropriate trigger type—usually Interaction for deliberate dialogue or Enter for automatic dialogue—and give it a clear event name.
  5. In Blender's Scene Events panel, create the matching event and add Start Conversation with the exact Godot conversation ID.
  6. Export the GLB, run the scene in Godot, and verify start, reply selection, ending, repeated activation, and missing-character behavior.
Godot Stage scene showing the stable FoldedPaperEngine host
Keep conversation resources, dialogue UI, and event listeners in Godot's stable game shell rather than inside a generated imported scene.

Common mistakes

  • Embedding long dialogue trees directly in an NPC script.
  • Making the UI the authority for the current comment.
  • Referring to speakers only by scene paths, which change as levels are reorganized.
  • Coupling reply text to effects; localizing text should not change gameplay behavior.

Godot reference: Using signals