Ritual of Vitriol: A Global Game Jam Postmortem

This past weekend was my second time doing the Global Game Jam. Last year, I was on a team of five, but this year, I wanted to challenge myself by going solo. In a period of 48 hours, I created the game Ritual of Vitriol, a game about clicking the downvote button on Reddit.

The theme this year was “ritual,” and I decided to interpret “ritual” as daily routine. During the brainstorming session, the phrase “Virtual Reality” came up, and I said “what about Viritual Reality” somewhat jokingly. But then, this pun made me think of the word “vitriol,” which means harsh criticism. This eventually led to downvotes and Reddit, which is the theme for my game. The game was pretty successful and received an honorable mention from the judges, and playing the game was actually fun.I want to use this post to discuss what went well, and what I could have done better during this game jam.

Things That Went Well

Because I was working alone, I didn’t want to over-scope my game. Thus I started out with something like Cookie Clicker, except with a minimalist down arrow instead of a cookie. The sole objective of the game was to click on the downvote arrow, and my objective was to make the act of clicking as fun as possible.

I took inspiration of a game that I encountered during LD34 called Very Hungry SNAKE. The first time I started playing that game, I had the oh-this-is-just-a-clone-of-some-existing-game feeling, but as I picked up a special powerup, I was surprised at what else the game had to offer. It wasn’t as intense as the feeling I got from playing Candy Box 2 for the first time, but it was similar, and I wanted to recreate that feeling in my game.

Both of the games mentioned start out super simple, then introduce some unexpected twist that is fun to experience. In my case I started with a large stationary downvote arrow, and once you click it enough times, it starts to move down off the screen, smaller downvotes and upvotes start flying around, and the game suddenly becomes more interesting (see video for details).

Designing the Interest Curve
Because I scoped my game well and the mechanic of my game was so simple, I had a playable version by the end of Friday night. I spent almost all of Saturday and Sunday on polishing and improving the game. A large amount of this time was spent thinking about interest curves. An interest curve is a plot of how “intense” a game is versus the amount of skill you have. For a game this simple, your skill correlates closely to how much time you spend playing. An ideal interest curve should increase overall, but have peaks and valleys.

An interesting example of designing an interest curve can be seen in the EXP tables for Tree of Savior. The drops in the EXP curve at level 47, 87, and so on are valleys in the interest curve. These valleys provide breaks for the player and adds a refreshing moment in the gameplay.

For my game, I took a similar approach. Initially the game starts off slow, but it quickly ramps up. Then there is a break, which then ramps up again, and so on. The different “levels” of gameplay is determined by how many downvotes you have clicked during the game, and each time you progress to a new level, the “yay” sound effect plays. Below is a detailed list of every level in the game with a description of each level:

Downvotes

Description

0-10

A large stationary downvote in the center of the screen. This serves as a tutorial for the player, and it creates the initial part of the “Candy Box Effect.” Initially, the downvote range was from 0-25, but this was changed to 0-10 because people got bored before reaching 25 clicks.

11-25

Downvotes start to spawn from the top and slowly move down the screen. The main purpose for this stage is to introduce the fact that downvotes can move. This also completes the “Candy Box Effect” which is set up by the previous level.

26-50

Upvotes are introduced for the first time. Upvotes appear over downvotes, and block you from clicking them, and they add a feeling of “danger” in the game.

51-70

The speed and spawn rate is increased. This is the beginning of the first difficulty ramp.

71-100

The speed and spawn rate increase even more.

101-130

The speed and spawn rate increase even more. In addition, the HP drain is doubled. At this point, most first time players have lost already. However, because of the quick ramp, most players who reach here end up trying again. (The increased HP drain is a sneaky way of killing off players without them noticing. Most of them will get past this part within their next few tries.)

131-165

The speed is decreased, but the spawn rate stays the same. At this point, large, dark-orange upvotes are introduced. These upvotes appear behind the downvotes, so if you’re clicking the downvotes, they have no effect. These new upvotes have 2 purposes: one is to serve as a penalty for missing a downvote. Their second purpose is to increase the amount of orange on screen, which makes the game feel more intense. The presence of these new upvotes combined with the decreased speed of other object results in more objects appearing on screen which increases the intensity of this stage.

166-200

Large upvotes no longer spawn. Speed and spawn rate is reset. This is the first valley in the interest curve and serves as a break for the player. I also use this as an opportunity to introduce upvotes and downvotes that move diagonally.

201-230

The speed and spawn rate is increased. This is the beginning of the second difficulty ramp.

231-250

The speed, spawn rate, and HP drain is increased. In addition, the size of the arrows are decreased, and the penalty for clicking an upvote is increased. However, the HP gain for clicking a downvote is increased to compensate for the increased HP penalties. This stage usually does not last long because a downvote from the previous stage lasts long enough for you to get to 251 clicks. The true purpose of this stage is to introduce smaller arrows, while teaching players to take advantage of the easier to click arrows.

251-280

