Bacon and Games

Year: 2010 (page 2 of 5)

Well That’s Just Peachy, Apple

Apple announced today that they would be lifting their ban on using 3rd party development tools to create apps for their store. It only took about 4 months for Apple to remove the ban, which was enforced in early April of this year. In their official announcement Apple wrote:

We have listened to our developers and taken much of their feedback to heart. Based on their input, today we are making some important changes to our iOS Developer Program license in sections 3.3.1, 3.3.2 and 3.3.9 to relax some restrictions we put in place earlier this year.

Whether their change of heart is truly due to developer backlash or if it’s a result of legal pressure is unclear. I think it’s important that we focus on the outcome. Developers can go back to building games with the tools they are most comfortable. Apple still holds the key to the kingdom, but they can no longer discriminate simply based on platform of origin.

A fun game that runs well is… a fun game that runs well. Whether an app has been built with Unity, Objective C or Actionscript is immaterial. The onus of writing reliable, efficient code is still on the developer. The patrons of the App Store should be allowed to decide what belongs on the store by voting with their dollars. And now they can.

To Apple, I say thank you.

To the developers, I’ll say this: When you’re cooking up your next app, keep the words of Jurassic Park’s Ian Malcolm in mind. “…your scientists were so preoccupied with whether or not they could, they didn’t stop to think if they should.” Make apps that fill a need, innovate or do something better than an existing app. Flooding the store with dress-up games and soundboards just because we can will only leave us with: I told you so.

As an added bonus, Apple also announced that they will finally be publishing their App Store Review Guidelines. Developers now have a clearer picture of whether their app has a shot at getting to see the wizard… before they make the long trek to OZ. TechCrunch put together a decent summary article that points out Apple’s casual tone. To me, Apple sounds like a parent taking a first cautious step with their teenager… “OK, I’m going to let you stay out past curfew just this once, don’t disappoint me.”… Let’s not get grounded again.

And no, I’m not apologizing for the title of this article…

Prototypes from Adam Atomic

Recently, Adam Saltsman (Canabalt) released a bunch of game prototypes he’d been working on. They are each at various stages of completion, but they’re all worth having a look at. You can play them here.

I think it’s great that Adam has decided to share these with everyone. Prototyping is an important part of the game design process. Unfortunately, it’s also a part of the process that is often skipped (myself included). Adam typically creates game with very simple mechanics and as a result it’s easy to assume he might be skipping the prototyping phase. But as you can see, even a minimalistic designer like Adam Saltsman takes time to prototype.

Prototyping…

  • helps you find out if your concept is fun before you spend time making final art
  • allows you to figure out how you’re going to use assets before you get into final art. In whipping up placeholder art you might find that you prefer nested clips to having all your animation on one clip’s timeline, for example. It’s better to find that out before you create your art than having to go back and change it.
  • induces flexibility. When you’re working with placeholders and are rapidly prototyping, you’re not worrying about holding yourself to using art assets you’ve already created. Sometimes it’s hard to let go of stuff you’ve spent time on which can inadvertently lock you into concepts that really aren’t that important. You’ll find that you will code with more agility when you’re prototyping.
  • makes it easier to try out new things. I find that if I’m working towards a final productI’m worry about all sorts of additional stuff that’s unrelated to game mechanics; menus, game restart, transitions between game states, etc. When I’m prototyping I don’t build any of those things, so I’m free to just throw down a bunch of stuff, try it out and not have to worry about how or if it relates to any of the “non-gameplay stuff”.

On another note, I think it’s great to see some of the well known and successful game developers sharing their unpolished work. With thousands of people creating new games every week, we end up seeing primarily the best of the best… it’s all we have time for. As a result, it’s easy for budding game developers to get the impression that there are people out there who do nothing but have great ideas and crap out steaming piles of awesome. I think, particularly for young game developers, that there’s great value in having the curtain pulled back.

No-one gets a game right the first time.

Everyone has to work at it.

Having to revise your work, scrap ideas and change code is NOT a sign a failure it’s a part of the process that you’re not only expected to encounter but should be planning on doing.

Free Sound Effects Generator for Games

Some time ago, the Super Flash Bros. ported a sound effects generator called sfxr to Actionscript 3.0. The original was written by Tomas Pettersson and can be found on a few different platforms. AS3sfxr, as they call their port, gives you the ability to create old school sound effects right in your browser. The sfx can be exported as .wav files at 8 or 16 bit and 22 or 44 HZ. And if you find your mind so blown that you have to take a break mid-creation, you can save your work and reload it later to pick up where you left off.

The beauty of this sfx generator is that if you’re not sure what you’re looking for, it can randomly generate sfx for you. If you have a general sense but don’t know where to start, it can randomly generate sounds from a few preset ranges; pickup/coin, laser shoot, explosion, powerup, hit/hurt, jump and blip/select. I usually find that if I’m looking for a particular sound I can click one of these to find something close and then play with any of the 22 sliders to create exactly what I’m looking for. Perhaps the most unique and helpful feature is that the app keeps a history of the sfx you’ve created, much like a browser tracking the pages you’ve been through. You can create a whole bunch of sounds and then walk back and forward through your work to select the most fitting sound.

This isn’t a scoop by any stretch of the means, admittedly I’ve been using as3sfxr consistently for almost 9 months now. However, my suspicion is that many game developers don’t know about this gem. It’s free, there’s no royalty issues, it’s always at your fingertips and perhaps its most endearing quality, it can with little effort give your game a custom-tailored voice of its own.

If you’re looking to make a game with that classic NES sound, look no farther than as3sfxr.

Help Get Everything to Everyone

Everything, By Everyone may sound like the most vaguely titled movie since Stephen King’s “IT” and perhaps it is. But it happens to be aptly named.

In 2006 Newgrounds, the web’s oldest and arguably most popular Flash portal, changed its slogan from “The Problems of the Future, Today!” to “Everything, By Everyone”. On the surface the change was an attempt to distance Newgrounds from its reputation of being a haven for negativity, teenage angst and childish toilet humor. But in reality, Newgrounds was updating its slogan to reflect what it had grown into; a collection of talented and passionate artists and programmers sharing their work with the world. Newgrounders were creating games, cartoons, music, art and a thriving community around all of it. They were, and still are, creating everything, by everyone.

Nathan Kuruna, a filmmaker and fellow Pennsylvanian, is working on a documentary that will tell Newgrounds’ story. Besides that he’s telling a story about the evolution of online entertainment, of user generated content and how the web (and Flash) have changed the way we get, make and perceive entertainment.

I had a chance to sit down with Nathan last August to talk with him about Newgrounds, Flash, and where I think they’re going. He shared with me what he’d learned in his other interviews and also what he hopes to accomplish with his film. I promise you this is a film that will not disappoint. Not only that, it will turn some heads in the process.

We’re so used to the web as it exists today that it’s hard to remember what it was like before Newgrounds, YouTube, Twitter, Facebook and blogging. In roughly a decade, the web has gone from being primarily about content consumption into a forum for self expression. User generated content has undoubtedly changed the web, but its reach extends far beyond the browser. In November of 2004, Tom Fulp and Dan Paladin leapt off the pages of Newgrounds onto the XBOX with Alien Homid, the first Flash game to cross over to a console. Edmund McMillen, another prolific Newgrounder, brought us Gish (which is now open source, by the way) and is now readying the debut of his first console game, Super Meat Boy. Meanwhile, Bo Burnham is writing a musical for Judd Apatow and Brain Waterman is making a movie with the Leslie Nielson (yes, that guy from the Naked Gun movies). User generated content has given creative minds who would have otherwise gone unnoticed a chance to compete with traditional media outlets.

Nathan’s movie is about how this transformation came about and Newgrounds’ role in all of it. Appropriately so, he’s found his way onto Kickstarter to help get his project across the finish line. He’s shot a ton of video but he’s got hundreds of hours left to sift through, editing to do, more interviews to travel to, dvds to press, festivals to enter and lives to change. OK, that last part might have been an overstatement but we’ll never know if Nathan doesn’t get a chance to make his movie, so please consider throwing him a few bucks. He’s a hell of a nice guy and I can tell you first hand that he believes in this film and has a passion for its message. Hell, his movie may end up being proof of its own message. It’s a story worth telling and we’ll all benefit from having it told.

For more information, head over to the Everything, By Everyone website. If you’re already sold, click here to help him out. And if you can’t donate, that’s cool but do Nathan a favor and click one of the share buttons below or put his Kickstarter widget on your website or blog.

People are often inspired by others’ generosity, so if you find yourself reaching into your pocket to help out, leave us a comment and maybe you’ll incite a few others to follow your generous lead.

How to Simplify Programming Challenges

I recently had a young programmer named Jack (that’s not his butt to the right) ask me for help with a game he’s been working on. I don’t want to give away too much about his unreleased game, but for the sake of discussion I have to at least tell you that it involves a big ass rock that goes around smashing the crap out of different shit. (and 2 sentences in I’ve hit my butt reference limit for this article)

The version he shared with me was pretty far along but he was stuck on one particular detail; getting the rock’s tail to point in the proper direction. Essentially he wanted the tail to point away from the direction the rock was moving, similar to the tail a roll of toilet paper might draw when thrown through the air.

This is a fairly common challenge in game programming and I, like many other game programmers, have done this in the past. I have code that I would have happily handed over to him, but after speaking to him we decided it would be more valuable for me to push him in the right direction rather than just take his FLA and fill in the blanks. I’ll spare you the Chinese proverb about teaching a man to fish..

