top of page
SS_1.PNG
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. 

SS_2.PNG
SS_3.PNG
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.

Normal vs Tiger Butterfly

The Tiger Butterfly class delegates all its functions to the normal class. The main difference between these two scripts is that the Tiger Butterfly can move faster and dash farther.

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.

ButterflyMana.PNG
Factory.PNG
BF.PNG

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.

SpeedPU.PNG
Speed Powerup
ShieldPU.PNG
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. 

©2025 by Jessica Caplova 

bottom of page