The speed and spawn rate is increased. The arrow size is also increased. The HP drain and HP gain is reset to initial values.

281-320

The speed and spawn rate is increased further. Arrow size is also increased. Large upvotes start to spawn again.

321-360

Large upvotes become even larger, which increases the intensity even more.

361-400

The speed, spawn rate, and size is reset to base values. Large upvotes stop spawning. This is the second valley in the interest curve. I use this as an opportunity to introduce the last mechanic in the game: upvotes and downvotes can now spawn from all sides of the screen and move in all directions.

451-500

The speed and spawn rate is increased, and the size is decreased. This is the beginning of the final difficulty ramp.

500+

The speed and spawn rate is greatly increased, and the size is decreased further. The HP drain and HP penalty for clicking an upvote is greatly increased as well, and the HP gain is not increased as compensation. As the last part of the game, this level is intentionally hard. Given more time, I would have liked to balance this stage a bit better.

Polish and “Juice”
In addition to designing the interest curve, I also spent a lot of time on adding juice to the game. Because my game is so simple, a ton of juice is needed to make the game look and feel more appealing.

During my past projects, I have noticed that there are some scripts that I use over and over again. I have refactored those scripts into a separate, light-weight library that I can use in future projects. By using this library, adding juice took very little code during the actual game jam. The code isn’t anything particularly hard to write, but during a game jam, anything that reduces the amount of things you have to do helps (especially since I was alone).

Almost everything in my game has some form of juiciness added. Here are some of the things that I did to increase the juiciness of my game:

All arrows compress a little when you click on them. Afterward, they spawn an expanding effect that fades out.

All arrows create a sound effect when clicked on. The downvote sound effect was inspired by the Mario coin sound.

The background changes color with your HP. In addition to looking cool, this also lets you know how well you’re doing without having to look at the HP bar at the top of the screen.

The squares in the background respond to all in game sounds. There is also a background music selector in the lower right corner with an equalizer effect.

The squares in the background rotate and zoom in and out slowly to create a feeling of depth.

There is a sound effect for clicking through screen. (This wasn’t actually audible during the showcase though.)

The “yay” sound effect adds some more humor to the already ridiculous premise of the game.

The custom cursor consists of two parts rotating in opposite directions.

The custom cursor compresses a little when you click, and it also creates a particle effect.

The entries in the high score table light up and flash.

The Highscore Table
The most important part of this game is the high score table I added at the end of the second day. I originally didn’t want to do it, since it would involve quite a bit of coding, but because multiple people requested it, I decided to add it. That was definitely the right choice to make.

What I didn’t realize at the time is that a high score table creates a competitive feeling in the game and gives people a reason to play. I realized this for the first time during the showcase, when people would play my game multiple times just to beat their friends on the high score table. The highest score recorded was over 570 downvotes! The player who reached that high score played at least 10 times. For something that didn’t affect the gameplay at all, I was surprised at how much better my game became after I added it.

It was really satisfying seeing people come back to my game again and again to play, since at that point, I knew I had created something fun.

Things That I Could’ve Done Better

As this is a Game Jam game made in a period of 48 hours, there are tons of areas where it can improve. Obviously, there are a few bugs which need to be fixed (the high score table doesn’t properly save upon quitting), but rather than listing those out, I want to talk about some of the less obvious things that I could have prepared for.

The Mouse
The mouse that I used during the Game Jam and showcase was this Logitech Gaming mouse. At first you might think, why would this choice of mouse be bad for showcasing a game that is based on clicking? Wouldn’t a gaming mouse be better for a clicking game? Yes, a fancy mouse would be better for playing a clicking game; however, it is not good for showcasing a clicking game. A lot of people that come by don’t use the same mouse, so they wouldn’t know what the buttons on the mouse do.

This mouse was particularly bad because of the two buttons (labeled G7 and G8 in the diagram) on the upper left of the mouse. These two buttons change the sensitivity of the mouse, which causes the mouse to move faster and slower. For a game that is primarily about left clicking, a lot of players accidentally hit those two buttons and were thrown off for the rest of the game.

The Instructions Screen
The instructions screen is definitely a case of too much text. The main purpose of the instructions screen was to explain the HP bar on top. During playtesting, I noticed that a lot of people would be stuck reading that screen for a long time, but I was not able to come up with a solution to the problem during the Game Jam.

In retrospect, I probably could have skipped the instructions screen altogether and replaced it with an overlay on top of the initial stationary downvote. By doing this, I could’ve drastically reduced the text that players have to read through.

Working Alone
Working alone was a good challenge, and I created a game that was relatively successful because I understood my workflow and capabilities before the Game Jam began. The downside about working alone during the Global Game Jam is that during the showcase, I needed to stay by my game most of the time. Because of this, I was unable to try out as many games as I would’ve liked.

Though this point doesn’t really relate to the game itself, it’s still part of the Game Jam experience. For the next Global Game Jam, I definitely want to look for another person to work with.

All in all, I think this Game Jam was a really satisfying experience, and I learned a lot about showing games at events with lots of people.