Overview
Day 4 focused on pushing the project closer to a complete, playable jam build. A large part of the work went into replacing temporary debug-facing elements with a more readable gameplay HUD, while also improving flow safety around card play and deck shuffling. I also finished the tower upgrade reward pass, expanded the card pool further, locked the enemy roster for the jam scope, and defined the run structure around a fixed 20-wave format. By the end of the day, the game had a full loop from menu to gameplay to win or loss, with restart and pause functionality in place and full start-to-finish test runs working.

Major Accomplishments
- Built the foundation of the actual in-game HUD by adapting the debug HUD into a more player-facing interface.
- Added wave progression and draw interval progress bars to improve gameplay readability.
- Added safeguards to prevent card play and deck manipulation errors during shuffle and play actions.
- Finished implementing the tower upgrade reward set.
- Expanded the card pool with Pierce Shot and Shield.
- Set the run structure to a fixed 20-wave format.
- Added an end screen with win/lose state and run statistics.
- Verified that the full game loop works from menu to gameplay to win/loss, including restart flow and pause menu support.
Systems Developed or Updated
Gameplay HUD
- Displays core run information to the player in a readable format rather than relying on the debug view.
- Started from a copy of the debug HUD and began adapting it into the actual game HUD. Added a wave progress bar with status text showing either the current wave or upgrade mode, added a draw interval progress bar to show when the next card arrives, and adjusted layout to better expose important tower and run information.
- Current state: Functional / Needs Polish
Card Play and Shuffle Safeguards
- Prevents interaction errors while the deck state is changing.
- Added delays and blockers during shuffle to stop cards from being added or played while arrays are being filled. Also implemented an
Is Playing Cardstyle state at card play start and end to prevent overlapping click errors. - Current state: Functional
Enemy Roster Scope
- Defines the enemy archetypes included in the jam build.
- Locked the roster to melee, ranged, and tank enemies, confirming the enemy scope for the project moving forward.
- Current state: Functional
Tower Upgrade Reward System
- Handles upgrade-type rewards that improve tower-related stats between waves.
- Finished implementing the tower upgrade rewards pass. All tower upgrade rewards are now in, though they still need balancing and code review.
- Current state: Functional / Needs Balance
Card Pool Expansion
- Expands the range of player tools available during a run.
- Added Pierce Shot and Shield as new cards, continuing to broaden the card pool beyond the earlier core set.
- Current state: Functional / Needs Balance
Run Structure / Wave Completion
- Defines the overall shape and victory condition of a run.
- Switched to a fixed run length of 20 waves and added tracking variables to support a defined end condition instead of open-ended progression.
- Current state: Functional
End Screen and Run Summary
- Presents the result of a run and key end-of-run statistics.
- Added an end screen for both win and lose conditions showing totals such as kills, damage dealt, and damage received. This gives the run a proper conclusion and supports start-to-finish testing.
- Current state: Functional / Needs Polish

Menu-to-Run Flow
- Controls how the player enters, completes, and restarts runs.
- Verified the game can be launched from the game menu and played fully from start to either loss or victory. Restart flow is functional, and the pause menu is also working.
- Current state: Functional
UI Readability Pass
- Improves readability of gameplay-facing interface elements.
- Tweaked card text size and reward size so key information is easier to read during play and selection.
- Current state: Functional / Needs Polish
Problems Encountered and Solutions
Problem:
Card interactions could overlap or occur while deck arrays were being repopulated during shuffle, creating the risk of invalid state changes and click errors.
Cause:
The player could still interact with card systems while shuffle logic was actively rebuilding the arrays, and card play did not yet have enough protection against overlapping inputs.
Solution:
Added delays and interaction blockers during shuffle, and introduced a play-state flag around card play start and end so multiple overlapping play clicks are prevented.
Current Project State
The project is now in a strong playable prototype phase, very close to a complete jam-ready loop. Core combat, waves, rewards, deck flow, HUD readability, and end-of-run structure are all functioning together, and the game now supports full runs from the menu to either victory or defeat. At this stage, the remaining work is less about building the overall structure and more about polish, balancing, readability, and tightening quality-of-life features around the existing systems.

Next Day Plan
- Do a balancing pass on tower upgrade rewards.
- Review and clean up reward implementation code.
- Continue testing full runs to validate the 20-wave structure.
- Consider adding a restart run button directly in the pause menu.
- Keep refining HUD readability and player-facing information presentation.

