Blue Balls

Last edited: 22 February 2016, 2:41AM


Blue Balls was a pong-inspired game that was made for a freshman class project. After a few years, I made a few additional adjustments in 2015 when I wanted to work on a small personal project on the side. Ultimately however, I decided to retire the game without polishing it completely.


In my Block Buddies writeup, I mentioned that I would refrain from putting any school projects on this site. The exception would be my capstone project that I spent a lot time on, but I'm going to add another one to the list, Blue Balls. Blue Balls was one of my favorite and most fun project that I made over my entire college years.

During my winter quarter of freshman year, I was in a game design class as part of my major curriculum. For our midquarter project, we had to make a game that was pong-inspired. I partnered with Nathan and we spent a couple weeks working on this. Since then, I've shown and played the game with a lot of people, and it's just a really fun, simple, competitive game.

I did pretty much all the heavy lifting for the assignment. Nathan was very inexperienced with Python, Pygame, and programming, so I had to not only do most of the work but correct his mistakes. Granted, I wasn't that familiar with programming either. I think this project was actually my first foray into Python. At the time, I was taking the last series of Java classes offered at UCI, but the new system of classes were all switching to Python.

The coding for this project was very bad, and still is in its current version. At the time, I had no idea how to incorporate classes properly or really handle a game loop properly. The end result was that I had a one page massive 600 line document that handled the entire game. Very difficult to make changes and adjustments, but it seems stable as it is.

I'm not really sure how I came up with the idea. I think it just hit me out the blue, hehe, you could say. I want to say it started as some way to incorporate jumping as the only mechanic. We had platforms that when jumped on gave the respective player a certain a number of points. It was then that I thought of using the background as a way to differentiate points.

Two balls would compete to turn the background completely white or black. I really liked this since we didn't have to use extraneous UI to explain the progress, and it made the game look prettier too. And as for the name of the game, I'm pretty sure that was decided pretty late into the assignment, but it was a funny addition to tie everything together.

And that's pretty much the game. You jumped on platforms in order to accrue points. The higher platforms gave you more points and generally moved faster. The game ended when the background turned completely black or white. Each time the game is rerun, the background color changes to give somewhat of the illusion of changing stages. In particular, blue color stages can be annoying since you can lose track of your ball.

While play testing the game, I really enjoyed playing it. It got extremely competitive playing with others since there was plenty of room to swing from one side to another, and everyone's tensely waiting for someone to make a mistake or to take a risk. Even the crowd has something to cheer for as they see people make a dangerous fall or a crazy jump. Plus the game was really easy to pick up too. It really goes to show how fun simple games with simple mechanics can be.

We actually didn't get full marks on the assignment. Apparently, it wasn't close enough to pong, so we got docked points for our game idea. Whatever. Honestly, this was probably one of the projects I had the most fun in across my entire curriculum. It was really fun thinking up a game idea and actually implementing it.

I think it's really sad that I never got a chance to make a game in class again until my capstone project. To think that I'd never get the creative opportunity to develop a game from scratch from the start of my freshman year to (what should be) the end of my senior year, is just, I think, unacceptable. All my classes have pretty much been theory, theory, theory this, and it's so painful never having the chance to make a game.

I'll close my rant on school here, but again, I'll reiterate that I got so little out of my classes at UCI, specifically the game major related courses. In so few of them did we actually have some creative power to develop and code something. I had to go out of way and spend my free time working on VGDC projects in order to fill that void. Really, you could say I spent 4 years at VGDC, rather than UCI.

Welp, that's in the past now. As for the game, it didn't see much changes for a really long time. I continually showed it to everyone who was interested in my past games I've worked on because it was just really fun. It seemed everyone enjoyed it the most out of all my games, even more than Tatami Galaxies, which I probably spent the most time working on and polishing. The simplistic and quick nature of Blue Balls was quite appealing to players.

Eventually, having shown the game around so much, I was a little sad that it was left in a pretty shabby state, so I wanted to work on improving it. This was around April/May of 2015, so don't think that there was any work done between 2013 and 2015. I made a few changes over a couple days, but got swamped in other things to do. I've been meaning to polish it since then, but it's been stuck in limbo for so long that I decided now I'd just cut the project.

At the time, I was very busy with osu! UCI. I was writing the website, handling tournaments, planning events, preparing for our summer league, along with juggling class in the mean time. Rather than leaving Blue Balls as something hanging around waiting for my attention, I decided I'd retire it for good and concentrate my time elsewhere.

If I ever do work on it again, a possibility since I love the idea, I'll just rewrite it completely from scratch. I've got it all planned out, calling it 2 Blue Balls for the sequel. Pretty good if I might say. As it stands now, I will probably have to rewrite it anyways since the code is so terrible as is.

As for the few days of changes I made, I removed a lot of screens to simplify the game further. No more instructions or title screen, you immediately jump into the game and start playing. The menus looked pretty crappy anyways so better to do away with them. And I also built it into an executable with cx_freeze. Warning, the executable may crash for some computers, since, as a friend figured out on another Python project, the cx_freeze is not up to date.

That's pretty much it. Short and sweet, just like the game. I definitely recommend giving it a try and challenging other people to it. I'm actually almost undefeated across all my games. I've only lost 3 times, if I recall correctly. Twice to George Wang, who's somehow really good at the game. And once to Ben Slupik, who cheesed me after playing with me for some 30+ games. So there's definitely skill and practice involved. Have fun!