Verb Object InteractionPuzzle

Player selects a verb (Look, Use, Take, Open) and applies it to a world object; the system looks up the result based on current state and updates accordingly.

LucasArts SCUMM (Monkey Island): pick a verb then the objects to build a command — 'Use key on door' — and the world resolves it.

How verb object interaction works in Godot

The verb-noun loop is a lookup, not a node graph: (verb, object) indexes into the room's interaction table, the result is gated by flags, and success mutates flags. This is the Shadowgate engine.

Resourceprimitive

Each room's interactions are data: a list of (verb, object) entries with required flags and a result. Content lives in resources, logic stays generic.

class_name Interaction extends Resource
@export var verb: String
@export var object: String
@export var requires: Array[String]
@export var result_text: String
@export var sets_flags: Array[String]

Dictionaryprimitive

Flags gate every result. The same verb on the same object yields different outcomes as world state changes — that's the whole adventure-game feel.

func resolve(verb, obj):
    for i in room.interactions:
        if i.verb == verb and i.object == obj and met(i.requires):
            apply(i); return i.result_text
    return "Nothing happens."

Signalsprimitive

Emit verb_selected from the UI and interaction_done from the resolver, so input, log text, and flag mutation stay loosely coupled.

signal verb_selected(verb, object)
verb_selected.connect(func(v,o): log.append(resolve(v,o)))

In short: Verb signal (verb: String, object: String) → lookup in RoomData.interactions array → check flags → execute result + set flags

Retro games that use verb object interaction

14 catalogued game(s) use this mechanic, spanning 1989–2000.

Related puzzle mechanics

▶ Explore Verb Object Interaction interactively — see every game + the Godot system