Thursday, February 13, 2014

Garbage Truck! - A game built for the youngest gamers.

Today my app, "Garbage Truck!" went live

Download on the App Store

Get it on Google Play

Within the day I found out I borked the art for non-tablet Android versions, and did a mad dash to fix it tonight. I'm pretty-pretty-pretty sure it's running good on non-tablet devices. But by default the thing supports 5003 Android devices and I can't seem to uncheck some en masse, so, yeah. If you find a bug, drop me an email.

Why a Garbage Truck? (Said the person without kids)

Seemingly out of nowhere, when my son was just under a year old he fell in love with trucks. We didn't expose him to trucks on purpose, or play the movie "Cars" for him. He just fell in love with trucks: semi trucks, garbage trucks, fire trucks, you name it. It must be some ingrained genetic thing in our children, because so many of his little friends, both boys and girls, love trucks as much as he does.

We try to never play TV and limit it as much as possible (but as any parent knows sometimes they are sick or miserable and it can help calm them down) and his favorite show is called "Mighty Machines", a Canadian program where footage of real trucks are doing their jobs. The voice overs can be pretty obnoxious, but its a great little show for truck lovers. Sometimes when he wakes up at 7AM, and I was up until 2AM with the new baby, or working late, I like to put on a show to keep his focus and wake up a bit myself.

Bad Parent Time

When he was about 18 months old I had bought a new iPad, and I thought I would try to get some fun kids apps. I had never really put an app in front of him, but he sees us using our devices all the time.

I know that makes me sound like a horrible dad, but I don't mean "..use our devices all the time" in the sense of "I sit on the couch playing a game ignoring him." In defense of our modern world, our smartphones are an extension of us in our children's eyes, as much as a child in the 80's would see a telephone or car as an extension of the home. Together, with my son, we look at photos on the phone, we take self portraits together, my phone is my primary camera (and when I take it out and tell him to say "cheese" he knows its photo time), we take vine videos together to share with family, my son facetimes me while I am at work, we call extended family on the phone. We use this technology together, and for tons of uses.

We do these things so much that seeing our kids wanting to use these same devices isn't a bad thing in my eyes. He looks through digital photo albums all the time, and loves seeing videos of himself as a small child. It's shocking how well he can navigate the device (Hooray for lame parent stating of the obvious. And how about airplane food!). So I saw no harm in downloading a few kids apps, but limiting his time and exposure to them.

Sadly I couldn't (easily) find any apps that were appropriate for his age. Again, he is super young, and it's generally frowned upon to design a game for someone this age (unless you are Fisher Price and it comes with a phone holder.) All of the games were too difficult. They had too many dependencies, too many steps to take, and often way too many verbal instructions. Even navigating menus was a bit of a chore. That's when I decided to just make one for him.

Making The Game

