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!

Student Questions

coders coding
Recently, a student interviewed me for a game development project so I thought it would be a good idea to share some of the more interesting segments. There are so many budding game developers out there; maybe you’ll find this helpful or inspiring.

Also, I’m a total narcissist!

Q: How long have your worked for your organization?

My partner and I started Eggroll Games in October of 2011. I started working for Eggroll Games full time in 2013.

Q: What are your major duties and responsibilities?

I just tell people I do “whatever is necessary” haha. We are currently working on a puzzle game template that we can release with many different themes. I conceived of the visual design and control, and made mockups and documentation. I designed the UI and created the UI assets that will be used in the game. I picked the music and sound effects. I will probably create the description in the various app stores and its promotional screenshots. I’ll be sharing it on social media too. Although I’ve only tweaked code and made suggestions on this particular app, I definitely still program too. Here’s a game I programmed 95% of that we released last year as a fun diversion. It’s our only non-kids app to date: bit.ly/rocketvalet

Q: Who is your immediate supervisor? What is his/her title?

We never established titles here haha. My partner and I both own exactly half of the company so I’m my own boss, he’s my boss and I’m his boss haha. I call myself a developer/producer. It’s intentionally vague because I do whatever has to be done, but I put developer first because I love to create.

Q: What do you perceive to be the major rewards of your job?

Wow, I get to do anything I want anytime I want haha. The job itself is the same thing I’ve done since I was a kid. Dream up games, doodle them, research stuff that could inform me to make the game better, create mockups, art, design documents, etc. I would be doing this in my spare time even if it wasn’t my job.

Q: What do you like most about your work?

My favorite part of the job is when I have a blank slate and I get to create a new experience from scratch. I am always trying to finish up all the projects on my plate so I can get to the next one!

Q: What are the major frustrations in this job?

The tedium of creating hundreds of art assets in different sizes to accommodate all the different screen sizes out there. Also, the waiting. Examples: Waiting for a bug to get fixed so I can keep working on a game, waiting for an app to get approved or waiting to get art back from an artist. Technical changes in the platforms and stores we support. OS changes that break things. We just updated some of our apps on Google Play to fix the IAPs. Our code stopped working because of a change Google made on their end. iOS 8 made one of our app’s text disappear and has thrown off the position of some of the piece slots in some of our puzzle apps. We still haven’t fixed them all haha.

Q: What are the most frequently recurring problems in your position?

Our wall that we have struggled to break through for the past few years is scaling up. We have established a successful business model. We are still trying to get away from working on one project at a time and doing the work ourselves. Our goal is to have teams of people working on several projects at a time.

Q: Is your job better or worse now than it was a few years ago? Why?

No, it’s awesome. There’s more pressure to diversify. The market is changing and we can’t rely on one single platform or store. We used to be on iOS exclusively but we are now on Google Play, Amazon, Samsung and even Ouya! We make a point to support new platforms too-like Fire TV. We want to get on Steam, the Apple Mac store and possibly Windows phone next. In the future we’d like to be in browsers and on Playstation, Xbox and Nintendo’s platforms too.

Q: What job in the organization would you prefer above your own?

None. I have the best job in the world.

Q: Do you have any long-term goals?

To scale up the company and diversify where people can find our games. I’d like to remove myself from the day to day projects so I can concentrate on my personal masterpieces.

Q: How did you become interested in this career?

I played Donkey Kong at the beach a million years ago and haven’t stopped dreaming about games as a medium ever since. I was probably 5 or 6 years old.

Q: How did you prepare yourself for this job? How did your education help?

I prepared mostly by obsessing over gameplay and design my whole life haha. Learning to program so I could actually turn my ideas into reality was definitely a turning point. I taught myself a lot but school helped me devote time and focus on turning it into a career. Your drive is more important than your education. It takes drive turn information into something-it doesn’t happen automatically just because you sat through a lecture. It doesnt matter if you teach yourself or if you learn in a classroom. If you are driven and it’s the first thing you think about in the morning and the last thing you think of at night, then you will figure out how to make it happen one way or another.

Q: What advice would you give to someone interested in this career?

Forget what everyone else has done and what people say online, just make a game. There is no wrong way to do it. If you can finish a game (even a simple 2D one), you are better than 95% of the “developers” out there.

The Right Way

confusion-1

Cheesy clip art rules.

I just read an article about the difference between wireframe, prototypes and mockups in app design. My response to the poster was this:

Although it is important to have a common language with the people you need to communicate with, there is no one right way to develop any idea into a finished product. In my opinion, articles like this can intimidate developers and prevent them from finishing a project because they are too worried about not doing something “the right way.”

Many projects never get past pre-production. Many developers never make a game because they are afraid of how their peers will judge them when they don’t seem savy enough. Many programmers never finish a project because they are intimidated by the complexities of doing things “the right way.”

I’ve met with many developers and toured game studios. The truth is, there is no right way to do anything, there is only what works for you at the time.

Popular terminology, programming languages, coding techniques and hardware platforms change but the goal never does: Reach the finish line however you can.

…and never let someone stop you because you’re not doing it “the right way.”

Apple Now Gives 100 Promo Codes Per App Version (Instead of 50)

Apple Now Gives 100 Promo Codes Per App Version (Instead of 50)

I just snapped this photo about ten minutes ago. I double-checked on a second app and it’s true. Apple developers now get 100 promo codes instead of 50. This has been enacted retroactively on all our apps.

This is a good thing. We have found promotional code giveaways to stimulate our sales. Win-win.

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.

Numbers Memory Match Submitted

Numbers Memory Match, the latest app from my team at Eggroll Games, was just submitted to the App Store.

This video features a build about three generations previous to the final. It was created, as all our apps have been, with the Corona SDK. It uses the engine from our last app for menus, options and aesthetic but has completely new gameplay. My goal was to make the best memory matching gameplay on the App Store. I think we’ve accomplished that with the caveat that it is aimed at parents of children learning numbers and counting. We are planning on using this matching engine in a future title aimed at general audiences.