Saturday, February 03, 2007

Simulating Characters

Every time I think of how to simulate characters in a video game, I think of Oblivion. Oblivion's beautifully detailed (if slightly repetitive), personality-filled faces... and their doomed attempt to turn those models into people.

Leaving aside the extra-doomed with a side order of king-sized doom-fries "social game" they implemented, the game was no better at implementing interesting characters than, say, early text adventures. There's not exactly plentiful examples of how to do it better, either.

The alternative is something like The Sims, which simulates a character based on urges and a personality matrix. I don't think this is a bad idea at all, but I think that it's not really very interesting. Most of the interest in The Sims is due to the meta-content that the player either invents or brings into the game with her.

What would make simulating a character more interesting?

Well, that's a tough question, but something I'd like to try is to have characters try. Try what? Anything. Focus on something.

A character is more than just a set of personality sliders and an appearance. It's even more than stats and equipment. A character has focus - even characters whose shtick is being unfocused focus on something - they just perform very badly.

Virtually every character worth remembering tries. In more heroic situations, they try to win, try to defeat the bad guy, try to rescue the princess - they try to be a hero. In other situations, you have characters who try to learn how to bake a pie, or try to find the perfect love, or try to invent a cure for cancer... or anything else. But they try.

The first thing that's interesting about trying is that it gives the characters something to do when they're not "on-screen". Someone who wants to learn to bake a pie will pop in occasionally with a new pie to torture the player character with, and can be found in pie-related locations.

The second thing about trying that sets it apart from what characters currently do is that someone who is trying something will eagerly assimilate anything that might help them. For example, if someone is trying to learn to bake and you bring them a cook book, it's easy for the program to do a quick check, see that the cook book matters, and have the character get excited. Similarly, you could most likely find them hanging out in a kitchen or buying flour or so on - you can plan their whole day, on the fly, based only around the idea that they want to bake a freakin' pie.

And during times of unusual stress or situations, you could assign a new goal. Usually, she wants to bake a pie. But today she's been kidnapped by aliens. It would be very funny if she went on being concerned mostly about pies ("Ow! Watch where you stick that! Hey, do you have any high-tech pie-making devices I could have?") but it would also be quite easy to assign her escape-related goals. Similarly, you could have the player assign new goals to characters in exchange for helping them complete their old goals. ("I finally baked a pie, thanks to you! Now I'll help you kill the Evil End Dude! With my superior pies!")

This is an object-centric method of character simulation. Every object in the game - from a book on pies to a person to the sun - can be checked for applicability to whatever goals a given character might have. The character can then act on that value through some kind of personality matrix - follow around people they find valuable, steal artifacts they want, etc.

(Another way to make character simulation more interesting is backstory simulation simulation. However, that would make this entry way too long, so I'll have to cover it some other time.)

2 comments:

Darius Kazemi said...

I think this is one reason why I like character-driven SRPGs, like Jagged Alliance, FF:Tactics, and Fire Emblem. By having the player control tons of characters (often with their own things to "try"--special sub-goals depending on which characters you're using in a battle), the player can at least experience more characters trying different things. Of course, it doesn't solve the AI problem, but it's a nice workaround.

Craig Perko said...

I agree on all your points. :)