diary of an indie game developer

 

Feedback You Never Want to Hear About a Door

April 22nd, 2009

So, you’ve just designed a sweet new bus door. Then it goes into use, and you hear this initial suggestion:

Have informational ads in multiple languages to inform the public on how to open the rear doors.

Haven’t we figured out doors already?

Awesome World of Goo Claymation

April 16th, 2009

Wow.  I hope my next game inspires someone to make something this beautiful. Cool if you haven’t played WoG, but better if you understand the Painter’s Sign reference:

SXSWi Panel Thoughts

April 15th, 2009

I had a ton of SXSW Interactive thoughts I wanted to post, but this is keeping me pretty busy!  I’ll aim for some quick bites, and hopefully get the important stuff down.

First off: the panel I was on, “Playing On! Interface Lessons from Games,” went well!  Game talk was everywhere at SXSW.  Everyone wants to use games as a model to improve their app or business model, and I thought our panel was one of the few talks to bring concrete ideas to the table.

John Mark did a great job finding strong panelists and getting ‘em all to work in a similar direction, resulting in a pretty full hour of content.  (Side note: I got to check out panelist Brian Robbins’/Fuel Games’ “Vans SK8″ iPhone game before the panel.  It used a pretty cool combination of accelerometer and touch gestures to specify tricks.)

I think there’s supposed to be some audio or video of the panel made available eventually, but I don’t know, so here’s what I’ve got:

Neither is very intelligible without audio and video, so here’s hoping.  Thoughts in brief:

  • Exploration– and correspondingly, the acceptability of failure– is a major difference between app and game design.  UX designers frequently aim for 100% success rate with new users choosing the correct way to do something.  Game designers are perfectly okay with you missing that jump a few times, or getting hit by that enemy– you’re learning.
  • Why is exploratory learning fun, while other kinds can be dreadful?  How come the tutorial portion of an otherwise excellent game can be worse than learning Microsoft Outlook?  We spent a bit of time talking about safe and fun learning environments, but this area could use more study.  Note, though, that removing “exploratory” from “exploratory learning” is usually the fastest way to remove the fun.
  • We talked about the interface opportunities of the Wii and iPhone.  Wii is game-specific and iPhone isn’t, but I’m still unconvinced that either can offer a deep, satisfying game experience that wouldn’t be as good or better on a “traditional” game platform.  Maybe that’s more about use scenario and target audience than interface, though.  Maybe they aren’t aiming for depth.
  • There was a lot of discussion about achievements, reputation systems, and other feedback/reinforcement mechanisms.  These seem to be the most advanced example of crossover between games and apps– they’re a natural fit with social media.
  • Progressive complexity, and tools as inventory items, came up.  Somebody just needs to do this already, so we can talk about why it failed. :)

What? GDC Happened?

March 28th, 2009

I didn’t actually attend GDC this year.  My (indie-focused) highlights from the outside:

  • Cactus, an indie developer who sometimes cranks out several games in a week, talked about the four hour game design.
  • World of Goo co-creator Ron Carmel talked about going indie.  Slides available in this post, item #2.
  • Dan Cook bitches about the quality of a few of this year’s GDC talks.  (The selection process is quite strict, by the way– but of course, you can’t really know a talk’s quality before it’s written and delivered.)
  • Raph Koster notices that it’s all going digital distribution, casual, mobile, in-browser, everywhere away from the traditional pub->store model.
  • Zombies attack.
  • Sexpigeon happens across GDC:

    Sexpigeon notices GDC

    Who has come to town? It is game developers. They are shaped exactly like comedy writers: soft, pret-a-porter, aware of “how people dress” but amiss in the details. Girls in lycra, of all things, have been recruited to hand out energy drinks.

    (More on the development process, and a poetic note on video RAM.)

QuickBooks Rant

March 21st, 2009

