Game development is tedious, let’s go shopping!

Let’s be clear:  I love making games, and I hope to do it for a few more decades, fate willing.

That said—like in other creative endeavors—the pursuit of awesomeness in game development is often mind-numbingly tedious and mundane.  Case in point:  my last week and a half.

It all started when I decided the next cool thing to work on would be to get the partygoers to be able to pick up stuff, like books, sculptures, drinks, cigarettes, and any other MacGuffins I come up with for the Spy missions.  Let’s ignore the fact that it’s 2010 and game developers still need to think about and do work to get characters to pick up objects in game worlds.  Sigh.

Okay, this seems like a reasonable short term programming goal that will allow me to further explore the design space.  For example, it will allow the characters to carry books away from the bookshelves, making it harder for the Sniper to keep track of what’s going on, etc.

Easy!  What could possibly go wrong?

I broke this high level task down into bite-sized components:

  1. Add an event track to the animation system so the animations can tell the AI when the object should be attached.
  2. Make an animation for picking up the object and have it fire an attachment event.
  3. Add non-character dynamic items as a concept to the code.
  4. Add a simple attachment system to the character AI and rendering code.
  5. Write a quick full body IK system so the character doesn’t have to align with the item exactly1.
  6. Hook it all up.

I start on Step 1, and get it done relatively quickly.  There was a bit of an issue of figuring out how to represent the event track in the modeling tool, but once I figured that out (with help from the awesome Ryan Ellis), it went pretty smoothly.

Okay, so next up, Step 2, the rough animation to pick up an item.  Of course, when doing an animation referencing an item in the world, you want that item in the view while you’re doing the animation.  I load up the pedestal with the statue on it into the file with the character rig, and get this:

That’s a very tiny pedestal you have there.

Hmm, that’s odd…

Oh, right, none of my asset types are in the same coordinate system or at the same scale. This is what I get for rushing to get a demo together for GDC2009, and then forgetting about it and never cleaning it up.

In case you’re wondering where the statue that’s supposed to sit on top of that (tiny) pedestal is, here you go:

This is what they mean when they say “High Art”.

Oh boy.  SpyParty currently has about 10 distinct weighted meshes with rigged skeletons, and about 27 animations.  3D graphics tools do not like it when you adjust the scale and orientation of an already complete  animated character.  This at least partially explains why most indie games are 2D…

After sinking into denial for a few days, it became clear that I needed to just dive in and rescale everything into the same space now2, rather than putting it off any longer.  I will spare you the gory and frankly boring details, involving writing scripts in multiple languages, unhooking and rehooking the animation curves from the bones, a lot of manual typing and clicking, liberal use of the undo key, reading half an infinity of web pages, and a lot of black tea.

I did, however, take some screenshots along the way.  First, there’s the shot I used for the April Fool’s post:

Most of the world is in meters, the characters are not.

Here’s one attempt at rescaling the characters:

Where’d everybody go?

Oh, there you are. You are very small, James.

I eventually got them the right size, only to find some of them are totally hosed:

Some of the characters look like monsters from Half-Life.

But, finally, after more than a week of work:

Hey, from the outside, it looks exactly like it did two weeks ago.  So unfair.

However, now things are finally in place for some more interesting character interactions with the world:

I am now optimistic that I can start on Step 3 soon.  :)

Random:  I’ve been listening to Pandora today with Radiohead as the seed, and it’s just looping Radiohead -> Thom Yorke -> Death Cab for Cutie -> Beatles -> Modest Mouse -> Smashing Pumpkins -> Nirvanna -> Beck -> Coldplay -> The Strokes -> The White Stripes -> Muse -> Pink Floyd -> Led Zeppelin and then back again.  Not a very diverse list.  I usually leave Pandora running with no feedback just to see where it goes3, but this is a pretty unsurprising and short list.

  1. This is a step that might give some people pause, but I’ve written so many IK solvers over the years that I figure I can whip this out in a day or so.  Famous last words. []
  2. In meters with z-up, like God intended. []
  3. I have the mental image of their matching algorithm starting to panic after a few hours of no user feedback.  One time I started with Sigur Ros and it played The Scorpions after about 8 hours! []

24 Comments

  1. Gavin Clifton says:

    Are you doing the animation/graphics yourself at this point or have you someone doing them for you?

    • checker says:

      I’m doing everything myself right now (although I got some help with some of the meshes to make it to GDC2009 on time). That will probably have to change, because even though–little known fact–I actually went to art school, it’s probably going to be too much work to do the design, programming, art, and audio and still finish before the heat death of the universe. But, for the prototype, at least for now, I’m doing it all. It’s great to be able to do all the parts because you can get a feel for how things fit together at a deeper level. Plus, if it’s 3am and I need a new animation, I just make it. ;)

  2. Mike says:

    I absolutley love the ideas! I heard about this from StumbleUpon from http://www.destructoid.com/why-you-need-to-be-excited-about-spyparty-167171.phtml Great job, i’d pay $50 for this right now!

    • checker says:

      Thanks! I’m tempted to sell you a copy right now for $50, but it’ll be better if you wait. :)

  3. jordy says:

    That pick up animations seems neat.

    • checker says:

      Yeah, it’ll be great to have items in the world, I think it’ll really add a lot of depth in unexpected ways. For example, if you walk away from the pedestal with the statue, the guard will come over and ask you to put it back and people will look at you weird, and the AIs won’t make this gaffe very often, so you need to be careful as the Spy to not get distracted and move without putting it back or you’ll draw attention to yourself.

  4. Jonathan Fulton says:

    Hey, this is great stuff. I originally saw a post on Kotaku about your project, and I’ve since added this site to my RSS reader.
    It’s really cool to read about the challenges that game developers face, as mundane as they might seem to you, us proles never really get to see what actually goes on during the process in detail, at least not beyond the “I coded this so it would do this” speil you get on IGN…

    Anyway, I’m really excited to see who shows up at the spy party (ha), and I’ll be reading every post that comes up. Keep it up!

    btw, any chance of a getting an OSX version? That would make my millenia.

    Jonathan

    • checker says:

      Cool, I will continue to post more process stuff, mundane and not. :)

      > OSX

      Not sure yet, but hopefully. I don’t have a modern Mac right now, but I assume I’ll get one eventually and then do the port. Doing ports like that is good for keeping your code clean, as well.

  5. reginald says:

    Z ? Z ?! Y is up, please.

    is Ryan Ellis still fighting in the Martian Wars ? Science help us !

  6. Joe says:

    Glad to see more development ideas on this game :D I posted something a month or so ago, and am still adamantly checking this website for new informations. This game seems like it’ll be a favorite for years, or at least a game my friends and I keep coming back to. I know release dates are probably not something you even want to fathom right now, but do you have a release YEAR in mind? Or is that kind of a, “well I don’t wanna give a year in case I can’t guarantee it” situation?

    Any news is awesome news though (especially news of release or demos!)

    • checker says:

      > but do you have a release YEAR in mind?

      Definitely this century!

      The truth is, I’m a producer’s worst nightmare. My motto while at Maxis was “Overdeliver, late.” I’m not proud of it, but I’m really really bad at predicting how long it takes me to do something, and the only saving grace is I usually deliver something cool (*knock on wood*). As I say on http://chrishecker.com/Please_Finish_Your_Game, I’m a big fan of the Miyamoto quote, “A delayed game is eventually good, a bad game is bad forever.”

      That said, if it goes past 2013 you have my permission to hunt me down and demand a copy of whatever I happen to have working at the time. :)

    • Joe says:

      Sounds like a plan :) Demos by 2013 or bust! But I definitely agree, I’d rather wait for a game than have companies rush something that comes out horrible.

      On a side note, I also think it’s really cool that people can post here and the actual developer of the game will talk to us. I like feeling like thoughts I’m having are relevant to the developer, or even if someone posted a great idea it could be incorporated. That’s pretty neat.

    • checker says:

      Yeah, that’s one of the awesome things about indie games, it’s really cool from both the fan side and as the developer. You aren’t allowed to have this kind of interaction when working on a big game at a big company.

  7. Alex says:

    You say you’ll be working on the graphics, to what standard are you hoping to achieve?
    Also, what do you think will take up most of your time in order to complete this? :)

    -Alex

    • checker says:

      > what standard are you hoping to achieve?

      Well, I’d like to make SpyParty what I call a “AAA Indie” game, so think of the level of polish of games like Braid, Castle Crashers, World of Goo, and Flower, as examples. I don’t know what the final aesthetic is going to be, but I’m pretty sure it won’t be “realistic”, because I don’t want to fall headfirst into the Uncanny Valley. Plus, I don’t have 200 people working on the game. :) So, something stylish but achievable at a high level of polish with a small passionate team.

      > what do you think will take up most of your time in order to complete this? :)

      Well, mental-energy-wise it’s going to be the game design. The problem with doing something different is there isn’t a map to travel by. But, actual wall-clock time, it always seems to be code, on big or small teams. We’ll see…

  8. Alex says:

    Thanks very much for answering the questions,
    Also, PLEASE post some sort of video-gameplay and more screenshots :)

    -Alex

  9. Flux says:

    Hey Chris we’ve worked together before you probably won’t remember me, was an intern at Spore at the time. VERY happy to see someone tackle this game idea, I think it’s brilliant. It’s funny how difficult the entire process can be, from bones to rigging / skinning then getting the game code to understand everything, doing this traditionally. And that’s before you ever get to testing and playing it. It really makes me feel like I’m not alone when doing these tasks solo, the same way you’ve been working. Thanks for writing these posts, love watching other developers in their process as already it’s a time consuming task documenting it on top of designing / animating / coding!

  10. jd says:

    Looks cool so far, chris! Let me know if you need a greek letter tester.

    Hope you can still convert to negative-Y-forward before it’s too late.
    And what’s so hard about writing an IK solver? :)

  11. XJ123 says:

    So, the game is coming out in 2 years? IT BETTER BE GOOD! Lol, jk. Do your best! =)

  12. jordy says:

    LOL ^^, that’s so old, that was back in the 19th century, now, 2 centuries ahead, it’s all about making money, and making it quick. I’ll advise you to do the same…;p. OK, you’re right, I wish it where those times again, and I can nothing but commend you for taking your time.

    Captcha; Daniels

I have temporarily disabled blog comments due to spammers, come join us on the SpyParty Discord if you have questions or comments!