Friday, February 22, 2008

Nothing New?

While I like open-world games, one of the problems is that they are generally very boring. Every interesting aspect of an open-world game is carefully scripted in.

Scripted events bother me for a variety of reasons. The most important is that they are very fragile: if a player does something the scriptor didn't think of (or even something they did, but in a weird order), the script breaks. This leads to the designers brutally crippling the player's capabilities.

Examples of this are easy to find everywhere, but a recent one for me was the Vampire computer game I played. If you've never played in the system it's based on, let me explain: vampires don't suck. If you meet a vampire with level five auspex, it doesn't mean that he gets a +3 to his perception. It means he can astrally project, not to mention the telepathy and object reading he's already picked up at levels three and four.

Personally, I think the system is shitty even at it's finest. I much prefer Mage, which is really White Wolf's only fun system. But that's besides the point: in order to keep the game "balanced", they crippled everything down to a simple stat increase.

This isn't even mentioning the artificial limits they impose: no attacking plot characters, no turning down quests, no blowing up buildings, no lying or omitting things except when the writers deem it to be so... in short, no deviating from the rails.

This is not acceptable to me, because I want to play amberites and nobilis.

So, let's imagine that we want an open world game with a bunch of interesting content that's not specifically scripted in. How do you do it?

How about we make every interesting thing an active agent seeking to affect the player?

Sure, I'm talking about events. "Helicopter chase!" "The lights go out..." "The Sabbat attacks the Prince." Whatever you like.

But I'm also talking about things. People, places. "The Empire Hotel". "The Prince". "The Antediluvian". "The video tape".

I'm also talking about concepts. "Ghouling". "Gehenna". "The Beast Inside You". "Blood-spattered". "Disease". "Sunlight burns". Eighty different kinds of madness. Punk rock. Sexy.

Anything that you can think of that is of interest is an active agent trying to affect the player.

Please note, I didn't say they are actively trying to happen, or be near the player. Just talking about something grants it some level of power, some more sway over the game, and therefore many agents will try to inject themselves into conversations, news, graffiti... whatever they can do that the player will notice.

Obviously, happening to or around the player is good for an event, and people like making things happen to the player or, to a lesser extent, being affected by the player...

The agents are poised pre-game with a bunch of directives and probably some noise to keep things unique per play through. Then they are unleashed on the world to do their best to lure the player in, bludgeon him, help him, change his experience somehow.

They team up with other agents and static elements (the map, for example, could be pretty static) to create these events. They might even form alliances and rivalries with other agents: the "helicopter" agents might band together and ally with "the Prince" agent, meaning that the Prince would use a lot of helicopters. Both agents would prosper: the Prince has a definite method to affect the player (helicopters can ferry him around, helicopters can attack him, etc), and the helicopters, obviously, have a willing patsy to spread helicopteriness around.

Because agents are out to affect the player's experience, not the game world, there is very little that happens "behind the scenes". The only time something happens behind the player's back is when the agent in question doesn't have the pull to directly affect the player and is instead going for an indirect effect via news bulletins or street conversations.

Now, the fun aspect here is that the player is certainly welcome to have powerful abilities and/or do weird things. These are excuses for agents to piggyback on to the scene. If the player kills someone important, virtually every heavy hitter in the books will have an opening to come in after him. And character agents are free to cozy up to the player directly, and the player can make any human a ghoul, at least in theory. Remember, though: they're trying to affect the player. Simply hanging out with him is not enough.

The difficult part in this is, as usual, the goddamn dialog.


Matthew Rundle said...

Isn't that the kind of situation where you benefit from leaving out dialog altogether? I'm never sure whether this is the solution or not.

Craig Perko said...

Well, then you have the problem of how to communicate to the player what is happening. How do you let the player know, and let him negotiate in return?

Matthew Rundle said...

Here's how I figure it, but all of this is untested, it's just what I've been thinking.

You would't print specific dialog, just what it is that a character is telling you about, "the wizard tells you about " whatever, "the wizard wants you to " whatever, followed with more context-specific stuff if the wizard knows more about whatever, and wants to tell you. Also, you'd provide information on how they seem ("The wizard seems pissed" The frog seems to be in an introspective mood" "The owlbear doesn't seem to like you much"), whichever things the character would notice about other characters, rooms, whatever.

You could do the same sort of thing for books and things:
"There's something scrawled here in blood."
"It's a lament about..."

Player responses are more difficult, but I imagine it'd use a parser that accepts as symbols the kinds of things you've defined as agents. If the player asks a character about a set of symbols, the game tries to draw a connection between the symbols that the character would know, figures out how much of that they're willing to tell the player, and returns that.

Craig Perko said...

Well, the problem with that is the same as the problem with an open world: there's really no sense of uniqueness, no sense of style or interest.

"The wizard asks you to kill the zombies" is certainly informative enough, but it doesn't really tell you anything about the wizard, his personality, if he's nervous, etc. In fact, it creates a full layer of separation between you and your avatar, because it's so "third person". There's no sense that you're there.

Saying "the wizard seems nervous" is a really poor way of showing the player that the wizard seems nervous, and has the same problem as the text generation above. It's boring and bland, and applies as a generic coating to any and every character.

What's the point of having characters if they are reduced to so little?

... but it might be possible to use the same solution for dialog that I planned for the world. It might be possible to have dialog agents vying to recombine and get themselves spoken to the player...

Matthew Rundle said...

I'm not sure how you could swing it so that the characters are actually interesting, but I'd try for stuff so that the character frames his responses, decides what to tell you based on his emotions and his opinions of the stuff you're asking him about.

Rather than "the wizard seems nervous", you could pull from a list of descriptors for nervous people telling you about their wide weary eyes and the odd timbre of their voice, or whatever, and sub in whichever ones are appropriate.

It'd need a fair lot of expansion if there's going to be any actual character in the characters at all.

But even so, it would be far easier than trying to grow natural dialog for each character, and more worldy than tightly scripted interactions.

... of course, it means you have to write enough stuff so that every character knows what to tell you for all of the situations he can be in. And it'd still be all in the third person.

Craig Perko said...

It's a tough problem...

Jojo said...

Interestingly enough, it seems like you two have actually gotten stuck on one of the very few aspects of this design that /wouldn't/ be that hard to do. Assume a few things: the NPCs are human, you are using a modern engine (Unreal, Source, etc.) and you have a few 'attitude' axes that these NPC agents store their attitude state in. You'd not really have a hard time writing up a couple of vertex shaders for their faces that would convey their attitudes directly on their characters (raised eyebrows for surprise, frowns for disapproval, everything in between).

That said, dialog IS always the problem, I agree with you there. On the other hand, having agents affect the map and the like seems very solvable over a few iterations on this concept.

Craig Perko said...

It's true that expressions are certainly plausible. I'm really more concerned about dialog.

And, of course, dialog will also have to be expressive, even if your faces are expressive as well.

I'm still thinking about exactly how to do the agent system...