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
+15 -1
View File
@@ -22,4 +22,18 @@ When prompting an AI about this project, include:
- Flag any Godot 3 vs 4 API differences (e.g., `move_and_slide()` behavior, signal typing).
- If a request needs multiple scenes, describe the scene hierarchy before showing code.
Read `ARCHITECTURE.md` for system boundaries and data flow expectations.
## Handling Ambiguity & Assumptions (Crucial!)
When a request is ambiguous, incomplete, or requires knowledge outside the scope of the provided documents:
1. **DO NOT guess.** Do not write code based on assumptions you cannot validate.
2. **Acknowledge the Gap:** Explicitly state what information is missing or unclear (e.g., "The current architecture does not specify how \`WaveRunner\` handles player death.").
3. **Propose Assumptions:** If a concrete implementation path *must* be shown, list all assumptions made clearly before writing code. Use a dedicated section like:
\`\`\`markdown
**[ASSUMPTIONS MADE]**
1. We assume that the \`PlayerStats\` Resource is accessible from the global scope.
2. We are assuming the signal for enemy death will be named \`mob_killed\`.
\`\`\`
This ensures that the final code provided by AI can be reviewed against project reality before integration.
+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).
+14
View File
@@ -0,0 +1,14 @@
# AudioManager.gd
extends Node
var music_player # Reference to AudioStreamPlayer for background music
func _ready():
print("AudioManager loaded. Ready to play sounds.")
func play_sfx(sound_path: String):
# Logic to play a sound effect
pass
func play_music(stream: AudioStream):
# Logic to set and play background music
pass
+14
View File
@@ -0,0 +1,14 @@
# SettingsManager.gd
extends Node
const SETTINGS_PATH = "user://settings.save"
func save_setting(key: String, value):
print("Saving setting: " + key)
# Logic to serialize and save settings data
pass
func load_setting(key: String):
print("Loading setting: " + key)
# Logic to read saved setting data
return null