Yeah, yeah, the title is a bit cheesy. (I was originally going to go with “The Galaxy is at Peace with Super Metroid Symphony”.)

super-metroid-symphony

This past Tuesday, Black Robinson delivered a synthetic symphony love letter to Metroid fans to mark the 19th anniversary of the Super Metroid release in Japan. I’m a big fan of retro video game music and this now tops out as my favorite album in the genre.

I remember vividly playing Super Metroid for the first time and being totally blown away by the prologue with Samus Aran blinking behind her visor and, my god, the music from that portion is covered in this album in a way that just brings tears to my eyes.

Super Metroid Intro

Thankfully, Blake recreated every single piece of music from the game so every fan can joyfully reflect on their own favorite memories from Super Metroid. It’s hard to believe that just one dude was able to pull off. It’s a tremendous work of art and a labor of love on his part. For video game music fans it simply doesn’t get any better than this.

The album is available on iTunes for the completely undervalued cost of $9.99. I bought it again on Loudr for my gamer geek brother today, setting my own price of $20, not because I’m a nice guy (I am) but so I can share something awesome and, hopefully, do my little part to encourage Blake to give us some more great music.

I’m just blown away by this. It’s excellent.

Super Metroid Symphony by Blake Robinson

{ 0 comments }

A couple of years ago I decided to move all my hobby source code from my local Subversion service to an online service.

My needs were pretty simple:

  • Interface locally through a Subversion client (like TortoiseSVN)
  • At least 500MB, but the more the better
  • Private, with SSL encryption
  • And, like my email, free

Assembla was highly recommended by peers, but wasn’t free, so I went with something else that fit the bill. Since then this service moved their ideal free, private, secure, 500MB, ad-free package to a less attractive free, private, non-secure, 200MB one – and with badly aligned, eyesore advertisements to boot.

Not that I can really blame them, mind you. They do need to make money, and it’s not like I program for free (at my day job anyhow). So no hard feelings.

But it turns out that Assembla is now offering a free plans so I’m trying them on for size. Their free SVN hosting is private and secure – and currently comes with a 2GB data store which is more than enough for my hobby projects that tend to be heavy on code and light on artistic resources.

It’s early into my relationship with Assembla, but at first blush I’m impressed with how easy it was to create a new repository and start adding code to it. I also appreciate their online dashboard for being well-designed, clean, and functional. You’ll see some ads there, but they are respectfully out of the way.

We’ll see how it goes, but so far so good.

{ 8 comments }

If you’ve worked as a game developer in Austin for the past 5 or 6 years you’ve no doubt heard the buzz: Austin game dev is in a bit of rut.

But with such a strong showing in 2010, I’m calling it over.  After years seemingly dominated by cancelled titles and studio closures it feels like we’ve hit our stride. It was a great year.

Note: It’s possible in my roundup that I may have missed some key releases from Austin talent. Let me know and I’ll fix that (and my apologies in advance).

Comic Jumper

Comic Jumper 

Twisted Pixel Games moved to Austin just two short years ago and have already shipped 3 high-quality games, including this year’s Comic Jumper. These guys give me the impression they really love their work and don’t take themselves too seriously.

I don’t even question a purchase from this studio anymore. If they make it, I buy it.

Darksiders

Darksiders

If I was forced to pick a favorite, and I wasn’t clichéd enough to pick my own game, then Darksiders would probably be it. Vigil Games took some knocks for borrowing gameplay elements from other titles, but I think we need more games that are heavily influenced by The Legend of Zelda and The God of War. I really enjoyed it. Great story and voice-acting too.

Disney Epic Mickey

Disney Epic Mickey

The game I shipped this year, and proud of it. What I love best about Disney Epic Mickey is the union of “game I want to play” and “game my kids want to watch me play”.

We’re having a great time together with this – except for that one time I got lost and my youngest daughter yelled, “I’m bored, let’s play Mario!” Looks like I’m only sending one kid to college. Let’s see how bored she is then.

Donkey Kong Country Returns

Donkey Kong Country Returns