It’s tax time again, and that means it’s time to use the most aggraviting program in the world, QuickBooks.  Here are a few highlights.

  1. I was googling for information on how to order 1099-MISC forms, and came across this helpful page.  Go to that page, and then click on the link to order some forms.  Go ahead, click on it.  Ooh– that link won’t work in your pedestrian little web browser, will it?  No– that link is only for people who are accessing their web help from inside QuickBooks 2009.  They have successfully broken hyperlinks.
  2. How’s this for planned obsolescence?  My copy of QuickBooks 2006 will no longer be able to send email after May.  If I upgrade, I can still send email.  Oh.  I guess the spec for sending email over the internet must be changing in May, right?  Huh.  Or maybe I’m shutting down my own SMTP server in May?
  3. Okay, let’s upgrade.  They’ve got some big discounts for upgraders.  Huh– they have even bigger discounts for first-time buyers, to the extent that they cost exactly the same. That doesn’t stop them from requiring your license number to purchase your upgrade copy, however.

Ah, well.  Not such a huge hassle for filing my taxes.  Oh– except that these are only the problems I’ve hit in the first 10 minutes.

Our Common Web Site Tools and Libraries

March 13th, 2009

Most of our web sites get anywhere from a little to a lot of custom plugin or script work, but recently, they’ve been sharing more and more tech.

When we build a site right now, there’s a solid chance it’ll include:

  • WordPress.  Thanks to tons of intelligent, progressive developments over the past couple years, it’s transformed from blogging software toin a very nice platform for a small business Content Management System.
  • Carrington, a developer-friendly theme for WordPress.  Functionally, it doesn’t really “do” a lot– but that’s the point.  It organizes your development efforts so that you can customize a site, without losing track of what logic goes where.  Early web dev tends towards the frontier hackery until there’s enough experience with the tools to start cleaning things up (see: Dojo et. al. for Javascript).  Carrington is the next step in taming the WordPress as CMS frontier.
  • WP-Super-Cache.  You always need it, but you REALLY need it with Carrington.
  • Prototype or jQuery.  This really depends on if I’m pulling in any external libraries that use one or the other– if so, my decision’s made up for me.  In the absence of any requirement, I’ve tended towards  Prototype (and Scriptaculous) in the past, but jQuery’s syntax is addictive.  It’s a toss-up now.
  • Minify.  This is pretty specific to your hosting setup, but for now we use Minify to keep Javascript and CSS size from dominating page load times.
  • Custom tools.  We’ve got a few tools that have become standard, but aren’t quite ready for posting to the public.  We use a post-inserter plugin on some sites to enhance editability without going all the way to something like Drupal.  We’ve got some automated backup tools, both for site files as well as content, that we use (supplemented by WP-DB-Backup).  And so on.

I’ll post updates as other tools work their way into the stack.  Customizable Post Listings has become somewhat common.  Text Control used to be standard, but isn’t as essential since WordPress editing got cleaned up.

Word of the Day: Hysteresis

March 5th, 2009

A system with hysteresis is a system whose output can’t be predicted simply by looking at its current inputs.  It has “path-dependence.”  If you want to know what its outputs are, you have to look at the history of its inputs.

Consider a non-hysteresis example first: your stereo’s volume.  If you turn the volume to 50%, it doesn’t matter if you’re turning it down from a higher volume, or up from a lower volume.  It’s going to set the volume to 50%, regardless.

A typical hysteresis example is a thermostat.  If you set your thermostat to 20 degrees, it doesn’t turn on the furnace at 19.9 and turn it off at 20.1.  Rather, it’ll turn on at 18, and then stay on up until 22.  So, if the temperature is 20 degrees, you can’t tell solely from that bit of information whether or not the furnace is on.  Rather, it depends on the history of the input– in this case, the temperature.

In games, we frequently use hysteresis when mapping analog input to digital output, in order to prevent small deviations in analog input from fluctuating rapidly between discrete states.  Like the thermostat, we do this with a “keep doing what you were doing” state.  It often boils down to a bit of code like this, from a blog entry by Shawn Hargreaves:

const float hysteresisAmount = 0.1;

if (inputValue > threshold + hysteresisAmount)
    DoSomething();
else if (inputValue < threshold - hysteresisAmount)
    OtherThing();
else
    KeepOnDoingWhateverYouAlreadyAre();

