Wednesday, April 25, 2007

Social Simulation (Again)

I've been playing around with Inform 7, one of the modern text adventure platforms. Interactive Fiction, if you're looking to sound pretentious. Why Inform, rather than one of the other options?

Well, in addition to being free, Inform 7 has the most powerful engine - hands down - of the various systems. On the other hand, as is usually the case, it has a pretty bad environment. Unlike, say, ADRIFT, there is no easy-to-use GUI. Of course, if it had one, I wouldn't have been able to do any of the things I wanted to do: tradeoffs.

Anyhow, I've always said that you can't really test a social system on its own. You need a world to put social interactions in context. Which is why I keep gravitating back towards functional text adventure engines - not because I want to make a text adventure, but because they offer tons of functionality and a quick turnaround time.

I've whipped up a few tests, set in a zombie movie. I've learned some interesting things about character dynamics. If you're making a system that does social dynamics on the fly, here are some things you may want to try to account for:

1) Skill use. Normally, many people in any given fictional group have a particular skill. The geek, the jock, the girl that can fly, whatever. While not every character needs to have a skill, it is helpful because it allows you to make the player choose to give that character center stage. IE, the character chooses to use the geek when there's a geeky challenge, instead of you simply pushing the geek into the limelight.

2) Social role. This is a topic that people have approached from a lot of angles. I have my own opinions, but in essence the idea is that inside the group, every character has a social role they play: the irritating twerp, the respected leader, the weird guy. These roles then allow the characters to interact with other characters in an automatic, easy way.

3) Goals/arcs. On a code level, the difference between a character goal and a character development arc is extremely minor, so we'll lump them into one. The more central a character is, the more of these they will generally have. These allow you to algorithmically control a character's long-term actions, allowing them to be aggressive at times when it makes sense and passive at times when it makes sense.

Obviously, there are a lot of factors I could be mentioning: relationship tracking, social positioning, personality statistics, etc. But I find that these things are details which fall into place when you carefully cover the three core necessities. If you disagree, I'd be happy to listen to why.

Most social systems get really hung up on one of these three ideas, often throwing in a second as a last-minute thought. I am of the opinion that one or even two of these ideas are not enough. All three, even if each is done mediocre, is more interesting to me.

Unfortunately, to test it, you need a world. That's why I've been writing a zombie text adventure. Arrrrrr!


Patrick said...

A good breakdown, I'd like to play that text adventure once its got a modicum of content to it.

Craig Perko said...

If that ever happens, I'll post it here.