Solution requires interacting with fixed world objects in a specific sequence or configuration.
A physical puzzle: the hero pushes a crate onto a pressure plate, and the weight opens the door to walk through.
A multi-step room puzzle is an ordered set of flag-setting interactions whose final step checks that all prerequisites are set. No special machinery beyond flags.
Each sub-action (pull lever, rotate dial) sets its own flag. The puzzle's state is just which of these are currently true.
func pull_lever(id):
flags["lever_" + id] = true
check_solution()Store the required configuration as data — which flags, in what state — so the win check is declarative rather than a tangle of ifs.
class_name PuzzleGoal extends Resource
@export var required: Dictionary # { "lever_a": true, ... }When the final step makes the configuration match, emit solved so the door, bridge, or reward reacts. Order can be enforced by gating later flags on earlier ones.
signal solved
func check_solution():
if goal.required.all(func(k,v): return flags.get(k) == v):
solved.emit()In short: Ordered interaction sequence; each step sets a flag; final step checks all prerequisite flags and triggers outcome
25 catalogued game(s) use this mechanic, spanning 1983–2000.
▶ Explore Environmental Puzzle interactively — see every game + the Godot system