Complete 2D platformer starter project for Godot 4.x
$5 Godot 4.2+ GDScript Beginner FriendlyWalk, jump, double-jump, wall-slide, wall-jump. Coyote time and jump buffering for tight, responsive controls.
State machine pattern with patrol, chase, and attack behaviors. Ground (Slime) and flying (Bat) enemy types.
Autoload singleton managing score, lives, health, and level transitions. Signals keep everything in sync.
Health, score, and lives display. Message overlay for "Level Complete" and "Game Over" events.
A complete level scene with platforms, enemies, and collectibles. Ready to duplicate and customize.
Every line of code is commented. TUTORIAL.md walks you through every system from scratch.
# Variable jump height — tap for short, hold for high if Input.is_action_just_released("jump") and velocity.y < 0: velocity.y *= jump_cut_multiplier # Coyote time — jump grace period after leaving a ledge if was_on_floor and not is_on_floor() and velocity.y >= 0: coyote_timer = coyote_time # Wall sliding — slow fall when against a wall if is_on_wall_only() and not is_on_floor() and velocity.y > 0: is_wall_sliding = true velocity.y = min(velocity.y, wall_slide_speed)
enum State { IDLE, PATROL, CHASE } func _physics_process(delta: float) -> void: if not is_on_floor(): velocity.y += gravity * delta match current_state: State.IDLE: process_idle(delta) State.PATROL: process_patrol(delta) State.CHASE: process_chase(delta) move_and_slide()
Open in Godot 4.2+ to see the full game with colored placeholders.
Replace ColorRect nodes with your own pixel art sprites!