Table of Contents

SSSD

Super Speed Shot Deluxe (SSSD) is a game I designed and built over a few months in 2019. Frustrated with the number of game ideas I began and abandoned, I set out to find the appropriate scope for a one man team and committed to a release date. Currently the game is only available on Android. It's completely free (and there's no ads) so you should give it a try.

Update: Due to some changes with the Google Play Store app requirements, this game may not be compatible with your device. Hopefully I can get it figured out soon 🤞

Quick disclaimer: Since this was a personal project and I was the only one working on it, the process has been less rigorous and more improvised than my professional work. Prompt AI or Seeit are better case studies to see how I usually approach product design, if that's what you're looking for.

The Core Mechanic

SSSD is essentially an endless runner with one unique twist: Whenever the player is touching the screen, everything moves in slow motion. The player controls a ball and the objective is to dodge obstacles and collect coins as they navigate up the screen. If the player falls behind, the game is over.

This mechanic is loosely based on an old mobile game about flipping a coin, that I can no longer find...

Gameplay Loop

SSSD was designed to be a casual game with a very simple gameplay loop. Once the player understands the core mechanic, they simply repeat the process continuously improving and collecting coins. Coins are used to unlock new balls, backgrounds, and powerups.

Coins come in 3 sizes corresponding to their point values. There are also special obstacles that move, walls that can be broken, and bullets that can kill the player.

During each play, the randomly generated obstacles move toward the bottom of the screen and the player tries to avoid getting stuck. As the gameplay continues, the obstacles slowly speed up making it harder and harder.

A random assortment of gameplay screenshots.

To help better demonstrate the overall concept and gameplay, I've recorded a fairly lengthy video of me playing the game on my phone. Feel free to skip around to check out the different balls, backgrounds, and obstacles.

Note: There is actually music and sound in the game but the screen recording software didn't capture it for some reason...🧐

Onboarding

Once I had a working proof of concept, I let my friends give it a try. The very first thing I realized was that people needed a little nudge to get started. Since I knew this was going to be a minimalist game, I decided to bake the onboarding right into the start screen. After adding the text, test sessions went a lot more smoothly. With a little delay and a smooth fade transition, I checked it off my list.

Another minor thing I learned from these early tests was that some people prefered to aim in the direction the ball would go while others wanted to aim in the opposite direction (like a slingshot). So I made sure to add an INVERT CONTROLS option to the Settings menu before release.

Three concise sentences to help players get started.

Customization Options

Since SSSD was designed from the beginning to be minimalist in both concept and design, I decided to have some fun with the customization options. The original player ball in my prototype was a simple while circle, so the obvious next step was to do other solid colors. After that I started making tiny illustrations and I might've gotten carried away.

And, of course, the next logical step was to make the background fully customizable as well with flat colors and single/multiple color gradients. For testing I added an option to set a random background each game and I liked it so much that I kept it in the final version.

One other interesting feature of the background choices is that the black and white options had to be a little different. Since the obstacle walls are black and the collectible coins are white, they wouldn't show up on the black and white backgrounds. I could've simply skipped those colors but instead I decided to implement a feature that inverts the invisible objects for those respective options.

Powerups

With the core functionality figured out and a ton of customization options in place, I decided to tackle an idea I'd had from the beginning: Powerups. Powerups would spawn randomly at the top of the screen and fall slightly faster than the current speed of the game. If the player collected them, they would get a special ability for a short period of time. The active powerups are displayed in the lower left corner and they lose opacity as the time expires.

Falling powerups and the active powerup indicators.

I ended up creating 16 unique powerups ranging from obvious ones that make your ball bigger, smaller, faster, or more bouncy all the way to crazy ones that let you teleport, attract coins from a distance, and even spawn more powerups. All of the powerups are documented with fun little descriptions so you know what they are and how they work.

Monetization

I knew early on that I wanted to try adding some type of monetization to the game – I didn't expect it to actually make a lot of money but I figured it was a good feature to learn. Since I didn't want ads or a "pay to win" model, I decided to lock all of the customization options and have players buy them with the coins they collected. Then I could simply sell extra coins.

While implementing the coin system, I realized I could also monetize the powerups by having users unlock them before they might appear. I also decided to give powerups "levels" that increased their duration. This essentially meant that the game would never be 100% complete and aligned well with the existing monetization plan.

The game starts with most options locked and players use the coins they collect while playing to unlock them.

Additional Features

At this point the game was essentially done so, while I went through the process of submitting it to the Google Play Store, I polished it up and added a few additional features. I started by adding some royality free music and sounds which helped a ton. I created a Settings menu that lets the player control the music, sounds, controls, and reset the game. I also integrated the Google Play Store leaderboard system and a quick credits page.

Technical Details

SSSD game was built with a 2D game engine called Corona which uses the Lua scripting language. While I won't get into all the technical details, the one fairly technical aspect I'll cover here is the random level generator.

The endless level generator consists of 3 parts: the blocks, the chunks, and the builder. Each block is a table with a unique ID number and that table contains all of the properties of the block. Those properties define the shape, width, height, anchors, movement, etc.

Block 0007 is a long thin rectangle that opens and closes to 90 degrees like a door.

Chunks define what blocks exist within a given amound of space, which allowed me to build precise obstacles without worrying that they would be impassable. Each chunk is a table of numbers that refer to different blocks and, using this system, I created a couple hundred chunks with various moving parts, breakable walls, and static obstacles – all built from the blocks I defined.

Various chunks that populate the game with random obstacles.

The final component of the level generator is the logic that draws the blocks on the screen according to the data in the chunks. At the start of the game it chooses a random chunk and builds the correct blocks above the top of the screen. On each frame, all the blocks are moved down and, if the last block moves below a certain threshhold, a new random chunk is created behind it. When blocks reach a certain distance past the bottom of the screen, they're deleted and removed from memory.

I think this is a fairly common approach to building endless runner games, but I'm pretty proud of how scalable and adaptable it is for my first attempt.

That's a wrap

I currently have no plans to further develop the game other than trying to get the certificates up to date when I find time. Overall I think it was a great project and an extensive learning process. And more than anything I'm just happy to say I finally realized a long time dream of releasing a mobile app.

Other projects: