
My Work
Solo Project | Technical Designer
March 2022 - May 2022 |Unity
Butterfly Catcher is a project done in four iterations. With each iteration, I expanded on the game. Butterfly Catcher is a multiplayer game where up to four players compete in catching butterflies. The game includes powerups, objectives, and different butterflies to create a unique experience each time. My inspiration for this mini-game came from Animal Crossing's bug-catching mechanic.


About The Game
In Butterfly Catcher, players will have a limited time to catch as many butterflies before time runs out. The player with the highest score will be the winner. The players can choose between three different times of day, morning, afternoon, and dawn. Each time of day will have different types of butterflies with different abilities to catch. Each player will have their collection book, which they can reference to see how many butterflies they have caught.
Programming Butterflies
Butterfly Interface
When it came to creating butterflies, I started with an interface that all butterflies would implement. I then created a Normal Butterfly class; using the decorator pattern, other butterfly classes would delegate basic functions to the Normal Butterfly class. However, where it needs to alter, it would adjust the code to what it needs.
Normal Butterfly Class
The Normal Butterfly class is the main class all other butterfly classes delegate. It takes care of the basic movement and dashing. The way the player will be able to tell the difference between each butterfly is its color. The navmesh agent is moving the butterfly. The move function will find a random point on the navmesh based on the radius of where the butterfly is currently. Afterward, the move function will make the butterfly look at the new position and set its new destination. The dash function will run the move function and increase the speed from one to two seconds.
Spawning / Managing Butterflies
Butterfly Manager
The Butterfly Manager manages all the butterflies. The Butterfly Manager has a list of all spawned butterflies. A coroutine runs and will periodically tell butterflies to move within that list. The script also creates another list called the dash list. If any player is near a butterfly, that specific butterfly is added to the list. Another coroutine runs that will choose a butterfly to dash.



Butterfly Factory
Step 1: Create the butterfly bodies (gameObject).
Step 2: Make normal butterflies through the new function and provide the gameObject body they will be controlling.
Step 3: Create Tiger Butterflies.
Step 4: Create Monarch Butterflies.
Step 5: Create Teleport Butterflies.
Power-Ups
Butterfly Manager
Powerups use the same spawning and interface techniques as the butterfly spawning; the purpose of adding powerups is to add another layer of gameplay. Powerups give the players another way to get an edge over each other, opening more opportunities. The speed-powerup increases the player's speed for a short amount of time. The shield-powerup will allow the player to get hit by the monarch butterfly without getting hit.

Speed Powerup

Shield Powerup
Photon Engine | Multiplayer
When starting a script in the header, you need to add Photon.Pun or Photon.Realtime. When the player enters the game, I first establish a connection between the player and the photon server. From there, the player will either join a lobby or create their lobby. The player who created the lobby is the master client.
Photon allows you to attach a view that watches game objects, and when you call a function through PUNRPC, it will let all non-master clients know they need to update the information.