# YeetGeese - Design Document ## Game Concept **YeetGeese** is a first-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. 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 first-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, 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 - First-person movement (WASD + mouse look) - Throw input (left mouse button) - 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**: 5–10 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.*