Games · Beginner

Starshard: A 2D Arcade Game

Build a playable space shooter with sprites, collisions, enemy waves, score, sound, and a game-over screen.

Beginner8-14 hoursGDScript

Starshard is a classic top-down space shooter built entirely in Godot 4 using GDScript. You will create a player ship that fires bullets, face spawning waves of enemies, track a live score, and handle game-over logic with a restart screen. The project covers every foundational layer of a 2D game: scene composition, physics collisions, signals, and audio, making it the ideal first complete game to ship.

What you build

  • Player ship moves with keyboard input and fires projectiles on demand
  • Enemy ships spawn in configurable waves and fly toward the player
  • Collision detection destroys enemies and ends the game if the player is hit
  • Score counter increments per kill and persists to a game-over screen
  • Sound effects play on shoot, explosion, and game-over events
  • Animated sprites using sprite sheets for player, enemies, and explosions
  • Restart button returns the player to the title scene without reloading the engine

What it teaches

  • Godot 4 scene and node hierarchy: composing reusable scenes with instancing
  • GDScript fundamentals: variables, functions, signals, and the physics process loop
  • 2D collision detection using Area2D, CollisionShape2D, and signal callbacks
  • Game state management with an AutoLoad singleton for score and restart logic
  • AudioStreamPlayer and resource preloading for in-game sound effects
  • Sprite animation with AnimatedSprite2D and sprite sheet frame configuration

How it works

  1. 1

    Player Input

    • Keyboard arrows / WASD move ship
    • Space bar fires bullet
  2. 2

    Game Objects

    • Player scene (CharacterBody2D)
    • Bullet scene (Area2D)
    • Enemy scene (Area2D)
  3. 3

    Collision Signals

    • Bullet hits enemy: award score, queue_free both
    • Enemy hits player: trigger game-over state
  4. 4

    Score + State

    • AutoLoad singleton tracks score
    • Timer spawns next enemy wave
  5. 5

    Game Over

    • Scene switch to GameOver screen
    • Display score, restart button
fig. 01 — data flow from player input through collision resolution to game-over state

Sign in to open the build guide

Free account. Get the step-by-step build and every resource link.

Sign in to continue

Take it further

  • Add a shield power-up that drops from enemies and grants the player one extra hit before game over.
  • Implement a high-score leaderboard stored in a local JSON file using FileAccess.
  • Introduce boss waves every five rounds with a multi-phase enemy that has a health bar.

More like this

All projects