Issue #3 Task #3, basic structure
Validate Project / validate (push) Successful in 15s

This commit is contained in:
Andrew Yeet
2026-09-07 15:40:02 -07:00
parent e8386c99d4
commit 15098c887a
5 changed files with 65 additions and 1 deletions
+22
View File
@@ -0,0 +1,22 @@
# 🚀 YeetGeese - Phase 0 Design Summary
**Genre:** Third-Person Over-the-Shoulder Tower Defense
**Core Fantasy:** A lone defender in a farm arena, utilizing powerful projectile geese to defend their base from waves of approaching enemies. The goal is simple but satisfying: yeet and survive!
## 🦢 Core Loop
Enemies spawn → Player maneuvers & aims → **Yeets Goose** (Damage/Stun) → Currency collected (Feathers) → Player upgrades defenses/geese → Wave ends → Repeat with increased difficulty.
## 🎯 Minimum Viable Product (MVP) Scope
| Feature | Detail | Status |
| :--- | :--- | :--- |
| **Arena** | Single, open 3D farm arena. | Defined |
| **Player** | Third-person controller (WASD + Mouse Look). Basic Health System. | Defined |
| **Weapon** | One basic Goose projectile (medium damage, spinning, self-lifetime). | Defined |
| **Enemies** | Two types: **Pigs** (Slow/Tank) & **Chickens** (Fast/Skirmisher). | Defined |
| **Progression** | 5 Waves total. Basic economy (Feathers collected from kills). | Defined |
| **UI/Win/Loss** | Health bar, Feather Count, Wave Counter. Win: Survive 5 waves. Loss: Player HP $\le$ 0. | Defined |
## ⚙️ Technical Foundation
* **Engine:** Godot 4.x (3D, Forward+).
* **Architecture:** Utilize autoloads (`GameState`, `EventBus`, etc.) to manage state centrally and decouple systems.
* **Key Systems:** Input mapping (Movement, Aim, Throw), defined collision layers (Environment, Player, Enemy, Goose, Currency).
+134
View File
@@ -0,0 +1,134 @@
# 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.*