Botanical Bots is my most cherished project. Even with a small team, it was incredibly enjoyable, and I learned numerous new skills. I discovered how to create an ability system, various enemies and bosses, a shop, functional UI, working animations and blend spaces, developed cutscenes, and much more. This marked the final project of my first year at GLU. I collaborated with one developer and one artist, competing with other groups and securing a second-place position. I handled most of the programming, designed many gameplay elements, and served as the scrummaster. This project taught me a great deal, and we were immensely proud of the final outcome.
👤 Role: Game Developer and Designer
👥Team Size: 3
⏱️ Time Frame: 8 Weeks
⚙️ Engine: Unity (C#)
Everything I did outside of programming:
Designed a large part of the game, levels and story.
Worked with the artist to add all the amazing animations and assets.
Created In-Engine and Out-Engine cutscenes.
Created the gameplay trailer.
Everything I Programmed:
All the pickups (Medkit, armorpack and ammopack)
All the enemies and bosses (AI, pathfinding, abilities and health) X
A shop for the player to buy new weapons
A save system that saves the info on your pc
A payload system
A health and damage system
All the player abilities (Thorn trap, grenade and healing tree)
A weaponwheel and inventory system
All the UI elements
A wave system
A soundmanager
A dialogue system
Camera effects
Some weapons (Minigun and Katana)
We wanted the player to have many options when it comes to fighting enemies, so we decided to give the player several abilities. These abilities are not available at the start but are unlocked as the player progresses through the game. Some abilities must be unlocked to advance the game, while others are optional and can be discovered through exploration.
The first ability I created was the Thorn Trap. When you select this ability, you can choose a location with your mouse where you want to place it. If you select a location, a thorny plant will emerge from the ground, slowing and damaging enemies. When the ability is used, the thorn trap will be instantiated at the player's mouse position and will follow it. You place it by pressing the left mouse button; pressing the right mouse button cancels the ability. A script on the thorn trap checks if it is colliding with any objects that obstruct its placement. If it is obstructed, it cannot be placed.
The second ability is a Grenade. When you use this ability, a grenade is instantiated and launched toward the mouse location. It then explodes and checks if any enemies are in the area to damage them. The third ability is a Blossom Tree that heals you in pulses. The placement of the Blossom Tree works the same way as the Thorn Trap.
The player can buy a variety of weapons, including a shotgun, assault rifle, minigun, and even a katana. To manage these weapons, we needed a way for the player to switch between them efficiently. We wanted the player to have access to all their weapons at any time, so I created a weapon wheel where the player can see and select all the weapons they currently possess. It was challenging to implement, but with some help, I got it working, and I am very proud of the result.
Whenever you hold down the tab button, the weapon wheel opens and time slows down. When you unlock a new weapon, it is added to the wheel. By hovering over a weapon with your mouse, the equip function for that weapon is called, allowing you to switch between weapons quickly.
I added a few animations and sound effects to the slots to give the player enjoyable feedback, and the selected weapon is outlined. The system is highly modular, so we can create a new weapon, and it will automatically be added to the weapon wheel when unlocked.
The miniboss is another feature I am very proud of. To create an exciting end to the first level, so we created a miniboss. The player battles a robot they meet at the start of the game, now overtaken by plants and hostile. This miniboss moves slowly and doesn't cover much ground but attacks with a minigun that has a wide spread. To prevent the player from easily circling the boss without getting hit, I designed a counter ability.
When the boss uses its counter ability, it stomps on the ground, creating a long row of vines across the level. This blocks the player from circling the boss, as the vines slow and damage the player. Designing this ability was a lot of fun. I couldn't generate the entire vine in one piece, as I didn't want it to pass through walls. Instead, I created a prefab of a small vine section. The boss checks how far it is to an obstacle and spawns the vine pieces one by one until it reaches that point. I added some animations, and now it looks pretty cool.
Another problem that I encountered creating the enemies is that my scripts became very messy. Given that some enemies and bosses in the game have a lot of states, my scripts were becoming cluttered and lengthy. To address this, I developed a state machine where each state is encapsulated in its own script, making each one independent and clean.