Monday, August 29, 2005

Inside of a dog it's too dark to read...

So, I was reading this, and it got me to thinking about game genres that haven't been discovered yet.

I'm thinking that there's a huge untapped genre of social-interaction games. People are social creatures, but currently the only real outlet for this in the gaming world requires you to interact with other humans (generally, 13-year-old twits, although I think that's starting to change).

ICO is a good example (albeit an extremely limited one) of what's possible in the social-interaction genre. Your relationship with Yorda is what makes that game compelling. We, as humans, like to interact with other beings, and a game that can truly evoke this social response has yet to be written (I'm discounting the glorified chat rooms that are MMOs, as the interaction is with other players, not the game itself).

It'll be interesting to see whether any game designer is able to achieve this in my lifetime - the problem is that designers keep trying to capture human interactions, which is exceedingly difficult to do.

That said, I wonder what might happen if if a designer really put their mind to (for example) emulating a dog companion in a game. It's certainly an easier task than emulating a human being - would they generate the same social response? Having spent many hours playing WoW with a computer-generated companion, I can attest to the fact that after escaping some tense situations, I've felt genuine affection for my little helper demon. And this is for a creature that basically has a single canned animation loop and two commands: "Attack that monster", and "Stop". Now imagine if that creature could:

  • react when hurt
  • run to you for protection
  • leap to your aid
  • mourn/emote when you are lost or hurt, or get excited/happy when it sees you, or you bring it food or something similar.
  • learn simple tasks (bark when monsters come near, etc)
  • exhibit various natural behaviors (sniffing, scratching, hunting for food, whatever)
As ICO showed, it doesn't take much to make a creature seem "alive", and we as humans seem predisposed to form emotional attachments to living things. I've got to hope that someone will tap into this in their game sometime soon, in more than the utterly trivial "virtual pet" genre, as it's that level of emotional investment that makes games truly memorable.

Wednesday, August 24, 2005

The D and the D...

So, I have played more than my share of computer RPGs in my time, stretching back to the painfully thin "Akalabeth" and continuing to this day (btw, Mom, I still haven't forgiven you for throwing out my mint condition Ultima ][ with the cloth map). But my actual pen and paper experience is rather limited (consisting mainly of a painful runthrough of the first DragonLance scenario back in the early 80s, where the DM's misunderstanding of a critical encounter resulted in a total party wipe and the premature end of the campaign).

