Overview
Day 3 focused on expanding the game from a basic wave-defense loop into something with more tactical variety and better balance. I started with a tuning pass based on playtesting, adjusting energy, hand size, health, and draw pacing to slow the pace down and make decisions more meaningful. From there, most of the work went into enemy variety, with ranged, melee, and tank enemies now functioning as distinct roles with wave-based introduction logic. I also expanded the card pool, improved upgrade safety with clamps, and added early collision handling so enemies behave more cleanly in combat spaces.

Major Accomplishments
- Rebalanced core gameplay values after playtesting, including energy, regeneration, hand size, draw speed, and tower health.
- Added enemy variety with functional melee, ranged, and tank enemy types.
- Implemented weighted enemy spawning so tougher enemy types are introduced gradually across waves.
- Built ranged enemy projectile attacks and got tower damage from projectile overlap working.
- Expanded the card pool from 3 cards to 8 cards.
- Added tracking to verify which cards are both implemented and available in the reward pool.
- Added basic collision avoidance behavior so enemies overlap less during movement.
Systems Developed or Updated
Core Balance Tuning
- Handles the baseline pacing and survivability of the gameplay loop.
- Adjusted max energy, regeneration rate, draw speed, hand size, energy gain on kill, and tower max health based on playtesting observations.
- Current state: Functional / Needs Polish
Upgrade Safety and Value Clamping
- Prevents upgrades from pushing gameplay values into broken or unintended states.
- Added clamps to the upgrade application logic to avoid extreme outcomes such as overly high fire rates or similar overpowered stat values.
- Current state: Functional
Enemy Type System
- Defines distinct enemy roles and behaviors during waves.
- Added melee, ranged, and tank enemy types using a type enum / type number assigned on spawn. Melee enemies rush the tower, ranged enemies stop at attack distance, and tanks move slowly and act as heavier units.
- Current state: Functional
Weighted Enemy Spawn Progression
- Controls which enemy types appear as waves advance.
- Implemented a weighted selection system that increases the spawn chance of ranged and tank enemies depending on wave number, allowing early waves to feature only melee before gradually introducing more complex encounters.
- Current state: Functional
Ranged Enemy Projectile Combat
- Allows ranged enemies to attack the tower from a distance.
- Implemented enemy projectiles, attack range stopping behavior, firing logic, and tower damage through projectile overlap. This now allows ranged enemies to spawn, move into range, stop, fire, and damage the tower properly.
- Current state: Functional / Needs Polish
Card Pool Expansion
- Expands the strategic options available to the player.
- Increased the available card pool from the starting 3 cards to 8 by adding Double Shot, Fire Rate Increase for melee and ranged, Energy Boost, and Stun. For testing, all cards were temporarily added to the starting deck.
- Current state: Functional / Needs Balance
Card Reward Availability Tracking
- Verifies that implemented cards are properly available to the reward system.
- Added a tracker to confirm whether cards are both fully implemented and included in the reward pool, helping prevent missing or invalid reward options.
- Current state: Functional
Enemy Collision Avoidance
- Reduces visual and gameplay issues caused by enemies stacking directly on top of one another.
- Started implementing a rudimentary collision detection / avoidance setup so enemies separate from each other to some degree while moving.
- Current state: Prototype / In Progress
Problems Encountered and Solutions
Problem:
Ranged enemy projectiles were not applying damage correctly to the tower.
Cause:
The projectile appeared to be getting destroyed on overlap before the damage value could be properly used.
Solution:
Added a short delay before destroying the projectile, which allowed the damage to register correctly. The fix works for now and is being kept as a temporary solution.
Problem:
Stat changes affecting timers did not appear to update the actual active timer behavior.
Cause:
The current timer setup may not be reacting dynamically to variable changes after the timer has already been initialized.
Solution:
Issue identified during implementation and flagged for further investigation. No final fix has been completed yet.
Current Project State
The project is now moving out of its earliest systems-foundation phase and into a more feature-complete gameplay implementation stage. The core loop is already in place, and it now includes better pacing, multiple enemy archetypes, ranged combat behavior, a growing card pool, and early combat readability improvements. At this point, the game is becoming more like a playable tactical prototype rather than just a set of disconnected systems, though several areas still need balancing, cleanup, and refinement before they can be considered stable.

Next Day Plan
- Investigate how timer-driven systems respond to stat changes so fire-rate-related cards and upgrades work correctly.
- Remove the temporary full-card starting deck setup once card testing is complete.
- Continue balancing card costs and values as more cards are fully implemented.
- Refine enemy readability and combat distinction beyond the current color-based differences.
- Keep improving enemy collision and spacing behavior so movement looks cleaner in larger waves.

