build-scene

Pattern-based Godot scene construction with node hierarchy templates and companion node rules

Build Scene

Construct Godot scenes from proven patterns. Each pattern includes REQUIRED companion nodes that LLMs commonly forget.

Scene Patterns

Platformer Character

CharacterBody2D "Player"
  CollisionShape2D          # REQUIRED -- CharacterBody2D without this = no collisions
  Sprite2D                  # Visual representation
  AnimationPlayer           # Idle, run, jump, fall animations
  Camera2D                  # Follow camera
    position_smoothing_enabled = true
    position_smoothing_speed = 5.0

Companion rule: CharacterBody2D MUST have a CollisionShape2D child. Without it, move_and_slide() works but detects zero collisions.

Top-Down Character

CharacterBody2D "Player"
  CollisionShape2D          # REQUIRED
  Sprite2D
  NavigationAgent2D         # Pathfinding (if AI/NPC)
    path_desired_distance = 4.0
    target_desired_distance = 4.0

UI Screen

Control "MenuScreen"
  MarginContainer           # Prevents content touching edges
    VBoxContainer           # Vertical layout for menu items
      Label "Title"
      Button "StartButton"
      Button "OptionsButton"
      Button "QuitButton"

Companion rule: Always wrap UI content in MarginContainer first. Direct children of Control have no automatic margins.

Projectile

Area2D "Bullet"
  CollisionShape2D          # REQUIRED -- Area2D signals need this to detect overlaps
  Sprite2D
  VisibleOnScreenNotifier2D # Auto-cleanup when off-screen (connect screen_exited -> queue_free)

Companion rule: Area2D without CollisionShape2D will never emit body_entered or area_entered signals.

Pickup Item

Area2D "Coin"
  CollisionShape2D          # REQUIRED
  Sprite2D
  AudioStreamPlayer         # Pickup sound effect

Tilemap Level

Node2D "Level"
  TileMapLayer              # Godot 4.3+ (NOT TileMap -- deprecated)
  Camera2D
    limit_left = 0
    limit_top = 0

Note: TileMap node is deprecated in Godot 4.3+. Use TileMapLayer instead.

Implementation Steps

  1. Identify pattern from user description. Map to the closest template above.

  2. Create scene:

    scenes(action="create", name="<name>", root_type="<RootType>")
    
  3. Add nodes top-down (parent before children):

    nodes(action="add", scene="<name>.tscn", parent=".", type="CollisionShape2D", name="CollisionShape2D")
    nodes(action="add", scene="<name>.tscn", parent=".", type="Sprite2D", name="Sprite2D")
    
  4. Configure properties:

    nodes(action="set_property", scene="<name>.tscn", node_path="Camera2D",
          property="position_smoothing_enabled", value="true")
    
  5. Attach script (create from template in add-mechanic skill if needed):

    scripts(action="create", path="res://scripts/<name>.gd", content="...")
    
  6. Verify scene tree:

    scenes(action="get", scene="<name>.tscn")
    

Common Mistakes to Prevent

  • Missing CollisionShape2D on physics bodies/areas (most frequent LLM error)
  • Using TileMap instead of TileMapLayer in Godot 4.3+
  • Forgetting Camera2D smoothing (causes jarring camera movement)
  • Putting UI elements directly under Control without layout containers
  • Using RigidBody2D when CharacterBody2D is needed (characters need move_and_slide)

When to Use

  • Creating a new game entity (character, enemy, projectile, pickup)
  • Setting up a UI screen (menu, HUD, dialog)
  • Building a level structure
  • Prototyping a scene with correct node hierarchy