I’ve got to give Retro Studios credit for keeping this one under wraps for so long. I had no idea they were working on Donkey Kong Country Returns until they announced it at E3 alongside Epic Mickey.

It’s another strong showing from Retro Studios, which has been giving Austin solid game dev cred all decade.

Star Wars Force Unleashed II (Wii)

Force Unleashed 2 (Wii)

From what I’ve heard, Red Fly Studios made the Wii version of Star Wars Force Unleashed II – a separate game from the Xbox and PS3 offerings – from scratch in the timeframe of one year. And I’ve read more than one review that says this version was better than the HD versions, which certainly had many more resources thrown at them. Most impressive.

This is the only game I haven’t played yet, which is horrible since so many good friends worked on it. I’m going to have to do something about that soon.

And The Rest …

And the restCertain Affinity collaborated on the development of Call of Duty: Black Ops. Although the game is primarily developed in California by Treyarch, it’s got to be a big deal for Certain Affinity to have worked on the most highly anticipated and best-selling game of the year.

And I’m sure there was a lot of solid new iPhone, Flash, or Facebook game apps developed in Austin this year but I have to apologize for not having that on my radar.

But in this space I will take special notice of Spacetime Studios’ game, Pocket Legends. I worked at Spacetime for a short while before coming to Junction Point / Disney. They’re a fun bunch of smart developers – and it sounds like they’ve had a great year with their mobile MMO. That they’ve been able to tap into that market so quickly is a testament to their technology and culture.

Congrats Austin Developers

With all this great (shipped!) software there’s no doubt 2010 was a bit of a rough ride for many. I hope my peers found the challenges worth it and are looking to continue improving and growing for 2011. And let’s find a way to get these suckers out the door without working such crazy hours, eh? I’ve got kids now, you know?

Congratulations on a terrific year, and thanks for making Austin a cool place to live and work.

{ 1 comment }

Writing is hard.

Today marks my first-year anniversary with this blog – and that pretty much sums up my thoughts in three words.

It’s kind of funny I’ve been surprised by this fact as everything I’ve ever thought worth pursuing before has turned out to be a difficult affair:

  • Mastering a musical instrument
  • Speaking a new language
  • Drawing, painting and other fine arts
  • Making video games

By the way, that last example has been an especially sore point for me for years, as the general public tends to think game developers just sit around playing games all day with perhaps the odd task here and there to tighten up the graphics.

So consider this my apology to writing professionals and enthusiasts everywhere. This stuff is crazy hard – just like any other worthy pursuit – and I’m sorry I took it for granted.

But this experiment has taught me there is value at keeping at it, if for no other reason than to be more than just a guy with a résumé. I care about my craft and this is a good forum to grow outside my day job (which has often been a night and weekend job too this past year as we brought Epic Mickey to ship).

So here’s looking forward to year two from a writer trying to suck less. And special thanks to the half-dozen or so industry friends and family members for watching.

{ 0 comments }

Clever Code != Friendly Code

by Seanba on November 7, 2010

The other day I was looking at some old code I’ve written.

Ugh.

Now, I tend to agree with Jeff Atwood’s Suck Less Every Year mantra when he says:

You should be unhappy with code you wrote a year ago. If you aren’t, that means either A) you haven’t learned anything in a year, B) your code can’t be improved, or C) you never revisit old code. All of these are the kiss of death for software developers.

But it’s strange how even the “good” or “smart” code from times gone by has a horrible code smell to it now.

Case in point:

using namespace std;

for_each(obsFirst, obsLast, bind2nd(mem_fun(&Observer::LightMoved), light));

Quick – what does that code above perform? Unless you’re an old-school Standard Template Library user (the usage has been simplified with Technical Report 1) then you’re probably going to have to look something up.

std::for_each is itself easy enough to grok:

using namespace std;

for_each(first, last, someFunction);

This simply invokes a function or function object (anything supporting the parentheses operator) for each object within the range from first to last, passing in the object as an argument to someFunction.

But say you need to pass in two arguments to the function called? Then you’ll need std::bind2nd.

using namespace std;

for_each(first, last, bind2nd(someFunction, arg2));

