Go Hack Yourself

Table Data

In our latest game dev adventure, we were looking for a way to use our sticker app as a level editor for our upcoming puzzle app that uses the same set of assets.

A little backstory…

Our latest app allows users to pull an image from a tray at the top of the screen and resize it, rotate it, flip it and place it onto a background to build a scene. It’s basically a sticker book, or for those of you over 30, it’s like Colorforms.

Our next app is a jigsaw puzzle that, upon completion, is filled with interactive characters. It also just happens to use the same backgrounds and stickers from the aforementioned project.

…so, as I was saying, we needed an editor that would allow us to place the characters in the puzzle (to avoid painstakingly positioning them a pixel at a time.)

THE HACK

Since the sticker app saves each scene you build in a file called stickerData.txt, and the touchscreen controls work much better on an actual device than our mouse-and-keyboard app simulator, we hacked the app so that we could tap a button on the options menu to email out the stickerData.txt file from the device.

Now I can position the characters anyway I want on the iPad and email that data to my partner without even touching my computer. Here’s to creative solutions *clink!

Tappy Lander Dev Diary #5: Physics & Tricks

You’ve practiced and taken all variables into account. You zero in on the target. Finally, through the combination of calculation, instinct and luck… SWISH! Two points!

I believe the popularity of physics in games is due to two things.

  • Familiarity Physics gameplay allows you to use the instincts you have developed since childhood. You’re using real-world skills to do the impossible in a virtual environment.
  • It Feels Good It gives you a sense of accomplishment that you only get in physics simulations. The same feeling you get when you successfully shoot a basketball.

Tappy Physics

Being created with Corona SDK and Box 2D, an open source physics engine, Tappy Lander is a game that pits your piloting skills against your biggest enemy, gravity. The physics engine handles the forces of your thrust in a semi-weightless environment splendidly. It also handles collisions so that your ship explodes only when it feels like it should, and the falling debris bounces around on the ground realistically. Although some of the collision code is built from scratch, most of it relies on the Box 2D engine. Friction, bouncy-ness and gravity of each planet varies and is all controlled by Box 2D.

Emergent Gameplay

One of the joys of physics is that you get all kinds of fun and sometimes unexpected results. The first time I landed in the prototype I noticed a little bounce. At first I thought “Wow, that looked realistic and cool”. My imagination sparked, I quickly then asked. “What if you get extra points for a higher bounce”?

Tricks

Both the slide and the bounce trick (seen here in the Tappy Lander Trailer) was made possible and inspired by side effects of the physics code. Some planets have less friction than others, allowing a super long slide if you come in at the right angle with enough thrust. Other planets are softer and bouncier, allowing for a super high bounce. Tricks yield lots of points when done correctly but are very risky and easy to botch.

  • Sliding A proper slide requires that you touchdown onto the landing pad and slide off of it into the planet terrain. If you touchdown on the planet terrain at any speed your rocket explodes. Oftentimes when attempting a slide you will either overshoot the target or skip off the target and hit the ground.
  • Bouncing If gravity is low and you come across a soft planet, conditions are perfect for a high bounce. Remember, however, one of the fundamental rules of landing: hitting the target too hard results in an explosion-so be careful! A 2000 point bounce unlocks the “Megabounce!” achievement and its possible to get an even bigger “Gigabounce!”

That’s how physics work in Tappy Lander and now you know the origin of the trick system! Next… I’m not sure what I’ll talk about yet!

Thanks for reading and be sure to like and follow Tappy Lander on Facebook and Twitter for daily updates.

 

 

 

Tappy Lander Dev Diary #2: Influences

I played Lunar Lander (1979, Atari coin-op) for the first time just a few years ago. It made a big impression on me and ever since, I have wanted to make a game like this.


In Lunar Lander, you try to safely land on a craggy planet before running out of fuel by rotating your ship and thrusting in the desired direction.

Gravitar (1982 Atari coin-op)

Gravitar (1982 Atari coin-op)

Gravitar focuses on flying through caverns and shooting at targets while saving prisoners. It’s very difficult and even has a level where you fly around a planet with gravity pulling you toward the center of the screen.

skydiver

Sky Diver (1978, Atari VCS)

Time your jump out of a moving plane and pull the ripcord before hitting the target in Sky Diver. Points are scored based on the accuracy of your landing. You have limited steering ability once your parachute is open and must take wind speed into account.

Sub-Terrania (1993, Sega Genesis)

Sub-Terrania (1993, Sega Genesis)

I love Sub-Terrania! Fly around a map using lander-style controls, shoot enemies and save prisoners-but with a snazzy soundtrack and nice presentation.

What does Tappy Lander borrow from these games?

  • The gameplay mechanics. Gravity pulls you down toward the target and you control your ship by thrusting in different directions.
  • You must not hit the landing pad too hard and more points are rewarded for accurate landings.
  • Get bonus points for rescuing floating vegetables, stranded in space.
  • Lots of dodging and maneuvering around traps and obstacles.

What does Tappy Lander do differently?

  • There is no fuel to worry about. Fly forever!
  • Controls are simplified: You can only thrust up, left or right.
  • No shooting. It’s all about precision flying.
  • In addition to touching items for points, there are items you must collect to complete a set.
  • More stuff that I’ll talk about in a future post!

