diary of an indie game developer

 

Archive for the 'Game Discussion' Category

Download this plugin to accelerate your webapp!

Monday, June 22nd, 2009

I’m using a ton of web apps nowadays. It’s mostly cool, but I have an idea.

You know that plugin you use to deploy your webapp? Or, like WordPress, the plugin you offer to speed up the app’s performance? I think you could add a couple of key features.

First, maybe the plugin could make your app launch in its own window, with a custom icon for the taskbar. That way, I could find your app faster! Plus, maybe you could capture all input, so that I don’t worry about whether Ctrl-B is going to bold my text or make a bookmark. Also, what if you optimized the code a bit more– maybe skip past some of that browser gunk in the way, so your web app doesn’t slow down my (fairly beefy) computer? And shoot, as long as you’re doing all that, maybe you could put all the necessary code on my computer, so that I can run the “web app” while I’m offline.

I can’t believe I just put all those great ideas into one post– I could’ve kept them to myself and made a fortune.

So, Uncharted 2. You’re Leaving Team Damage On?

Saturday, June 13th, 2009

From Joystiq’s report on the Uncharted 2 multiplayer beta.  You can see this train coming down the tracks:

Players will still take team damage from grenades as they did before…

Go on…

…but accidentally grenade killing your whole team in the first seconds of a game are being fixed for the full game.

Accidentally?  C’mon, Naughty Dog, you don’t really believe that, do you?

We are also tweaking the “kick” system.

That’s what I thought.

Modern Game AI Basics (… from 2005)

Thursday, April 30th, 2009

In a recent discussion of game AI, someone helpfully pointed out an article from Damian Isla on the Halo 2 AI.

Despite being from 2005, the article’s still remarkably relevant (but that’s another post).  I highly recommend you read it if you’re into game AI, but it’ll require a bit of time.  It’s a solid rundown on the contemporary AI toolbox.  (It doesn’t discuss more rarely used models such as Fear’s GOAP.)

The basic approach is a “behavior tree” (actually a directed acyclic graph).  Each node consists of a list of potential behaviors, with a decision-making mechanism to choose between them.  Leaf nodes carry out the actual behavior.

The primary decision-making algorithm is the prioritized list.  Basically, you list a few behaviors in order, say: flee, fight, chill.  And then you ask them: “hey, do you want to flee?  No?  Okay, do you want to fight?  No?  Okay, then chill.”  If flee had answered yes, then you’d stop right there, and you wouldn’t ask fight.

I prefer this to another algorithm, the scoring mechanism.  Or, as the article puts it:

Numerous systems feature an analog activation desire: each child provides a floating point number indicating its relevancy, and the child with the highest relevancy wins (with the previous tick’s winner given an added bonus to avoid dithering).

The article mostly discards this option, but I’d like to go into a bit more depth.

I’ve given up on scoring systems for anything other than weighting random selection.  It’s far too easy to accidentally make value judgments.  The idea that you’re going to know every possible scoring of every competing behavior is unrealistic.  So you end up intentionally making the judgment “moving to melee range is more important than ranged against enemy X, but less important than fleeing”, but you end up also ranking your “moving to melee range” behavior against your “get in the vehicle” behavior, or more likely your “get in the vehicle when there’s driver X /Y / Z / no driver / the vehicle is on fire / you’re close to the vehicle / you’re far from the vehicle / the turret is unmanned ” behavior.

Still, I find scoring useful for weighting randomized behavior selection, but I’m unsatisfied with how I usually compute the scoring values when using it for that purpose.

Basic randomization example: you’ve decided that you’re going to perform a melee attack, but you’re thinking about which one.  The opponent is blocking, so a block-breaker is of higher value than normal, and a blockable melee is a bit lower value.

The weighting factor for that is still a black box.  ”Hey, heavy attack behavior: on a scale of 0-1, how valid are you?”  ”Uh… 0.5?”  ”Hey, standard weapon attack: how about you?”  ”Um… 0.7?”  You could restrict the return values to a descriptive enum, say, “awesome, standard, crappy, or invalid”, which each scale the score by a predefined amount, and make it easier for designers to control.  It still seems like an inelegant hack, and I’m open to suggestions.

Returning to the article, it goes into a lot of cool ways to make your prioritized lists more dynamic.  For instance, a Halo 2 squad seeing its leader get killed will cause a high-priority flee action to get inserted into one of the behavior tree nodes for several seconds, potentially causing the squad to run like hell.

An important note: I enjoyed Halo’s enemy AI, but not necessarily because it was substantially better than in competing games.  Halo did a great job of communicating what its AI was doing, through animation and voice cues.  Your AI’s awesomeness doesn’t matter if the player can’t tell what’s happening.

Awesome World of Goo Claymation

Thursday, 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

Wednesday, 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. :)

Jason Kapalka (PopCap, Bejeweled Twist) Interview at Gamasutra

Saturday, 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

Tuesday, 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

Saturday, 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. :)

World-Mechanics Synergy: Ultima 4

Friday, February 13th, 2009

Jon Blow’s posted the answers to his “Name That Game” competition.  I enjoyed the obvious passion in his writeups more than the answers themselves.  One answer in particular actually got me to go through a few hoops to play the old game– Ultima 4.

He picked the perfect bit of the screen to show in the competition– the moon phases that occupy the top bit of the screen.  It’s an ideal mechanic that combines the evocative image of the dual moons with the simple, delightful puzzles of the moongates.  Despite technological advances, it’s no less a struggle today to replicate that sense of fantasy and mystery.

Interacting With Characters

Wednesday, February 11th, 2009

One of the more neglected forms of agency in games is the ability of the player to exert influence on non-player characters.  In striking contrast to mainstream entertainments such as literature, television, and film, games often seem to dedicate far more resources to deforming terrain than to shaping character responses.

Certainly we’ve all experienced the placid, untouchable quest NPC in the middle of a full-scale firefight, or the shopkeeper who doesn’t seem to have noticed that you’ve killed off the entire town.  When characters do notice your actions, it’s often in the form of a generalized love/hate slider, like World of Warcraft’s factions.

The few stabs games have taken at reactive characters have been successful.  Good/evil games such as Fable often write several paths of dialog for each character.  In KoTOR, you have the opportunity to sway a recovered dark jedi either towards the light, or into relapse.  Watching the consequences of your actions on another feels more compelling than your own good/evil choices.

The Sims pushed character interactions further than any other game to my knowledge.  It communicates the internal state changes of its characters through their actions, as well as gestures and Simlish.

Despite early successes such as The Sims and KoTOR, developers are reluctant to take on the challenges of deeper character interaction.  Understandably so– the topic gets short shrift at game development’s popular conferences such as GDC.  The state of the art is quite primitive.  But players are happy to fill in the details.  Remember, you were once quite happy to accept this as a castle.