Room TransitionTraversal

World is navigated as discrete named locations; moving between them swaps the active room with no spatial continuity.

Discrete named rooms with no spatial continuity: walk through the exit door, the screen fades, and the next room loads with the hero at its entrance.

How room transition works in Godot

There's no spatial movement here — a “transition” is swapping which data record is active and re-rendering the shell around it.

Resourceprimitive

Each location is a data record (a RoomData resource), not a place in space. Moving rooms means pointing at a different record.

class_name RoomData extends Resource
@export var title: String
@export var description: String
@export var exits: Dictionary   # { "north": "hall", ... }

Node (autoload)node

A GameState singleton holds current_room. Swapping is just reassigning it and telling the UI to redraw.

# GameState.gd (autoload)
var current_room: RoomData

func go(room_id: String):
    current_room = ROOMS[room_id]
    room_changed.emit(current_room)

RichTextLabelnode

The shared shell. One label re-populated from the active record on every swap — the screen IS the room.

func _on_room_changed(room: RoomData):
    $Desc.text = room.description
    rebuild_exit_buttons(room.exits)

In short: current_room reference in GameState; loader populates UI from RoomData; direction input or verb triggers swap

Retro games that use room transition

20 catalogued game(s) use this mechanic, spanning 1986–2000.

Related traversal mechanics

▶ Explore Room Transition interactively — see every game + the Godot system