Flower Defense (2025)

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

Itch.io Icon

Team Size: 2

Roles: Lead Designer, Programmer

Project Length: 3 months

Engine: Unreal 5 (Blueprints/C++)

Key Contributions:

Programming & Design:

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. This was actually somewhat challenging, as each plant needed to have a different type of enemy it was good against, while also preferring a different environment (distance from water + elevation).


For example, the spike-shooting cactus 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 and had plenty of coins. We instead decided on a multi-part solution that kept cacti strong, but required a mix of other plants to support them:

  1. Water. Cacti are weak next to water, so we added more! This leaves a couple good spots but prevents you from placing cacti everywhere.
  2. Raised Terrain. Cacti only shoot horizontally, so we raised & lowered more of the terrain.
  3. High-Health Enemies. The biggest strength of a cactus was its AOE damage, so we added a few single enemies with really high health, which cacti struggle against on their own.

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.

Art:

This game features a weather system that affects the layout of the map, so I composed interactive music to smoothly transition between each type of weather. I wrote a simple base track, and then built a vertical layer for the two weather extremes— sun and heavy rain. To create the in-between state, light rain, I drew elements from each extreme, allowing me to transition across the full spectrum without a single noticeable break. To finish, I also added a layer of percussion that plays while you're in combat, and fades out when you're between rounds.


As a programmer, I also did the implementation for this dynamic audio system, connecting each change in weather or game state to its associated musical cue.

I created 3D models and textures for 5 different plant types, aiming for a vibrant, low-poly style:

Flower Defense 3D Models