Bubble Brawl
Bubble Brawl is a cosy couch co-op game where two players face off with each other as ducks. They must collect bubbles and shoot at each other, or instead use a shield to protect themselves. Each player has five lives, and any lost lives can be replenished by collecting the occasional spawning of health bubble.
Gameplay
Conceptualisation
This game was created for the Global Game Jam 2025, held at our college, with the theme "Bubble" and a period of two days. I was in a team of five and was leading the project.
​​
In my previous attempt at GGJ 24, I made a platformer where the players meet funny characters at certain points that tell a joke for the theme Make me laugh, our game didn't make it to the top 5.
What I learnt from that experience
-
The player's action wasn't directly attached to the funny aspect.
-
The game had 3 levels that were long and difficult to complete in 5 minutes and present it.
-
The concept of the player finding a funny character in his afterlife didn't resonate as funny to the judges
-
The jokes are harder for a senior audience to understand; they weren't universal.
-
It didn't have a unique or cool mechanic attached to it.
​
Based on my experience, I quickly mapped out the constraints I had this time.
​
Initial constraints
​
-
Must use Unity.
-
The theme is Bubble.
-
Prototype-level programming skill.
-
It must be easy to understand and play.​​
-
The concept must resonate with judges (Professors).
-
Must be able to present the game concept within 5 mins(like a pitch), and preferably have one scene.
-
It must have only a single level.
-
Must have a unique concept.
-
The deadline is two days.
​
So I started with an attractive concept related to bubbles, something that we instantly think of when thinking about bubbles: soap, water, tub, rubber ducks!
I decided to play with rubber ducks in a bathtub, and the rubber duck would collect and shoot bubbles. Instead of a multiplayer game and using AI, couch co op seemed fun and in scope. In the same view, both players would be able to see each other.
In team 2 of two knew Unity Engine, and the other two didn't know. So from the two who knew the engine, designed the UI and placed art assets for the game, while they found the perfect sound effect, background score and playtested the game and helped in balancing. I got to work on the implementation of the game.
Prototyping Process
Iteration One
I quickly started a box made of basic cubes and a plane for the water. Then I started with Duck Controller, which is another cube for now and enabled it to move in all four directions. At first, I wanted the player not to be able to rotate the duck unless they move to make it look a little bit more realistic, but figured that it would be used aiming the shot, and that was more important. After a bit of tweaking and adding a rigid body, I wanted to focus on the bubble spawning mechanic, aiming for a random distribution while avoiding overpopulation.

The X and Z ranges indicate the distance from the pivot within which bubbles can spawn, making the bubble spawner a rectangular shape. The bubbles will randomly spawn within min and max time, and the Max bubble attribute will decide the maximum number of bubbles that can exist at a time. The no-spawn radius is the radius of a bubble in which other bubbles cannot spawn.
I decided to go for a 'lives' health system, so I felt it fit the theme of that game and was clearer to the player as to how much health it left and that there was only a fixed damage value if the player got hit.
That's when I added the health bubble, which will restore life. Use the same code as the normal bubble.
​
I then duplicated the script for the second duck and changed the control from WASD to he arrow keys. I could have used inheritance, since it was a game jam, I didn't mind about optimisation.​​

Iteration Two
Now I started working on the bubble behaviour. The bubble has a trigger collider and would detect which duck collided with it and would then call a function in that duck, which would increment the bubble count before destroying itself.
​
Both the ducks now have a max capacity of bubbles that can be stored, and after this, the duck can shoot a bubble in its forward direction. So the duck spawns a bubble with a script that moves forward and gets destroyed, hitting the duck. Although I forgot to destroy the bubble, if it didn't hit the opponent duck, but on collision, the health is subtracted.
Initially, we thought of replacing this mechanic with a spraying bubble that would slowly chip off the opponent's health, but many questions arose, like what if the players keep spraying after collecting one bubble? It would not build up the anticipation of collecting many bubbles before shooting, so the idea was scrapped.
I also wanted to add a defence ability for the ducks since the ducks couldn't move too fast. When pressed, a shield is activated, and the projectile doesn't damage the player for a few seconds. When the shield is activated, a bool is active, and the health doesn't decrease since it checks if the bool is true or not.


Iteration Three
Once the UI for the health and bubble bar was added, sfx was added, and the game was tested out. The project was then merged with the art and UI. From my teammates' side, they brought together the art assets and many ducks that can be chosen from. The starting menu and the UI, title music, exit and pause functionalities, the cutscenes of the ducks quarrelling with the dialogue, 123 countdown and the player win screen are all done by them.
​
Here's the prototype gameplay.