This will call someFunction(arg1, arg2), getting each instance of arg1  from the range of first to last.

Actually, that code above won’t compile, because std::bind2nd  requires, as its first argument, a functor object with particular class traits, so we have to wrap the function appropriately with an adaptor.

using namespace std;

for_each(first, last, bind2nd(ptr_fun(someFunction), arg2));

You can see things are starting to get complicated here. Now say you don’t want to call a free function for each object in a range with a second argument, but rather a member function on the object. That’s why std::mem_fun is needed, to wrap a member function into a form needed by std::bind2nd.

using namespace std;

for_each(first, last, bind2nd(mem_fun(&Foo::SomeMemberFunction), arg2));

Yuck, what a mess! But written another way, this is exactly what that code above does …

for (fooIterator = first; fooIterator != last; ++fooIterator)

{

    *fooIterator->SomeMemberFunction(arg2);

}

… which is actually a much better way of explaining the whole eyesore. So why not just write the code that way to begin with and be done with it?

To be honest, I read about for_each, bind2nd, and mem_fun in some book about STL and thought it was pretty clever, so I started a new habit of using those template functions whenever I could.

And, unfortunately for me, the very first time I had a code review with a for_each  loop of this fashion in it, the reviewer had these reactions:

  • First impression: “What the f*** is this s***?”
  • After explaining: “Oh cool, I didn’t even know you could do that with STL.”

I wish he had of just kept with his first impression and told me to rewrite that line of code into something readable, but he was impressed with the new knowledge I shared with him, and I couldn’t help but feel smart about the whole stupid thing.

Funny enough, I was asked to add a code comment though:

using namespace std;

 

// Call observer->LightMoved(light) for all observers

for_each(obsFirst, obsLast, bind2nd(mem_fun(&Observer::LightMoved), light));

Bleh. I just think that comment makes it all the more obvious that there is something wrong with the code.

Keep it simple, stupid

There was a time in my development as a programmer where I really cared if people thought I was being clever, and had beguiled myself into thinking that the intelligence of a programmer was best demonstrated by the complexity of his code. I mean, hey, if I’m writing code that just any programmer can easily understand then I mustn’t be that advanced, right? Besides, it’s their job as engineers to keep up on the latest libraries or standards so they can speak my language anyways. Can’t easily understand my code? Pfft … then you mustn’t be very 1337.

I’m embarrassed that I ever used to think that way. Writing software is hard. So hard, in fact, that I’d wager a majority of programmers are on software projects that will fail. Some of that failure may be out of our direct influence, but we can at least control the complexity of our own work, and make it easy to understand, test, and (gulp) modify by our fellow peers.

The following code may not convince my teammates that I’m particularly smart or gifted …

for (ObserverList::iterator itr = first; itr != last; ++itr)

{

    Observer * observer = *itr;

    observer->LightMoved(light);

}

… but they will at least quickly understand what it does, and perhaps be grateful for that much.

{ 3 comments }

Back in June I was still a bit high from the positive response Epic Mickey had received from our E3 showing:

But now we’re in everyone’s face, so to speak, and it’s time to deliver. It’s possible that I’ll never get the opportunity to work on a game of such potential again -  so I’m going all in.

Well, I think the studio leadership must have heard about me going all in, because I can’t remember a thing from the summer and fall of 2010 except being tied to my desk helping our team get this baby out the door.

Disney Epic Mickey logo

I’m not complaining. I’m very much aware of how difficult it is to ship. Besides, it looks like Epic Mickey is poised to become the most successful game of my career – and by a large margin. This is also the first time I’ll be able to play one of my games with the kids – with all three of us enjoying the experience – much like we do with Super Mario Galaxy, Kirby’s Epic Yarn, Chibi Robo, Zack & Wiki, Rocket Slime, etc.. That’s some pretty good company right there.

And my kids just love Oswald the Lucky Rabbit now. Ella below was especially delighted when I told her that Oswald is voiced by the legendary Frank Welker (he did Megatron back in the 80s, and my kids are just so cool for getting that).

Kids love Oswald 

Anyway, my work on the title is done, and we’ll be on store shelves November 30th. Now to get back to all the other stuff in life I love so much …

