This commit is contained in:
@@ -0,0 +1,135 @@
|
|||||||
|
# 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.*
|
||||||
Reference in New Issue
Block a user