Bloom Defenders – Tower Defense Game

A tower defense-style game inspired by Plants vs. Zombies, where players strategically place plants to defend a windmill from waves of enemies.

Tech Stack: Unity, C#, Git/GitHub

Type: Group Project

Overview

Bloom Defenders is a strategy based tower defense game where the players aims to defend their base (in this case the windmill) by placing offensive and defensive plant objects. Enemies spawn in increasing difficulty across levels. Players are required to manage their resources, including coins earned, plants placed and windmill base health strategically, and plan for escalating threats in the form of forest animals.

The game focuses on player decision making, wave management and spatial planning.

My Role & Contributions

I was responsible for gameplay systems and user experience improvements, focusing on making the game more interactive and intuitive

Key contributions:

  • Implemented enemy coin drop system (unique to enemy type)
  • Built the enemy wave countdown system
  • Designed and implemented UI elements
    • Windmill health bar
    • Enemy wave length bar
    • Instructional overlays
  • Developed an instructional text system with timed triggers
  • Improved project organization and Git workflow
  • Led multiple milestone checkpoint documents and video process documentation


Key Features

Dynamic Coin Drop System 💰

Enemies drop different coin summations based on difficulty level (e.g. small coins for basic enemies, stacked coins for stronger ones). Each coin drop also features a spinning drop animation and adjusted positioning as well as a signally sound to ensure drops are visually clear and accessible.

Enemy Wave Tracking System 🐇

A visual enemy wave bar displays remaining enemies and includes a bunny icon (the lowest level enemy) for clarity. This allows players a real time tracker to help plan their strategy during each wave.

Instructional UI System 📝

I designed and implemented multiple fade-in/out instructional overlays to guide players through gameplay:

  • Level start screens
  • Shop instructions
  • Coin collection tips
  • Wave start notifications

Controlled through a centralized game manager to ensure proper timing and flow.


Technical Details

  • Developed in Unity using C# scripts
  • Used a Game Manager system to control UI timing and game flow
  • Implemented event-based triggers for instructional overlays
  • Integrated and customized Unity store assets
  • Used GitHub for version control, including branching and merge conflict resolution.

Challenges & Solutions

Challenge: UI timing & player guidance

One of the biggest challenges was ensuring players understood what to do without overwhelming them.

Solution:

I built a system of timed instructional overlays (fade-in/out text screens) trigged at specific gameplay moments. This allowed us to guide the player step-by-step without overwhelming them before playing or interrupting gameplay.


Challenge: Visual clarity and consistency of in-game elements

Coin drops and UI elements initially had issues with positioning, scaling, and visibility as well as a general inconsistency of visual elements throughout the game.

Solution:

Worked through different iterations of coin size, drop height and location to prevent clipping into terrain.

Reviewed UI scaling, positioning and design choices to ensure layout and color palette consistency.

Adjusted font sizes, placement and color adjustments for readability and consistency throughout all screens.


Challenge: Asset loss and overwriting in Git workflow

During development our team ran into issues where different members had inconsistent local asset files. When pushing their changes it would overwrite the project and unintentionally delete assets they didn’t have locally, while other assets were never fully committed at all. Causing parts of the game (including my work) to disappear or unexpectedly break.

overwriting each others work due to inconsistencies

Solution:

I resolved this by reverting to a stable previous version of the project and then manually re-integrating newer changes to restore assets and functionality.

I also helped improve our workflow by encouraging better Git practices and a more organized file system.

This experience gave me a much stronger understanding of version control pitfalls in collaborative environments and how to mitigate them.


What I Learned

  • How to design systems that balance game logic and user experience
  • The importance of clear and concise player onboarding in game design
  • Practical experience with Git collaboration and conflict resolution
  • How to iterate on features based on gameplay usability issues


Future Improvements

  • Improve enemy pathfinding to better avoid terrain collision issues
  • Add clearer placement indicators for plant positioning
  • Refine sound design and balancing
  • Expand level system and difficulty scaling

Discover more from kelseyhkeller

Subscribe now to keep reading and get access to the full archive.

Continue reading