If you read the above-linked blog entry from Shawn, you’ll get a few good examples of hysteresis in games.  You’ve probably played games which have failed to exhibit hysteresis.  One I’ve seen far too many times: AI enemies keep running towards you, then running away, then towards you, then away.  Hey, AI, keep doing whatever you were doing!

For now, I’m interested in hysteresis associated with player input.  Shawn gave one example: if you push the analog stick just a little, you get the walk anim.  If you push it a lot, you get the run anim.  If the stick is in the middle, you don’t know if your character is walking or running, because we’ve built in a little “keep doing whatever you were doing” threshold in there.

That example is no longer applicable to modern games, which blend between the anims.  Are there other examples of hysteresis relating to player controls?  Where do we map analog player input to digital output?

One example is target selection in a third-person brawler.  Which guy do I attack, when I hold the stick towards a couple of close-together dudes?  The input here is the stick angle, and the output is the target.  Most games will “stick”  you to the same target once you’ve started beating him up, unless you press substantially far off from his angle.  The game cares about the history of the input: “did you start out pointing towards this guy, or that guy?  If your input is in that threshold zone, I’ll keep you pointed at the same guy.”  If games don’t do this, targeting will feel jittery, and your character will look stupid as he alters his facing rapidly between two competing targets.

One tricky part of discussing hysteresis is limiting the definition. Of course games exhibit path-dependent memory– if the order of your button-presses didn’t matter, it wouldn’t be a very interesting game!  So you need to define “system” very narrowly: “If I press this button, do I jump?”

Also, hysteresis describes path-dependence, not rate-dependence.  A good rule of thumb– without trying to get too far into the definition of hysteresis– is to ignore any phenomena that are dependent on time.  For example, if I press the jump button twice quickly, I’ll only jump once (because I’ll still be in midair).  That’s not hysteresis.  We want output that’s dependent on path.

Yikes!  I suppose that’s more than you ever wanted to know about hysteresis.  I’ve been trying to come up with more examples of hysteresis, especially related to player input.  Aside from targeting, I haven’t come up with much.  Let me know if anything springs to mind.

Jason Kapalka (PopCap, Bejeweled Twist) Interview at Gamasutra

February 28th, 2009

I found this interview with Jason Kapalka to be rich with little game design nuggets.  Here’s an example:

We ended up with a hexagonal grid and that played really well, but the problem was anybody who looked at a hex grid just was turned off right away. So we ended up doing something where we kept the hex grid but faked it.

So the hexes got turned into squares, like little tiles, but they’re offset by 50 percent. And that’s just a cosmetic change, but it actually makes the game much more appealing to casual players.

He also addresses some early issues I’ve been hearing about Puzzle Quest: Galactrix.  Because of that, and the universal nature of some of the design issues he discusses, this interview crosses over pretty well between casual and hardcore.  I’ll be searching out more interviews with Jason to see if I’ve been missing out.

@independentcrtr

February 24th, 2009

I don’t know if it’s coincidence or critical mass, but in the span of about a week, three separate groups/people told me that I need to start twittering.  Tweeting.  Twitlurping?  Like Facebook, Twitter has come a long way from its original mission, and is no longer solely a tool for Wil Wheaton stalkers.  (Though they still make up the majority of its users.)

I snagged Twitter Tools (roughly half of all useful WordPress plugins were created by Alex King in part or in total), so if you don’t Twulu, you’ll still see my [censored]s in the sidebar.  And if you do Twuzzle, you’ll see an alert from me every time I update the blog.  It’s got more functionality, but I’ve opted not to use it.

Also, I’m using ping.fm to update Twitter, Google, and Facebook simultaneously.  Is that irritating to folks who actually check FB and Twitter?  Probably.

Official Fable 2 Map

February 14th, 2009

Thanks to commenter NIK who pointed out that Lionhead’s released an official Fable 2 map.

The 44 meg TIFF destroyed my laptop, so in an effort to destroy my bandwidth, I’ve created a much smaller JPEG for you to download here.  It’s zipped in hopes you’ll download it instead of bookmarking it, thanks. :)