Files
YeetGeese/AI Docs/YeetGeese_Design_Document.md
T
Andrew Yeet 639c11ad9c
Validate Project / validate (push) Successful in 16s
Adding a basic game design doc
2026-09-04 13:27:15 -07:00

4.6 KiB
Raw Blame History

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: 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.