
Lecture W1T2: Nodes, Scenes, and the Scene Tree
August 25, 2026
LECTURE W1T2 // GODOT FUNDAMENTALS
One mental model to leave with today: a Godot game is a tree of trees.
A game engine is the reusable software layer beneath a game: rendering, physics, audio, input, asset loading, and a scripting layer that lets you write your game instead of rewriting all of that.
Without one, “move the player left” means talking to the GPU. With one, it means:
Engines are also an architecture opinion. Learning Godot means learning how its designers think games should be structured, and that structure is the syllabus of this course.
The download link is on the course Resources page in Canvas.
Four words carry this whole lecture:
A node is Godot’s smallest unit of behavior: it has a name, properties you can edit, callbacks the engine invokes every frame, and it can have children.
One node, one job:
| Node | Its one job |
|---|---|
Sprite2D |
Draw an image |
Label |
Draw text |
Camera2D |
Decide what is on screen |
CharacterBody2D |
Move with collisions |
Area2D |
Detect overlaps (pickups, hitboxes) |
AudioStreamPlayer |
Play a sound |
Timer |
Count down and announce it |
Every node gets lifecycle callbacks from the engine:
delta is the difference between “spins once per second on every machine” and “spins at whatever speed the laptop feels like.” Always scale motion by delta. Week 2 is all about why.
Nodes form a tree, and the tree is not just organization, it is mechanics:
Player node moves; its children draw, collide, and film.Design question for the whole semester: what should own what? Get the tree right and behavior follows.
A scene is a tree of nodes saved as a file (.tscn). Any node can be a scene’s root, and any scene can be instanced inside another scene as if it were a single node.
A player, one scene:

The level does not contain forty coin implementations. It instances Coin.tscn forty times:

Fix the coin’s animation once, in Coin.tscn, and all forty instances update. That is the reuse story of the entire engine.
Godot’s answer to “how do I build a complex game object” is composition: assemble small nodes and scenes that each do one job, rather than inheriting from a giant GameObject class. We will sharpen this into the Component pattern in week 5.
At runtime, every instanced scene unfolds into one big tree: the scene tree. Your whole running game is a tree of trees, and Godot gives you tools to watch it live while the game runs.
With your neighbor: sketch the scene tree for classic Pac-Man.
On paper, decide:
You have 5 minutes, then pairs share and we assemble a class version on the board.
Live in the editor, follow along on your laptop if Godot is installed:
res:// is the project root.print() lands, and where errors tell you the truth.Printing to Output is not a game. Let’s put something on screen and make it move:
bearcat.png (our mascot, saved from willamette.edu; any PNG works, even the project’s built-in icon.svg) into the FileSystem dock. It lands at res://bearcat.png and Godot imports it automatically.Sprite2D node, and in the Inspector set its Texture to bearcat.png. Drag the Bearcat to the middle of the viewport.Sprite2D, Attach Script, and add the spin (next slide).Stop the game, change Spin Speed in the Inspector (no code!), run again: faster Bearcat. @export is tuning without touching code, and it grows into data-driven design by week 6.
.godot/ folder: it is build cache; your .gitignore from Lab 0 excludes it.Lab 0: Press Start is due Tuesday, September 1, 9:59 PM via Canvas: Godot installed, Learn GDScript From Zero completed, your first scene pushed to your lab repo. Everything you saw in today’s tour is everything Lab 0 asks you to do.
Reading for Tuesday (before class, highly recommended): Game Programming Patterns, Game Loop and Update Method.
Next time: from CS 152 to GDScript: typing, collections, and what _process vs _physics_process really means.
