Back to My Portfolio

Blobcano

Cartoon Last-Man Standing Arena Brawler

You are a blob in a volcanic arena... The floor is lava and rocks fall from the sky. You grapple between rocks, avoiding death at the bottom and climbing to outmaneuver your opponents and gain the higher ground so that you can punch them into the lava! Do everything you can to be the last blob standing!

The Game

Blobcano is a 2-4 player cartoon-style arena brawler made in Unity C# as my Senior Capstone Project at UC Irvine. Capstone was a two-quarter class in which we worked on small teams of four to seven people to develop a game from ground-zero in twenty weeks with the help of industry mentors, from companies such as Blizzard, Amazon, etc. The team consisted of seven students, five of the others were in the capstone class with me, and Tori was an artist that we had had on previous projects that we asked to help us during our second quarter. Our mentors were Darryl Despie and Ben Deane, two senior-level programmers at Blizzard Entertainment.

The project was going well throughout the first quarter, often far surpassing the benchmarks that our professor had set for the teams, and at the beginning of the second quarter, we discovered an interesting feature in the game where you could connect to multiple other blobs to form chains and navigate together throughout the arena. With the Global Game Jam approaching, we decided to (with the exception of Brad, who decided to work on a different game with his friends) make a game based off of the mechanic we had found. And so, ElecTrio was born. You can read more about it on its project page, but in short we ended up winning the iThrive prize for the Find The Kind diversifier as well as the best design for a total of $525 (split evenly between the team).

Our professor, who also runs the Global Game Jam site at UC Irvine, loved ElecTrio so much that he urged us to switch development in our Capstone class from Blobcano to ElecTrio. After some debate between our team, we decided to wrap up development on Blobcano and switch to ElecTrio for the remaining eight weeks of the quarter. However, Blobcano had reached a state that was pretty much feature complete and polished, so at our end of the year showcase, we were able to show both games.

The Team

  • Projects
  • Producer: Luke Lohden
  • Programmers: Jeffrey Araki, Brad Guerrero, Quinn Levine
  • Designers: Jeffrey Araki, Quinn Levine, Luke Lohden
  • Audio & Music: Adi Iyer
  • Artists: Matt Nguyen, Tori Serrano
  • The Lessons

    In terms of design, this project taught me a lot about scope and polish. We started with simple mechanics that we were able to flesh out quickly, and we actually spent a lot of the development time refining and improving our base concept rather than building new systems. This was substantially different from a lot of my other projects, as the ideas generally started out pretty complex and we had to figure out our mechanics design throughout the development cycle instead of at the beginning.

    Programming-wise, I also learned a lot. It was my first time working with bumpmaps in Unity, which we used to give our 2D elements depth that would react with lighting. This was used throughout the game but also on the title screen, to give the title a more realistic look and feel. I also built all of the particle systems, including the lava, fireball, rock breaking, player hit, etc.

    It was also my first time designing my own data structure to solve a problem. I made what I called a UniqueLoop using a dictionary and a circular linked-list to solve the problem of players being able to select the same color in the Character Select Screen (think Super Smash Bros). The way it worked was simple. There was the loop (the circular-linked list) and the dictionary, which held the association between ids and a particular linked list node. The data structure had three callable functions: GetNextItem(id), GetPreviousItem(id), and ReturnItem(id). GetNextItem(id) would check out the next item in the loop that wasn't already checked out to the given id, GetPreviousItem(id) would give the previous item, and ReturnItem(id) would return the item checked out to the id back to the loop (by deleting the key from the dictionary; the loop was never actually altered). While used to solve this particular issue, UniqueLoop was also used elsewhere in the game simply as a loopable structure, such as the Game Mode Selection Screen.

    Additionally, I designed and implemented an efficient procedural rock spawning system that allowed for precise control over spawning rocks into different bins, and recycled GameObjects using a pool. This was one of the main systems of the game, and it went through many different iterations until we finally arrived at this one. It allowed us to choose the distribution of rocks over the bins (and the number of bins, which was the screenspace divided evenly; we had seven bins), the spawn frequency of the different types of rocks (only breakable, lava, and normal at the end, but we had other rock types throughout development), and the spawnrate (which we lowered as the game went on). Additionally, all of the rocks were instantiated at the beginning of the game, and deactivated once they went offscreen or were destroyed instead of having a system that destroyed the GameObjects and reinstantiated new rocks. This was a way of avoiding expensive calls to create new GameObjects and only switching the features that mattered to us (the rock sprite, scale, and rotation).

    One thing that I was particularly proud of was the user experience design decisions that I created and implemented in Blobcano. Most notably, the idea to allow the players to play around with the controls in the Character Select Screen after they locked in their color was a successful way of letting players learn our game without having to create a tutorial. Furthermore, I created a Practice game mode in which there were nine static rocks and the floor was touchable, so that players could also learn that way. These two modes of learning were quite successful, as players were able to quickly learn the basics of our game without having to read and play through a full tutorial.

    The last thing I wanted to touch on isn't in the video or the GIF, as it only ended up working on Windows for reasons still unknown. I researched and was able to implement blob-like physics using some tricks with SpringJoints and shaders. It definitely gave the characters more life and made them actually feel like blobs. However, this shader did not work on Mac (which was used for the video and GIF), so you will have to download the game (which is the Windows build) to see this.