My goals were simple.
  1. Make a game with no ads, no links outside of the app, no links to other apps I may make, no dlc, no monetization of any kind, and no way to behave in a "corrupt" fashion.
  2. Allow the player to touch anywhere on the screen and get some kind of feedback, without unexpectedly booting them out, and no negative consequences.
  3. No menu. No settings. Jump straight into the app and play.
  4. Save data, make it a game even for the younger players. Who knows if they will want to see their tracked progress someday when they are older.
  5. Put a little perspective into the art (if even orthographic at an angle, as long as it wasn't flat from the side)
  6. Learn as much about Game Maker: Studio as possible to pull knowledge into making future games.
Here is the description from the online stores:
Touch anywhere on the screen to effect the game; change the color of the truck, the cab, touch the sky to change the time of day, cycle through the letters of the alphabet by touching the sign, and most importantly make the truck move forward and backwards by touching the wheels (or in front or behind the truck to make it stop and go).

And no garbage day is complete until you collect the trash! Simply touch the garbage cans when they line up with the grabbing claw to pick them up, and add the collection to the total score.

There is no wrong way to play the game, no way to fail, or convoluted steps too hard for the youngest players to understand. Scores are saved automatically and frequently, so you'll always have a running tally of all the cans you've collected. And best of all there are not, and will never be, any ads, in-app purchases, links to other apps, data collected by me, or links to take the player outside of the game.

Have fun playing Garbage Truck! and feel free to contact me with feedback!

The Look

I knew right away the look and style I wanted to shoot for, fashioning it as a sort of "interactive illustration", emulating a look of detailed watercolor truck illustrations in books of the 80. This Truck Book by Harry McNaught is a huge inspiration for the project.

In the end what I came up with was a look similar to McNaught's, but also taking my own stylistic approach I have gained over the years. I went for an angled orthorgraphic look to the truck, so it was consistently sized along the entire screen, but never bowing in an odd way.

For reference I took a number of photos and videos of our local garbage truck on two different occasions. I was sure the driver was suspicious as to why I was doing this, but I think he saw me standing outside with my son a couple times, so he may have known why.  I also got most of the audio from recording on my phone, then cut up the clips into in-game audio.

The truck itself is broken into lots of individual pieces, to save on memory, and for a few other tricks. Aritsts and programmers tend to butt heads from time to time over how to handle color of objects; do you load the game with finely tuned colored textures, or use a grayscale image and apply multiply a color on top of it. I have seen the benefits of both, and for this game I felt it was important to do as many color combos as possible, so I owe a big thanks to all the programmers of the past who taught me about multiplying colors. Also, the wheels are constructed of 3 different pieces, so they spin, but still have a perspective on them. In the end the truck itself is constructed out of about a dozen individual art assets, "carefully" realigned back into the game.

For the background I used an image my old friend Chris Drysdale (go check out his Deviantart) made for a project which never got off the ground. The hills and sky fit so perfectly into the look I had to keep it, but still had to turn the foreground into a street and sidewalk.

Wait, Game Maker?

When I tell people I made the project in Game Maker: Studio I get a few funny looks. It seems like the kind of thing you can just make in xcode, or other program, but every time I sit down in front of xcode I feel like I'm sitting at the controls of a space shuttle: there are so many knobs and buttons and switches, and the documentation expects some form of competency and experience which I, sadly, don't have. 

But with Game Maker, it is like have a project set up by a programmer for you. Anyone who is not a programmer, who has worked on a game, coming into a project where the work is as simple as "Just import your art into here, and hit this export button" it feels empowering. You don't have to sweat the small stuff. I feel like Game Maker has taken out a lot of the more high level things I just don't have the ability to make work. 

Also there is a long history of the program being around, and the fundamentals have remained the same, so when you do a Google search for information on a bug or process there is a multitude of answers out there. I even first delved into Game Maker in 2008 when I was making a few prototypes for a DS game a few of us were talking about making. It has come such a long way since then, and it's great to see so many great games being made in it. Its the perfect fit for me and I love it. 

But I haven't tried Unity yet. Might have to do that.

The Power of Emergence (aka Feature Creep)

At the outset of the project it wasn't going to be a game. But each time I sat down to work on the game, or when I would put the game in front of my son for him to play and test it out, I found something new and fun to do.
  • The sign on the truck was going to be a single logo, but my son kept tapping on it. So I put a color change on it along with cycling through the letters of the alphabet. Also, the cab of the truck felt blank on its door so I overlayed letters onto that as well.
  • I wasn't sure if I was going to put particles coming out of the smokestack. Most trucks these days are fairly clean, but I put in the particles and it looked so good. Early on when you switched direction the already emitted smoke would fly straight up instead of going in the new direction. I had way too much fun getting that to feel the way I wanted to in the end.
  • At the start of the project touching the sky did nothing, but my son kept touching the smoke coming out of the truck, so I figured I would just change the color of the sky using a color overlay poly. And once I did that, it dawned on me to make it alter the time of day. At first it only changed the color of the sky, but once I got the "dark" version to where I liked it, I had to add lights to the truck, and when I did that I had to add outer glow, and once the sky was dark I had to put stars in there (although im still unhappy with how dark they are but its a result of how im drawing everything so my hands might be tied.) Oh, and of course I had to put a sun in the background of the sunset.
  • I wasn't going to track a score, but I wanted to see how many cans my son might collect, so I put in a score system, but kept it off at the start and moved to the bottom. That got me to wonder about tracking scores in leaderboards, and achievements, and Im really happy about that.
  • Also the numbers displayed on the truck are randomly generated. At first I just wanted them to be "12345" (and they still are on the app icon, uh oh) because I wanted control over transparency, size, and italicization. And through some experimenting I came to discover I had a lot of control over those things in the program, so I taught myself how their random number and letter generation works, and I think it adds a nice touch to the truck.
  • Since starting the game my son has gained the ability to "swipe", something he didn't know how to do at the start of the project. I'm tempted to put some kind of swipe mechanic into the garbage can, which he always tries to slide to the claw arm. But, feature creep.

Thanks For Reading

I'm really proud of the work I was able to create. And I genuinely hope kids get a chance to play this and get a kick out of it, and I'm really looking forward to when my 4 month old daughter is old enough to try it too. It was so much fun to make, and it's so empowering being able to make something yourself and put it out into the world for others to try. I hope I get to do that with more future projects.

No comments: