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
-
Identify pattern from user description. Map to the closest template above.
-
Create scene:
scenes(action="create", name="<name>", root_type="<RootType>") -
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") -
Configure properties:
nodes(action="set_property", scene="<name>.tscn", node_path="Camera2D", property="position_smoothing_enabled", value="true") -
Attach script (create from template in add-mechanic skill if needed):
scripts(action="create", path="res://scripts/<name>.gd", content="...") -
Verify scene tree:
scenes(action="get", scene="<name>.tscn")
Common Mistakes to Prevent
- Missing
CollisionShape2Don physics bodies/areas (most frequent LLM error) - Using
TileMapinstead ofTileMapLayerin Godot 4.3+ - Forgetting
Camera2Dsmoothing (causes jarring camera movement) - Putting UI elements directly under
Controlwithout layout containers - Using
RigidBody2DwhenCharacterBody2Dis needed (characters needmove_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