On Problem Solving
Whether you’re programming super complicated banking software or just making a simple number guessing game, the process is the same.

  1. What do you need to do? Define the challenge.
  2. What do you know? Assess the tools and info you have at your disposal.
  3. Do you have all the pieces? Figure out if what you have can be used to solve the problem.
  4. If yes: Create a plan for using what you have in order to solve the problem.
  5. If no: Break the problem into smaller challenges and return to step 1

This is of course a grotesquely generalized version of problem solving. But what’s important to note is that by asking the right questions you can distill ANY problem into simpler more manageable parts. No matter how complex, the solution to all programming challenges (and most real life ones too!) is simply the sum of smaller problems solved in the right order.

Asking the Right Questions
Let’s take a look at Jack’s problem and how we might break it down into a solution.

1. What do you need to do?
We need to rotate the rock so that it’s “facing” the direction it’s moving.

This is a “plain English” definition of the problem, which is the best place to start, but before we can continue we’ll need to convert the definition of our problem into something we can quantify.

Since movieClips have a rotation (_rotation in AS2) property, it’s likely that we’re going to need to use this to point the clip in the right direction. We know that the rotation property accepts degrees, so we’re probably looking for an angle.

The real answer to Question #1 is:
“We need to figure out the angle at which the rock is moving.”

2. What do you know?
In this step you’ll want to keep the answer to Question #1 in mind, but it’s perfectly fine to be liberal about listing the things you know. You can sort out the relevant data from the irrelevant later, but you never know what piece of information might spark an idea so to start it’s a good idea to list whatever comes to mind. (be creative!)

  • Since the rock is a movieClip we have access to all of its properties; rotation, x, y, etc. These 3 are the most likely to be useful, but remember movieClips have all sorts of properties.
  • It’s moving so we probably know its speed in the x and y directions
  • Our rock might be in an environment with some rules, such as gravity, windspeed and friction. It’s our world, so we’d know all these things too.
  • We also probably know who shot Mr. Burns. Who doesn’t? But I can’t imagine that’s going to do us any good.

3. Do you have all the pieces?
Now that we’ve listed the stuff we know, we have to sift through it for something that might help us calculate an angle.

If we can define a line, we can calculate an angle. Well, a line is defined by two points so let’s look at what we collected in Question #2 and see if we can come up with two points; two points that define the path of our rock.

We have the current location of the rock, via the x and y properties of the movieClip, which would be the end point of our line. We need the starting point to complete the line, which we don’t have in our list.

This means that the answer to Question #3 is “No”. We have to put this part of the problem on hold for now and refine our problem into a more specific question:

Where can we get the starting point so that we can draw a line?

Luckily for us this is an extremely simple problem. On every frame we’re going to be updating the position of the rock. So all we have to do is store the current position of the rock before we move to the next frame. (I recommend a variable called lastPosition)

If we do that, we can add lastPosition to the list of things we know, which gives us two points. We’ve got our line! This means we can calculate an angle, which means we can figure out what angle we need in order to point the rock in the right direction. We’re almost done!

The next thing we need to do is write a function into which we can pass our starting and ending points that will give us an angle in return. Since this isn’t a math lesson, it’s a lesson about learning to fish (OK I lied about the proverb), I’ll just write the function for you. They’re adapted from one of my favorite books, Keith Peters’ Foundation Actionscript 3.0 Animation: Making Things Move! (I’m also a big fan of this book) Both are fantastic resources for math, physics and other common game programming stuff.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// AS2
function getAngle(startX,startY,endX,endY):Number{
	var dx:Number = endX - startX;
	var dy:Number = endY - startY;
	var radians:Number = Math.atan2(dy,dx);
	return radians*180/Math.PI;
}
 
// AS3 
function getAngle(st:Point,end:Point):Number{
	var dx:Number = end.x-st.x;
	var dy:Number = end.y-st.y;
	var radians:Number = Math.atan2(dy,dx);
	return radians*180/Math.PI;
}

The last thing for us to consider is how to setup the rock clip. If we set it up so it’s facing to the right in its default position [rotation=0], the angle we get back from our function will point the rock in the correct direction.

There you have it, a seemingly complex problem broken down into a few manageable parts.

This problem was small, but the process is applicable to a project of any size and challenges of any complexity. The key is accurately defining the things you need to achieve. From there you can survey what you have at your disposal and see if what you have can be used to get what you need. If you can’t, you need to define more specific questions until you have all the tools and info you need to finish the job. It’s just that simple.

Now go, build the next Farmville or twitter or Google Wave, you know…something really useful. Oh, one more thing, bedonkedonk… I lied about the butt thing too ;)

Thanks to Ajay Karat for lending me his rock and fire art for the trajectory sample above.

Olderposts Newerposts

Copyright © 2024 Bacon and Games

Theme by Anders NorenUp ↑