All Hail the Ball
All Hail the Ball is a small arcade survival game in which the player must pull, flick, and slap a tetherball to hit objectives and avoid hazards. The Ball is tethered to the center of the play space, and is constantly shrinking at a slow rate. Hitting lighter color hazards grows the ball, while hitting darker colored hazards shrinks it further. Levels changed based on the amount of hazards you've hit.
This project was completed in a Unity prototyping and development class in about three weeks. At the time, I was still eager to see what I could do to push the boundaries of player controllers and objectives, and so I came up with an odd idea for a physics control tethered to a center point. Heavy inspiration was drawn from the game Super Hexagon.
I have been a pretty big fan of Super Hexagon ever since I first played it in 2014. Sure, at a glance the game is made for psychos, with its flashing lights, absurd affordances, and notoriously difficulty. But something possessed me, truly and utterly to want to beat it. All I had to do was have my little triangle survive for sixty seconds on each of the game's six levels and I would get to see what was at the end. See the true genius of that game was that once one had survived, they got to see the audiovisual hellscape they'd been playing on turned into something brand new. Let me tell you, the ending for that game does not disappoint.
Tasked with creating a new prototype for my game development course, I wanted to channel just a bit of that energy that Super Hexagon had, while making it just a bit more fun and forgiving (and less seizure inducing.) The basic premise started with a ball in a 3D space, that the player could smack, pull, and fling about to hit targets. I wanted the ball to be inherently fun to control and mess with. My second goal was to bring that audio visual experience to the forefront again, and so I set forth with these goals in mind.
Building it Out
With a goal in mind, I set off to build out the system's I'd need. There were three major systems that I needed in order to make this game functional.
First off, I needed to build out the character controller -- a more difficult task given the physics based movement I was intent on. I would need to take into account the position of the player's mouse and then translate that to a 2D plane on which the ball actually sat... In its own 3D space. Once that location was pinged, the ball would be slowly dragged towards that point, with the tether, a built in unity feature, slowly pulling against. The secondary controller would take into account a 'flick', if the player had clicked and quickly flicked their mouse away it would try to change the direct velocity of the ball to match that of the player mouse. This was.... Finicky at best, and would become probably the weakest part of the game as a whole. Not only was the flick not a consistent maneuver, it was a dangerous one. The ball was pretty much impossible to control once it had been launched, and while it was slower, it was always safer and more accurate to simply drag the ball out to its desired point.
Building this out was much easier than I thought it would be. After some research online, I was able to determine that you could always measure the volume of what was currently going through Unity's audio system. From here, it was simply translating that data into visual expressions. The basic premise of the system is that I could scale, or take the color of something else, and give it a range, a threshold of activation, and a dampening number. The most obvious usage of it is in the 'enemy' square that serves as the game's backdrop, with its panels rumbling to the beat of the music. By making sure that the variables were all different for each colored panel, you could create very different looking effects and reactions. If you pay close attention, you can see that I change those each time the level changes.
This game needs to track a lot of data points in order to attain that smooth Super Hexagon look that I wanted. First off, it would need to track a variety of color swatches that it would switch on level progression. It would save out collections of Audio Visualizer data as well, and load those. And it would need to also modify the 'level' prefabs to increase their speed and add some semblance of greater difficulty as the game went on. I built this into one all encompassing system that would apply these variables to the in game objects upon the player reaching various thresholds in the game, notably at eliminating 50, and 100 obstacles. These obstacles were instantiated randomly from a set gallery of prefabs, which actually made building out new 'levels' quite easy, though given my time constraints I wasn't able to get into the weeds much as I wished.
All Hail the Ball is easily one of my favorite prototypes that I've produced. Its weakest point is its character controller which is finicky and inconsistent, coupled with the lack of variety in actual level design makes for a middling experience at best. But like its inspiration, Super Hexagon, I think the game succeeded at its goal of being a fun audio visual experience. Rare is it that someone doesn't go 'whoa' when they see the visuals, the thumping music, the ethereal sounds that play as you consume obstacles. The curated selection of color palettes, songs, and how they interact with the game experience comes across to me as one of my most impactful experiences. I would love to return to this game, to make it a one off mobile app -- but unfortunately the project files were lost when my hard drive kicked the bucket in 2020. That said, I've still got all the systems bouncing about in my head, so keep a look out for All Hail the Return of the Ball sometime soon.