Lesson 01

From 2D to 3D: what changes and what doesn't

GlitchFall is a small third-person adventure: you explore a corrupted low-poly world, collect glitch fragments, avoid hazards, and reach the exit. If you did the 2D track, most of your instincts carry over — this lesson maps them into three dimensions.

▸ By the end of this lesson: A running 3D project and a clear picture of the finished GlitchFall

1.1The finished game, described once

Hold this picture for the whole 3D course:

Why this scope

GlitchFall stays deliberately small so you learn 3D fundamentals cleanly: the 3D coordinate system, meshes and materials, a physics character controller, a follow camera, area triggers, and 3D UI — without drowning in level-design or asset pipelines.

1.2What carries over from the 2D track

Everything structural is the same: nodes in a tree, scenes as reusable bricks, _ready/_process/_input, signals, and separating data from visuals. If you did the 2D course, you already know 70% of what follows. If you didn't, you'll still be fine — but skim 2D Lessons 1–2 for the node/script basics.

1.3What's genuinely new in 3D

Y is up, and −Z is forward

This trips up newcomers constantly. Up/down is the Y axis. "Forward" for a default camera is negative Z. Left/right is X. Say it out loud a few times — it saves hours of confusion later.

1.4Create the project & learn to fly

  1. In the Godot Project Manager, create a new project named GlitchFall. Use the Forward+ renderer for the best 3D lighting.
  2. New Scene → "Other Node" → choose Node3D as the root. Rename it Main. Save as main.tscn.
  3. In the 3D viewport, orbit by holding the middle mouse button, pan with Shift+middle mouse, and zoom with the scroll wheel.
  4. Hold the right mouse button and use WASD to fly through the scene like an FPS. This is how you'll navigate constantly.

Sanity check

You have an empty Main.tscn with a Node3D root, and you can fly the editor camera around. It's an empty black void — that's expected. We light it up next lesson.

Checkpoint — you should now have