Files
YeetGeese/Docs/YeetGeese Design Document.md
Andrew Yeet 15098c887a
Validate Project / validate (push) Successful in 15s
Issue #3 Task #3, basic structure
2026-09-07 15:40:02 -07:00

4.7 KiB
Raw Permalink Blame History

YeetGeese - Design Document

Game Concept

YeetGeese is an over-the-shoulder third-person tower defense game where the player defends a base by throwing geese as powerful projectiles. The core fantasy is absurdly simple but deeply satisfying: enemies approach your objective, and you yeet geese at them to stop them.


Core Fantasy

"I am alone in a 3D farm arena, viewed from behind my shoulders. Farm animals march toward my base. I aim with mouse, throw with a click, and watch geese crash into foes with satisfying honks, spins, and impact. Each throw feels powerful and purposeful."

  • Player: A lone defender in over-the-shoulder third-person
  • Weapon: Throwable geese that act as both projectiles and temporary turrets
  • Objective: Protect the base from waves of approaching farm animals (Pigs, Chickens)
  • Juice: Every goose hit produces satisfying feedback (honks, feathers, screen shake)

Core Loop

[ENEMIES SPAWN] → [PLAYER MOVES & AIMS] → [YEET GEESE] → 
[GEESE DAMAGE/DISTRACT ENEMIES] → [CURRENCY COLLECTED] → 
[BUY UPGRADES/NEW GEESE] → [WAVE COMPLETE?] → [NEXT WAVE (HARDER)]

Breakdown:

  1. Enemies spawn at designated points and march toward the base
  2. Player moves through the arena in third-person, positioning for optimal throws
  3. Player aims and yeets geese using mouse look and click
  4. Geese impact enemies, dealing damage or causing knockback/stun
  5. Currency drops (feathers) from defeated enemies
  6. Player spends currency on upgrades or new goose types
  7. Wave ends when all enemies are eliminated
  8. Next wave begins, with more/enemy variety/difficulty

MVP Scope

One Arena

  • Simple, open arena with clear spawn and base zones
  • Neutral terrain allowing free movement

One Player Controller

  • Player Controller: Over-the-shoulder third-person view (WASD + mouse look, throw input)
  • Basic health system

One Goose Type

  • Basic Goose: Standard projectile goose
    • Medium damage, standard speed
    • Spins on throw
    • Flees after impact or short lifetime

Two Enemy Types

  1. Pig (formerly Grunt) Slow, low health, standard damage (meat shield)
  2. Chicken (formerly Runner) Fast, low health, reaches base quickly

Five Waves

Wave Enemies Description
1 3 Pigs Tutorial wave
2 5 Pigs Slight increase
3 4 Pigs + 2 Chickens Introduction of speed
4 6 Mixed (Pig/Chicken) Mix of both types
5 Boss wave: Oinker Boss Large, high-health farm animal

Basic Economy

  • Starting currency: 100 feathers
  • Enemy drop: 510 feathers per kill
  • Goose cost: Free for first type
  • Upgrade/shop unlock: Every 10 kills unlocks new goose slot

Basic UI

  • Top-left: Health bar, feather count
  • Top-right: Wave number
  • Pause menu (Escape)
  • Game over / Victory screens

Win/Lose Conditions

  • Win: Survive all 5 waves
  • Lose: Player health reaches 0

Godot Setup Summary

Project Type

  • Godot 4.x, 3D project, Forward+ renderer

Directory Structure

res://
├── scripts/          # GDScript files
├── scenes/           # .tscn files
├── assets/
│   ├── audio/
│   ├── meshes/
│   ├── textures/
│   ├── materials/
│   └── animations/
├── ui/               # HUD, menus
├── data/             # Wave/upgrade configs
├── autoload/         # GameState, EventBus, AudioManager
└── tests/

Autoloads

  • GameState.gd Wave state, currency, lives, pause
  • EventBus.gd Central signals for gameplay events
  • AudioManager.gd SFX and music playback
  • SettingsManager.gd Settings persistence

Collision Layers

Layer Type
1 Environment
2 Player
3 Enemy
4 Goose projectile
5 Goose turret
6 Currency/pickups
7 UI / trigger zones

Exit Criteria for Phase 0

  • Design document is complete (this one page)
  • Godot project opens cleanly in 3D mode
  • Folders and autoloads are created
  • Input map is configured (WASD, mouse, throw, pause)
  • MVP scope is documented and understood

This document defines the foundation for a small but complete playable prototype. Phase 1 will build exactly this scope; additional content comes later.