{ 1 comment }

Double Fine Productions - I deserved that

I’ve been a game developer for over ten years now and one thing that I can promise you that is deep in every heart of each person who works in this industry is this: an idea for an awesome video game they hope to some day create.

Today I’m going to do something I’ve never done before and publicly talk about my own brainchild.

It’s a Halloween themed game with gameplay elements similar to those found in old-school Japanese RPGs. The game stars a geek squad of junior high school kids who run into trouble with some local bullies while they are out trick-or-treating. And then, by some cosmic accident (the witching hour, a passing comet, an ancient artifact, whatever – I haven’t figured that part out yet) they are swept into a magical quest where they adopt the powers and abilities of their costumes and … well, you get where this is going.

I have some great ideas for the costumes too! Naturally, being a huge Transformers fan myself, one of the characters is going to be a complete badass giant transforming robot. Man, this is going to be awesome! And original too!

But then … awww crap!

“The first of four new Double Fine games is a little Earthbound-inspired RPG about a crazy Halloween night.”

What? RPG? Halloween night? Gulp!

There’s more:

“The player’s abilities, and those of AI-controlled trick-or-treaters, will be determined by the costumes they’re wearing. Players will transform into gigantic versions of their costumed characters—like a massive knight or skyscraper-sized mech—when engaged in battle with Halloween beasts.”

I’m not kidding, I literally felt ill upon reading that.

And this screenshot brought tears to my eyes …

Costume Quest makes me cry

I’ve had a lot of ideas for what would make a cool game but never before have I ever seen something so close to my own vision, something that I thought of as a totally original idea*, independently dreamt up by another developer who is going to take the ball and run for it. What a surreal experience it was for me today.

And what a perfect lesson it is on the world of difference between having an idea and taking action on that idea. Yeah, I had a great idea for a game … but so what? Someone else if finding a way to turn that idea into something real.

Sigh.

Well, okay, so I feel a bit down on this today, but in all honesty I truly wish Schafer and his gang over at Double Fine the very best of luck with Costume Quest. And hey, at least it’s being developed by some world-class talent.

And now to make sure my other gaming ideas don’t suffer the same fate …

But still. Ouch.

* My good friend (and fellow developer) Andy tells me that this idea really isn’t that original, per an old Buffy the Vampire Slayer episode. I’m more of a Firefly man myself.

{ 1 comment }

I’ve worked booths at E3 and Comic Con before in my career, but something that made this year’s event drastically different for me happened when someone from Disney public relations approached me with a camera crew in tow and asked me to do an interview for a press outlet.

“Sure, why not?”

I probably did 3 or 4 of these a day at E3, as did my fellow Junction Pointers that attended the show. Now doing a presentation for any group of strangers is one thing, but there’s something about having a microphone and camera in your face that has the potential to crank your nerves up to eleven.

But to be honest, I enjoyed the experience, and welcomed any interview I could get. That’s probably unique for a programmer-type-of-guy.

Now, I wish I could claim to be a gifted speaker with nerves of steel but anyone who knew me growing up would remember that kid with the cracked voice and bright red face who fell apart in front of a crowd. No, sadly, public speaking is something I have to work at every week.

But I can do it now – which is an amazing feat for me, and probably most other people.

Anyway, one of the interviews I did for Disney Epic Mickey at E3 is available on YouTube. It was with Gavin Greene and Elder-Geek.com and as far as I know, this is my very first video appearance on the intertubes …

There’s some stuff on there that makes me wince a bit. Most notably, I should have said the title of the game, Disney Epic Mickey, instead of “this game” in my introduction. I also struggled to find the right word a couple of times as I spoke.

But I can watch it and not want to die – and that’s a BFD for me.

For folks looking to grow in this way I give Toastmasters International my highest recommendation. I’ve been a member for several years now and believe it’s the single most important thing I’ve done for my confidence and career. If you think your inability to comfortably speak in front of a crowd is holding you back then why not find a club near you?

(Thanks to Gavin Greene and Elder-Geek.com for the interview.)

{ 0 comments }