The next post will probably address controlling the game and UI. See you then!

Thanks for reading and be sure to like and follow Tappy Lander on Facebook and Twitter for daily updates.

Jumping

Jumping

I’m a huge platformer fanatic. This starts with Donkey Kong, matures with Pitfall and solidifies with Super Mario Bros. -the best jumping in video games that even Nintendo themselves can’t replicate.

Let’s make a glossary for the sake of this discussion…

Jump
Launching something away from the ground at some direction and some velocity which will be affected by a force (usually gravity) in order to return it to the ground. (Note: typically a plain-ole jump but this stuff could apply to slingshot-ting birds, firing cannonballs, etc.)

Return
Your return to the ground after jumping/launching

Jump Velocity
The strength or speed of your jump

Jump Direction
The angle or direction of the jump

Forces
Gravity, wind, friction or some other directional force that affects a jump in some way but the user has no control over.

Dynamic Velocity
Player has control over the strength or speed of your jump to some extent

Dynamic Direction
Player has control over the direction or angle of your jump to some extent

Committed Jump
A jump over which the player has no control of velocity or direction once launched (see: Castlevania, Scorched Earth, Angry Birds)

Dynamic Jump
Player has control of velocity, direction or both to some extent once launched. (see: Super Mario Freakin’ Bros., Sonic, Crash Bandicoot)

Floaty Jump
Dynamic jump into weak gravitational force resulting in oversteering through a slow return. Floaty jumps make it hard to apply your built in real-world understanding of physics resulting in unintuitive control. i.e. it sucks.

How do game developers program a jump?

First off, if your game does not rely on complex collisions with weird shapes or is not some sort of simulation you do not have to use a physics engine. You can write the code yourself.

I’m not discouraging the use of physics engines or other people’s code but if you’re really going to tweak the gameplay to perfection make sure you know how to change every value in the code like gravity, friction, velocity, etc.

How do developers code a jump?

Probably something like this:
If the player presses the jump button turn on gravity for the player and thrust him upward at a velocity that is higher than the force of gravity.
Since the gravity is always on (as long as you’re jumping) it will eventually override the vertical velocity and pull you back down. This results in a nice realistic smooth curve.
When the player hits the ground-turn off gravity for the player.

What can we tweak to make it more fun? Vertical stuff.

  • Vertical forces like updraft or gravity. For best result make it relate-able to real life so players can accurately gauge a jump-but don’t overdo it.
  • Vertical velocity value, the length of time that velocity applies (leave it on for a jetpack)
  • Player control over the length of time velocity applies. Here’s where Super Mario Bros. nailed it. The player can tap the button for a small jump or hold it for a higher jump. They can control the height of the jump by holding the button down longer. Genius!

After a set height however the player must come down so they do eventually lose control of the vertical velocity. Remember: the level design really matters here. Super Mario Bros. has three platform heights that Mario can jump to on any given screen. This means there are times that you can do a little vertical climbing even though the game is horizontally oriented (but this isn’t a discussion in level design so…)

That covers vertical motion. What about horizontal?

Good ole physics dictates that we can calculate vertical and horizontal math separately. So here’s what happens with horizontal:
The player can either NOT have control over movement in the air or they can press forward and backwards to guide the jumper. Friction should be added for a good heavy feel.

What can we tweak to make it more fun? Horizontal stuff.

  • Horizontal forces like friction or horizontal wind. For best results have friction so there is a weight to the player.
  • An object in motion tends to stay in motion. You shouldn’t be able to turn on a dime in the air.
  • Horizonal speed at the time of jump affects the angle or direction of the jump. In Super Mario Bros. you have to be running to make a long jump. Although you can “steer” in the air, it is limited and the weight of the character feels great.

I simply want developers to think about and spend time on perfecting these values and forces. If you’re lucky it’ll feel like Super Mario Bros.

Now go play Super Mario Bros. and think about the forces, feel the control and you’ll start to understand why the jumping in Super Mario Bros. itself is fun to play with and has kept players coming back for over 25 years.

App Machine

App Machine Part 1

I had a fellow developer ask me how we had put out so many apps in such a short time and thought I would share my particular experience in creating our pipeline.

Make engines, not apps
We started this with our third app, Coloring Farm Touch To Color. The engine allowed us to change artwork in an image folder and content of an xml file to create a brand new app. We created a farm, safari and princess coloring app with this engine that are very popular. The original code took a few months to create and we added little features as we released new titles. We followed the same process for our puzzle apps, Puzzle Farm, Princess Fairy Tale and Animal World.

Reuse everything
We have accumulated a great library of sounds that we reuse frequently and try to reuse code for animations, particle effects, etc. Coloring Farm, Puzzle Farm and Animal World all used the same artwork and they were delivered to us from the artist in vector format with everything separated in easy to manage layers. This allowed us to take parts and rearrange, resize, etc. to build new landscapes, game assets and games.

Delegate
You have to delegate tasks to free yourself up for new responsibilities. Look for talent and start building relationships with people you can trust to carry on the work you’ve started. We owe our recent successes to Amanda Linn and Matthew Taylor, a brilliant developer and sound designer respectively. We are currently looking for more talented developers who can maintain our standards and vision.

I will continue this series when I am inspired to do so. That’s it for now. I have to get back to work.