Flower Defense

Grow plants instead of weapons in a 3D tower defense where the environment directly affects your success. Find the perfect spot for each type of plant, balancing elevation, water, unique abilities, and distance from the invading robot army!

Project Info

View on Itch.io

View on Itch.io

Role: Technical Designer

Team Size: 2

Project Length: 3 months

Engine: Unreal 5 (Blueprints/C++)

Key Contributions:

I designed and balanced 5 unique tower abilities and their scaling based on the environment, focusing on making each option viable while providing a sense of progression throughout the game. Each plant needed to counter a different type of enemy while also thriving in a unique environment, making this a multi-faceted challenge.


A good example is the spike-shooting cactus. This was initially the strongest plant in the game, to the point that you could place only cacti and beat every wave. We tried raising the price, but this felt like a bandaid over the core problem— it either removed options from players when they didn't have enough money, or didn't do enough to stop them once they hit lategame. Instead, I designed a multi-part solution to keep cacti strong while encouraging players to invest in a mix of other plants to support them:

  1. Water. Cacti are weak next to water, so I added more! This leaves a couple good spots but prevents you from placing cacti everywhere.
  2. Raised Terrain. Cacti only shoot horizontally, so I raised & lowered more of the terrain.
  3. High-Health Enemies. The biggest strength of a cactus was its AOE damage, so I created a new class of enemy that would spawn in alone but have significantly increased health— something a board of only cacti would struggle against.

I was responsible for all UI layout and implementation with UMG. This included:

  • Buttons for placing towers, dynamically enabled when purchaseable
  • Additional info on button hover
  • A fast-forward/slo-mo widget for adjusting playback speed
  • Animation transitions for start and end of round
  • World-space UI for each plant's current stats

Given this was a team of two, I either directly wrote or collaborated on most of the codebase. In particular, I gained a lot of experience with translating information between C++ and Blueprints, since we started prototyping the project with blueprints and later migrated to a mostly-C++ approach.