[Phase 1] Core Playable Prototype #4

Open
opened 2026-09-03 14:02:27 -07:00 by letteka · 0 comments
Owner

Goal: Prove that throwing geese at enemies in a first-person tower defense arena is fun.

Core Systems to Build:

1. First-Person Player Controller

Create using Godot's CharacterBody3D with:

  • Mouse look, WASD movement, ground snapping/gravity
  • Optional head bob, sprint
  • Throw input triggers projectile creation

Structure:
Player -> Camera3D + ThrowOrigin (Marker3D at hand)

2. Goose Projectile

Use Area3D or RigidBody3D with:

  • MeshInstance3D, CollisionShape3D, AnimationPlayer
  • Behavior: spawn from ThrowOrigin, apply velocity based on camera direction, apply spin
  • On hit: damage enemy, play honk, spawn hit effect, queue free

3. Enemy

Start with one enemy type:

  • Structure: Area3D/CharacterBody3D with Health component
  • Behavior: spawn at point, move toward base/player, attack when close, take damage, die and drop currency
  • Simple movement: direction := (target - global_position).normalized(), velocity = direction * speed, move_and_slide()

4. Basic Wave Spawner

Wave manager behavior:

  • Start wave, spawn enemies over time, track remaining enemies
  • When all dead, start next wave; after final wave, player wins
  • Data structure using Resource for WaveDef with enemies, spawn_interval, reward

5. Basic Economy

  • Enemy dies -> player gains feathers (100 starting, 5 per enemy)
  • Player can buy additional goose throws or better goose
  • Every 10 enemies, unlock extra goose in reserve

6. Minimal UI

  • Top-left: health, currency
  • Top-right: wave number, enemies remaining
  • Center: crosshair
  • Menu: resume, restart, quit

7. Win/Lose State

  • Win: survive all prototype waves
  • Lose: player health reaches 0 or base health reaches 0

Prototype Deliverables:
Single playable scene with first-person movement, mouse look, throw geese that hit enemies, enemies move/take damage/die, currency increases, waves progress, clear win/lose state.

Exit Criteria:

  • Core loop is playable
  • Throwing geese feels responsive
  • Enemies can be killed
  • Waves work
  • Economy works minimally
  • Game has clear win/lose state
**Goal:** Prove that throwing geese at enemies in a first-person tower defense arena is fun. **Core Systems to Build**: ### 1. First-Person Player Controller Create using Godot's CharacterBody3D with: - Mouse look, WASD movement, ground snapping/gravity - Optional head bob, sprint - Throw input triggers projectile creation Structure: Player -> Camera3D + ThrowOrigin (Marker3D at hand) ### 2. Goose Projectile Use Area3D or RigidBody3D with: - MeshInstance3D, CollisionShape3D, AnimationPlayer - Behavior: spawn from ThrowOrigin, apply velocity based on camera direction, apply spin - On hit: damage enemy, play honk, spawn hit effect, queue free ### 3. Enemy Start with one enemy type: - Structure: Area3D/CharacterBody3D with Health component - Behavior: spawn at point, move toward base/player, attack when close, take damage, die and drop currency - Simple movement: direction := (target - global_position).normalized(), velocity = direction * speed, move_and_slide() ### 4. Basic Wave Spawner Wave manager behavior: - Start wave, spawn enemies over time, track remaining enemies - When all dead, start next wave; after final wave, player wins - Data structure using Resource for WaveDef with enemies, spawn_interval, reward ### 5. Basic Economy - Enemy dies -> player gains feathers (100 starting, 5 per enemy) - Player can buy additional goose throws or better goose - Every 10 enemies, unlock extra goose in reserve ### 6. Minimal UI - Top-left: health, currency - Top-right: wave number, enemies remaining - Center: crosshair - Menu: resume, restart, quit ### 7. Win/Lose State - Win: survive all prototype waves - Lose: player health reaches 0 or base health reaches 0 **Prototype Deliverables:** Single playable scene with first-person movement, mouse look, throw geese that hit enemies, enemies move/take damage/die, currency increases, waves progress, clear win/lose state. **Exit Criteria:** - Core loop is playable - Throwing geese feels responsive - Enemies can be killed - Waves work - Economy works minimally - Game has clear win/lose state
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: letteka/YeetGeese#4