4.6 KiB
4.6 KiB
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:
- Enemies spawn at designated points and march toward the base
- Player moves through the arena, positioning for optimal throws
- Player aims and yeets geese using mouse look and click
- Geese impact enemies, dealing damage or causing knockback/stun
- Currency drops (feathers) from defeated enemies
- Player spends currency on upgrades or new goose types
- Wave ends when all enemies are eliminated
- 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
- Pig (formerly Grunt) – Slow, low health, standard damage (meat shield)
- 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, pauseEventBus.gd– Central signals for gameplay eventsAudioManager.gd– SFX and music playbackSettingsManager.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.