About the project

Video games are a culmination of art, design, technology, all things I very much aspire to grow in my own skill set. This project was an opportunity for me to leverage what skills I had in painting and programming to do something I had never done before, design and develop a product from start to finish by myself, and learn a lot a long to way. This project was elapsed about seven months and shipped on both iPhone and Android platforms early 2016.

Getting Started

I learned a few critical things before starting this project from the following resources:

  1. Extra Credits is a YouTube channel that is an invaluable resource and enjoyable to watch. Presented in animated form, each video goes in depth into game design principles and problems by game designer James Portnow.
  2. How to Design Levels for a Platformer gave a quick, but important overview of what makes classical platfomers classic.
  3. The Art of Game Design really got the boat moving with the quote, "If you want to be a game designer, put down this book, and make a game."

I learned a few critical things before starting this project from the following resources:

  1. Smart phones offer touch, tilt, and an assortment gestures, so planned on using them to their fullest potential, rather than trying to force conventional gamepad controls onto an unconventional gaming device.
  2. I wanted to keep the controls simple. People should be able to play with one hand. Requiring multiple screen inputs at the same time would utilize too much of the already little screen space on a smart phone.
  3. I wanted to make a clean interface by using characters attributes and environments to convey the same information that a fixed HUD (heads-up-display) would. Games like Dead Space and Alto's Adventure are great examples of this.

Proof of Concept

Being my first game, I erred on the side of caution and designed a game that had a fairly small scope, so what I originally aimed to develop was a much smaller endeavor and was accomplished in about a week's time. I ultimately decided to push further and adopt what I created as the foundation, the early proof of concept, for something more complex.

First early prototype. A player flicks the ball up and into a cup, a new cup would appear above and camera moves up, and repeat.

The Classic Platformer

It reasoned in my head, that I had the basis for a platformer already made. So, my first step was looking into what made classic platformers, Super Mario, and contemporaries, Super Meat Boy, good platformers. And I found at the core of these games were rules very in line with what I've learned as a designer.

  1. Progression Very much like working your way through a task flow on an app or website, players have to feel like they're making progress towards a goal, otherwise they lose interest or become frustrated. This is why a progression/difficulty curve is so important in crafting a game experience.
  2. Responsiveness Feedback is just as important in the context of a game, especially in a platformer where split-second decision making is the name of the game.
  3. Forgiveness Your users will go down the wrong link or page, and a game's player will fail. Whether or not they'll try again depends on how easily they can go back and try again.

I'll go into how these lessons were integrated into 2Hops.

To create a easy parallax effect, utilize 2D assets with 3D space.

Progression: Level design as a teaching device.

Games are a unique entertainment medium in that you don't progress in a game in the same way you would in a book or movie. A game tests you, and you can't move on until you've proven you've mastered the game mechanics thus far before moving on to take on more challenging tasks. In that way, a good platfomer has a progression curve that doesn't throw any obstacle at the player before they're ready.

Documenting the introduction and progression of game mechanics was essential in creation an experience that progressed smoothly.

Responsiveness: Air control.

Not unlike users on a website or an app, players need to experience feedback for every input, every time. This is why in games like Super Mario there exist a level of air control, the ability to control the character despite being in midair.

A white circle expands and contracts to show the player how many jumps they can perform. A black circle tilts along the circumference of the ball as feedback when the player tilts the phone.

I experimented with two directions of player control: swipe to move and tilt to move. I ultimately decided on tilt to move because offers finer control of the character (the ball).

Earlier concept of flicking the ball to move the character.

Forgiveness: Avoid the feeling that the game is cheating.

With a game that runs up to 60fps (frames per second), what the player sees happen and and what the game logic says happened can be in conflict. Often in platfomers, a player can run into a spike or hit jump too late because we were too late to process those frames. In order to compensate, we have to provide a measure of forgiveness.

  1. Ledge Forgiveness I give the player 0.1 seconds of grace period after they leave the ground before I register that they've actually left the ground.
  2. Collision Forgiveness I shrink the hit-boxes of spikes and other obstacles that register player death to be a bit smaller than their actual sprites/models.
The collision box (marked in green) is smaller than the spike itself.