It's actually kind of been my secret shame - when my friends would talk about their campaigns, I'd nod my head enthusiastically, hoping that nobody would actually ask me about my non-existent character and expose me for the fraud that I am (I needn't have worried - turns out that most people are quite happy to tell you all about their noble character, but couldn't care less for whatever rabble you're pushing around the virtual world).

That, however, is soon to come to an end, as my wife and I have been invited to join a D&D 3.5 campaign that a friend of mine is starting up. We spent last night rolling up our characters and doing a little prologue with the DM to set the stage for the campaign to come. I'd forgotten just what a visceral experience it is to start with a blank sheet of paper, and roll actual physical dice until a fully formed character is lying on the table in front of me (Halen, Cleric of Kiri-Jolith). And I'm totally in love with the 3.5 system - it's fairly simple, but there's this huge smorgasbord of skills, and feats, and prestige classes, and... wow. I bought the Player's Handbook and just devoured it, cover to cover.

My friend left us with a bit of a cliff hanger at the end of the prologue - I felt like I was 13 years old again, walking out of The Empire Strikes Back, sputtering "But, uh, wait! That can't be the end! It was just getting good! Awwwwwww.....".

I can't wait.

Monday, August 22, 2005

Sock it J2ME, baby!

After several years of dev management, and a stint in a fairly esoteric high-level technical architecture position, I've somehow managed to be reborn as a J2ME developer. Given that I once wrote applications for one of the first smart phones, using nothing but 8086 assembly, the irony that I'm now writing (and whining) about using Java on this platform is not lost on me.

That said, let the whining commence.

  • There are some fairly stupid things in the J2ME spec. For example - there's no good way to specify how much storage space your app requires, unless you have fixed storage requirements. Basically, you have to specify in advance, in a static application descriptor how much space you want. If you specify more than what the phone can supply, it won't let you install. If you specify less than what the phone can supply, you can install, but it won't let you use any more than what you originally requested. It's as if nobody ever thought that perhaps an application might like to be able to use a dynamic amount of storage, based on either total storage availability, or on user usage.
  • Phones have arbitrary limits on the size of the application they'll let you install. There's not really any reasoning behind these limits as far as I can tell - they just have them. So, for example, you might have a phone with 6MB of storage, and > 1MB of heap space, but they still limit your application (JAR) size to 128K.
  • The security model is dictated by the manufacturers/carriers, and is seldom controlled by the end user. This means that if your application wants to use the internet on (say) a Motorola V400, it'll prompt the user for his OK every single time - the user doesn't get an option to say "OK, don't ask me again" unless your app is signed. Which brings us to:
  • There's no practical way to sign your application, so it can access privileged APIs on multiple devices. You could (for example) go to the major cell manufacturers, run the gauntlet of their obscure developers program, and get them to sign your app, but you would then find that a number of cell carriers specifically don't accept the manufacturer's signing key, but instead require you to sign your application with their specific carrier key. And they generally have no interest in dealing with you, as an individual or small scale developer, so you have no way of getting your application signed. And god help you if you are writing an application that is anything but a game, because they aren't interested.
  • The manufacturers are all very excited to have you use their special APIs on their devices (for example, JSR 75, which gives you access to the phone's address book). Of course, you can't actually call these APIs unless you have your app signed. And even if you can find someone to sign your app, you can't get your app signed until it goes through a testing/certification process. But you can't put your app through the (fairly pricey) certification process until you've tested it yourself, and you can't test it because you don't have access to the privileged APIs! "Oh, but you can test it on the emulator", they say, speaking slowly and clearly as if you are a simpleton. Which brings us to:
  • Every device has their own, screwy bugs. For example, the Nokia 6230 won't let you write more than 32K to any single record store, even though the record store APIs report that there's plenty of space available. And, the device throws exceptions if you try to do anything with more than one record store open at once. Some Motorola phones have issues with not being able to overwrite data - you can add records and delete them, but you can't overwrite them. Other devices have threading issues that affect how you can read/write data from network connections. Some devices handle timezone math correctly in the Calendar object, others don't. Blah blah blah, ad nauseum. Heck, even the Sun reference implementation has bugs in their record store implementation that show up if you try to access record stores from multiple threads. And don't even get me started on the pain involved in getting HTTP connections working on different cell networks, through different (buggy) proxies. The point being that if you are a J2ME developer, expect to spend at least half your time doing testing/debugging on the specific phones that you want to run on, and while an emulator is a valuable development tool, it's no substitute for hands-on device testing.
Whew. Sorry, I do ramble on, but I had about 3 months of pent-up frustration to let out. I actually have learned some fairly interesting and useful tidbits about writing J2ME apps, which I'll dole out eventually in some future post.

Sunday, August 21, 2005

Meet the Neighbors!

So, I have this dog.

He's cute and all, but as is the case with all dogs, he requires a certain amount of care - care in this case equating to endless walks around the neighborhood, as a little known fact about his breed is that if they don't get a specific minimum amount of exercise every day, they explode.

Now, I've always had a passing familiarity with the areas around my home, but you aren't really familiar with an area until you've passed over it twice a day for 6 months, with an animal whose only goal in life is to minutely inspect every leaf and blade of grass along the way.

In general, my neighbors are a genteel, affable bunch, except for the time somebody stole our "Friends of Magnuson Park" sign out of our yard, and simultaneously called the city to cite us for our overgrown hedge...not that I'm bitter... But there's this one house.

Actually, it's this one SUV, really. I noticed it during last year's elections, when the owner applied a sticker stating "10 out of 10 terrorists agree: Anybody But Bush". OK, fine - if you want to buy into the whole "we're fightin' terrorism in Iraq!" bullshit, that's your prerogative. It's not like 8 consecutive years of Dubya hasn't already convinced me that 51% of the residents of our proud nation are gullible idiots, so finding one in my own backyard shouldn't surprise me.

But now, they've added an "I (heart) Gitmo - Lock the Terrorists Up!" sticker. Guantanamo Bay. You know, the place where we locked up the Afghans without trial (you see, we didn't declare war in Afghanistan, so we don't have to extend the protection of the Geneva Convention to the combatants or anyone else we pick up there - actually, they don't have any rights at all, so we get to lock them up until...well...we decide not to). But, of course, our government wouldn't actually lock up innocent people for years, right, nor would they abuse helpless prisoners?

Gah. Politics aside, there are some things that civilized people should be opposed to (or at least embarassed about), no matter which side of the political spectrum you are on. We're supposed to be the good guys, remember? Even if other countries refuse to play by the rules, that's not how we do things here. Is it?

Anyhow, I pass by this SUV every day. Every. Day. It's driving me nuts. And I still have some leftover "Republicans for Voldemort" stickers that look like they'd be really hard to take off...