A lighthearted zombie tower defense game with a click-to-kill twist, built with Godot 4.
๐งโโ๏ธ Defend helpless survivors from waves of zombies using nothing but your mouse and some scrap-built defenses. Click zombies for scrap, build automated turrets, and make permanent tech tree choices that shape your playstyle.
Zom Nom Defense is a lo-fi, chaotic tower defense/clicker hybrid where:
- You click zombies to deal manual damage and earn "scrap"
- You spend scrap to place obstacles and turrets to automate defense
- You defend absurd scenarios (person on a car, survivor in a hammock, inflatable pool party)
- You unlock tech via achievements and level up through an XP system
- You make permanent strategic choices in a branching tech tree (choose Rapid Fire OR Heavy Damage - forever!)
Genre: Tower Defense / Clicker Hybrid
Platform: PC (Steam planned)
Tone: Silly but strategic - light-hearted post-apocalypse chaos
This is a work-in-progress passion project. Core systems are functional, but many features and content are still in development. See the Development Status section for details.
This game is being developed live on stream!
๐ด Twitch: twitch.tv/saebyn
๐
Schedule: Sunday mornings
๐ฅ VODs: @saebynVODs on YouTube
Come hang out, watch the chaos unfold, and see how the sausage gets made! You might even witness the birth of a new absurd level scenario or a hilariously broken bug. ๐งโโ๏ธโจ
- Game Design Document - Complete vision for the game
- Task Planning - Development roadmap (56 issues across 6 phases)
- Tech Tree Design - Mutually exclusive branch system
- Logging System - How the Logger autoload works
What's Working Now:
- โ Click-to-damage enemies with satisfying feedback
- โ Scrap currency system (earn from kills, spend on obstacles)
- โ XP and leveling system (CurrencyManager)
- โ Basic Enemy AI with pathfinding navigation
- โ Wave-based enemy spawning
- โ Obstacle placement (walls and turrets)
- โ Automated turret targeting and shooting
- โ Component-based architecture (Health, Attack, Buff systems)
- โ UI framework (hotbar, currency display, stats tracking)
What's Coming Next (see Task Planning):
- ๐ Achievement system (unlock tech via gameplay)
- ๐ Tech tree with mutually exclusive branches
- ๐ Player progression persistence (save/load)
- ๐ Multiple levels with absurd scenarios
- ๐ Tower upgrades (3-5 tiers with visual progression)
- ๐ Support towers (buff nearby turrets)
- ๐ Challenge modes and endless mode
- ๐ More enemy variety (Scouts, Tanks, Sprinters, Bosses) and more complex AI
- ๐ Twitch integration for audience interaction
- ๐ Polish: sound effects, music, visual effects
- ๐ Minimap
Controls are fully rebindable in-game via the Settings menu.
- WARS: Move camera (up/left/right/down)
- Q/E: Rotate camera (90ยฐ increments)
- Mouse Wheel: Zoom in/out
- Left Click: Attack enemies manually and collect scrapable objects
- Hotbar (1-9): Select obstacle to place
- Left Click (with obstacle selected): Place obstacle
- Right Click: Cancel placement
- Godot Engine 4.4 or later
- Clone this repository
- Open the project in Godot by importing the
project.godot
file - Press F5 or click the "Play" button to run the game
This project uses a feature-based folder structure that prioritizes intuitive organization and co-location of related files. The structure is designed to scale from prototype to full game with 15+ enemy types, 20+ obstacle types, multiple levels, and complex progression systems.
Assets/ # Pure art and audio assets
Common/ # Reusable components and shared UI elements
Config/ # Data-driven configuration files (.tres resources)
Entities/ # Game objects (enemies, obstacles, player systems)
Localization/ # Translation files
Stages/ # Scenes and levels (main game, menus, levels)
Utilities/ # Systems, autoloads, and helper scripts
Related files stay together in their own folders:
Common/Effects/shake_effect/
โโโ shake_effect.tscn
โโโ shake_effect.gd
Game entities use a composition approach:
- Templates (
Entities/*/Templates/
) - Reusable scene structure and behavior - Configs (
Config/*/
) - Data-driven parameters and stats - Concrete (
Entities/*/Concrete/
) - Specific instances combining templates with configs
Assets/
- Art, audio, models (no code)Config/
- Pure data files for balancing and contentCommon/
- Truly reusable components across entitiesUtilities/
- Global systems and autoloadsEntities/
- Game-specific objects with their logicStages/
- Complete scenes and levels
Game state and coordination is handled through autoloaded singletons:
- Logger - Centralized logging with scope-based filtering
- CurrencyManager - Player currency tracking and transactions
- GameManager - Game state transitions and high-level coordination
Config/Enemies/
โโโ grunt_config.tres # Health: 100, Speed: 2.0, Damage: 15
โโโ scout_config.tres # Health: 50, Speed: 4.0, Damage: 10
Entities/Enemies/
โโโ Templates/
โ โโโ base_enemy/
โ โโโ base_enemy.tscn # Common enemy structure
โ โโโ base_enemy.gd # Common enemy behavior
โโโ Concrete/
โโโ grunt/
โ โโโ grunt.tscn # base_enemy + grunt_config
โโโ scout/
โโโ scout.tscn # base_enemy + scout_config
- Intuitive navigation - Related files are always together
- Scalable - Easy to add new enemy types, levels, and features
- Data-driven - Non-programmers can create content via config files
- Team-friendly - Clear separation of artist, designer, and programmer work areas
- Maintainable - No hunting across multiple folders for related files
This structure supports the game's progression systems (achievements, tech trees, multiple save slots), content variety (levels, enemies, obstacles), and planned features while keeping the codebase organized and approachable.
Data-Driven Design: Game content (enemies, obstacles, tech tree) uses .tres
resource files, allowing non-programmers to create and balance content without touching code.
Component-Based Architecture: Reusable components (Health, Attack, Buff) can be mixed and matched to create diverse game entities.
Meaningful Choices: The tech tree features mutually exclusive branches - choosing Rapid Fire locks out Heavy Damage permanently (per save slot), creating distinct playstyles and encouraging replayability.
Multiple Save Slots: Like Factorio, players can maintain 3+ parallel playthroughs to explore different tech tree paths.
Achievement Split:
- In-game achievements reset per save slot (used to unlock tech)
- Steam achievements unlock globally and permanently
This is a part-time passion project worked on inconsistently. No timeline expectations - just methodical progress through well-defined phases.
Current Phase: Phase 1 - Foundation Systems (achievements, tech tree, player progression persistence)
See the Task Planning document for the complete roadmap.
Technical Foundation: Solid component architecture, resource-based configuration, autoload singletons for game state management.
Content Status: Core systems functional, progression mechanics in development, content creation ongoing.
This is a personal learning project worked on publicly. While it's not actively seeking contributors, feedback and suggestions are welcome through issues!
Useful Contributions:
- Bug reports with reproduction steps
- Balance feedback (when more content is playable)
- Design suggestions for tech tree, achievements, or levels
- Playtesting feedback
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
Because zombies go "nom nom nom" and puns are mandatory in lighthearted apocalypse games. ๐งโโ๏ธ๐
Tagline: Click. Aim. Survive.
Built with Godot 4.4 | Repo: github.com/saebyn/zom-nom-defense