This blog has moved! Redirecting...

You should be automatically redirected. If not, visit http://orangeriverstudio.com/monksbrew/ and update your bookmarks.

May 8, 2008

Totally Unbelievable Characters

While following the recent threads on RAIF (rec.arts.int-fiction) "Defining the Newbie" and "Expanding the IF Audience/Community", I found myself most interested in these comments, in light of the recent blogs about characters as the focus of games:


Jimmy Maher:
"People love stories, and many will get excited by the idea of getting plunked down into the middle of a good one."

Jeff Nyman:
"I find new people most often clamor for better and more engaging stories that actually keep them interested in what the heck is going on. Or asking for characters that actually seem like they play a part in the story rather than just being another 'thing.'"

Blank:
"Stories are about *characters*. The thing that IF does least well is representing characters in the fictional world. Doubtless you've already read all the threads about npc characterisation so I won't recapitulate all that except to say that I believe that if we were able to implement strong AI tomorrow it wouldn't mean that we'd be able to tell better stories, because the presence of an AI in the world would be the representation of an artificial /person/, and characters are not people. Characters are fictional simplifications of people constructed for a dramatic purpose. This is what gives me hope that IF can surmount the hurdle of presenting convincing characters and so come good on the 'Fiction' bit of IF."

Jim Aikin:
"I think good coding can help a lot in creating realistic NPCs. Using the T3 StopEventList class, you can give an NPC a series of responses to each single topic, ending with something like, "I've already told you everything I know about that. Can't you see I'm busy?" (And even that response can include random variations.) Other techniques, such as giving the NPC AgendaItems to execute and various ActorStates in which they may respond differently to the same topics, are also easily achieved. It's just a lot of work, that's all."

Jeff Nyman:
"People liked the idea of having to work information out of people, like NPCs that would help further flesh out the story situation and what was going on. They felt there could be more work here in terms of making the NPCs not just machines that regurgitate information with the "press of the right button" (i.e., ask the right thing or select the right menu choice). It was felt that NPCs could be given a life of their own, so to speak. Not in the context of making them wander around "intelligently" -- but rather the potential for having their own motives and desires, often very much in conflict with that of the player/protagonist. Further, the actions taken by the player -- cumulatively -- would determine how the NPCs responded in the story. There weren't many techniques seen like this, but people felt that if it existed, it would be engaging and challenging."


I happen to agree that stories are about characters, and it seems to me that games in general have done a fairly poor job in the character department. As I've mentioned before, I think IF has done better overall than other types of game, but it's still a pleasant surprise to find a work of IF that is truly centered around characters, their emotions, their struggles, and their relationships -- at least, in a meaningful and/or powerful way. Yet, with most traditional media like literature, theater, and film, there doesn't appear to be that same issue.

As Maher states, we love stories, and I think a lot of people like the ability to be part of a story. So it would seem that the important thing is to figure out how to make those stories in IF (and games in general) center around characters and character interaction rather than object manipulation.

So what's the problem?

Of course, good writing skills are essential -- as Aikin stated elsewhere, "With rare exceptions, the IF I've attempted to wade through reads, at best, like the amateur stories submitted to critters.org." Or, as Maher has said in one of his comments here, "We don't see many interesting PCs or NPCs, but that's more down to the fact most videogame writers have yet to achieve the basic competence of the average Star Wars novel author."

Still, there are a number of skilled IF authors that do very good jobs of creating PCs and NPCs with some depth and humanity, and yet there seems to remain a sizable gap between the current state of characters and character interaction and the goal above that some of us would like to see.

There was another excellent thread recently on RAIF that I found fascinating, one titled "The Totally Unbelievable Game", in which Aikin asked:

Someone has recently released a Totally Unbelievable Game (text-based, of course). Word on the street has reached fever pitch, and the servers are chugging trying to keep up with the download requests. My question is: What are the features of this game?


This is the type of awesome question I truly believe needs to be asked more often about...well, about practically everything, but certainly with games. It's the kind of question that establishes far-reaching goals and sets the bar unreasonably high. But to me, that's what we all should be striving for: that which is unreasonable and seemingly out of reach. Enough small steps and what was once completely unreasonable may one day become entirely reasonable.

I found it surprising that none of the responses included a mention of something along the lines of "Convincing NPCs with independent emotions and motivations" or "a more satisfying method of interaction with NPCs". I'm not sure why that is. (Of course, I didn't respond myself. Why? Who knows. Shame on me.)

In terms of conversation, one of the important things pointed out in that, and other, threads is that this type of evolution does not -- and, perhaps more importantly, should not -- imply that we need significant improvements to parsers. A parser that can accept any kind of input from the player is certainly unreasonable, but so too is the creation of a game that can even dream of handling the vast possibility of player input. It's completely unreasonable, but also not particularly desirable.

What, then? Are we really satisfied with the methods available for character interaction? The persistent debate about dialog systems, with some on the side of IF's ASK/TELL/TALK TO system and others who prefer dialog menus and trees, has persisted for good reason: neither really seems to get the job done in a truly satisfying way. On the one hand, players can direct the verbal action of the PC (ASK LUCCA ABOUT CONSTANTIN) but with no ability to be more specific or descriptive (ask about what in particular about Constantin?). On the other, players can ask specific questions in particular ways, but are always limited to the few options that the author makes available (what if I want to talk about something else?), and the menu structure can come across as too revealing. There are, of course, other options for conversation systems, as Emily Short has compiled, but it could be argued that the two mentioned above are the two most popular (in IF, at least) for a reason.

And, of course, the above really only deals with mechanism of conversation; there are other forms of interaction and character responsiveness that lie outside this domain but are similarly underdeveloped. Is it all just a matter of exhaustive hard coding? Or do we really need some significant evolution in how characters and interaction is largely implemented?

Maybe it is the right question to ask: what would we imagine Totally Unbelievable Characters in a game to be like?

8 comments:

Emily Short said...

I want to be able to hurt them.

I want there to be moments in the game where, as a character, I have the freedom and agency to do things that I know will provoke a strong emotional reaction, and I want to see that reaction play out. This could be a positive reaction too, of course, but inasmuch as stories are about conflict, I bet the painful moments are going to be frequent and powerful.

The more I work on this, the less I think it has to do with artificial intelligence, repetition of responses, NPC ability to notice and respond to the player's behavior, or even the quality of prose writing that the author brings to the dialogue; and the more I think it has to do with plotting and defining the interaction scope so that the player gets to make important choices that affect other characters.

Making that work requires setup (so that everyone is given adequate motivations to make a conflict interesting, and so that as a character I know in advance that my actions are going to matter to the other character).

This may all seem pretty vague, so here's what I mean. Imagine a story in which gradually the player character has come to like and respect an NPC, but aware of a vulnerability, a weakness, a traumatic moment in the NPC's past. And then, at some critical moment, it becomes necessary to use that knowledge against the character, fully aware that it's going to feel like a crushing betrayal.

That's the kind of interaction I think would be effective and persuasive. To support that kind of development, I think we could use slightly better conversation writing tools than are currently available -- not so much to change the interaction style as because it's currently just a huge pain in the butt to produce large quantities of apparently fluid prose, and way too much of the author's time is spent on coding interdependencies and looking after details. So if writing conversation were a smoother and easier process, we could perhaps produce more, more fluidly.

But the majority of the development we want to see I think is actually going to be well within our current technological and coding abilities, and it's going instead to be about how we think about plotting and interaction design, and how we signal things to the player.

Anonymous said...

As I've written on my blog before, I strongly disagree with the statement that stories are about characters and I think, ultimately, so do people who claim otherwise (like Blank and yourself).

Stories are about relationships.

Not to put words in her mouth, but if I were to judge Em's philosophy by her comment above I would say she probably agrees.

Now, before anyone says, "Well yes obviously, that's the same thing," and waves away my argument as semantic niggling, let me stress that this is no small distinction. It's not a small distinction from a writing standpoint, a programming standpoint, or a design standpoint.

You can design an endless string of remarkable characters and focus on their ability to do cool things in the environment (which, as I've argued actually is one type of relationship), but if you don't provide a believable means of establishing a relationship between the avatar and the character, well... who cares? But create an 'ordinary' character and allow me to explore my relationship to that person and you've got pure story gold.

Victor Gijsbers said...

The Totally Unbelievable Character is exactly that right character for the Totally Unbelievable Work of IF in which it appears. By which I only want to say that (1) you shouldn't try to come up with a vision of a great kind of character without at the same time coming with a vision of a great kind of IF; and (2) that there are of course many such kinds.

I like Emily's proposal; it works fantastically in a certain very promising kind of game. I toyed a bit with this, especially in Fate (where you can hurt almost everybody); but Fate's character are far from Unbelievably Great, in part because they are little more than your ability to hurt them. You didn't get to care for them before you got to hurt them.

On the other hand, not all good stories are about people hurting each other, and I would as much like to see a story in which I can reconcile myself with an NPC, or in which I can come to understand an NPC, as one in which I can hurt them. I think the common factor in all of this is that in fiction, we like to explore the kind of meaningful relationships we have or could have with our fellow human beings. Having to hurt someone you like is a particularly strong experience; but so is reconciliation, or falling in love, or realising that you have totally failed to understand someone whom you thought you knew.

(I'm coming up with these examples because although I think that we really need to explore the direction Emily points to in her post, we shouldn't explore that direction exclusively. That has more or less happened in "narrativistic" roleplaying games, a trend which I have discussed here)

I also agree with Emily that our current tools are enough, at least to a first approximation, to achieve this kind of thing.

Emily Short said...

The example of causing pain was really meant to be just that, an example: the more general point is that I want to be able to cause significant emotional reactions.

In order for them to be significant, of course, I also need to have developed some investment in the character.

Unknown said...

I want to be able to hurt them... Good goal, although I'd rephase it to something a bit more catchy: "I want to [be able to] make them cry." This is also a mirror of Roger Ebert's(?) comments of games not being able to make people cry, and thus being inferior to movies.

Story - I think the sooner that game designers stop using the term "story", the sooner they'll actually produce a game with a story... Or rather, "elements of story" such as characters, relationships, foreshadowing, etc. can be translated to games. "Story" as a whole, especially the bit about lack-of-choice, is problematical.

Anonymous said...

As always, the issue is striking a balance between complexity and verisimilitude. Programmers tend to excel at the former, but excellence at the latter comes from the other side of the brain.

Still, it is possible to bridge the gap with a *fairly* simple system. When designing "Ocean Voyager" for Times-Mirror (back in 94 or so) I wanted a more complex heuristic than ended up being accepted (RAM being a consideration after all). Still, I was in agreement with the brilliant producer Judson Rosebush that the basic system was an orthogonal relationship matrix.

Of the stats I had brainstormed, we selected the three we felt were most important to track and communicate NPC states in this particular game. (the "important" stats will differ from game to game and maybe even from NPC class to NPC class). But anyway, we chose Health, Respect and Mood. This in effect turned every NPC into a 3-dimensional emotional matrix with 27 possible states.

Note that we didn't ever have to really create 27 different responses for each situation or problem type: we built heuristic routines instead, operating on ranges rather than integers to determine which response would be handed up.

Since OV was an object-oriented system (another prerequisite but fairly obvious these days), it was not only possible to have interactions with the PC alter the stats of the NPCs (i.e. "hurting them"), but we also had events change the NPCs stats "offstage". Sometimes the reasons behind these shifts were obvious (-mood if the ship was in peril, -health if they ingested a toxin, etc) but at other times they were not, from the player's perspective it sometimes seemed that an NPC was "just being testy right now."

On top of that I would love to add a system like emshort suggested, a second tier so to speak, in which specific responses or response types could be "triggered" by other events, states or even a combination of unpredictable elements (like a psychotic timebomb NPC just waiting for the moment when all of his archetypal "triggers" appear simultaneously within his sight).

The basic orthogonal structure could handle most responses most of the time, including shifts in mood for reasons both obvious and mysterious, while on top of that, these little independent "trigger" routines would be capable of firing off specific responses which override the main loop.

gnome said...

Ah, wish I had the state of mind to add my disjointed thoughts, but all I can say is I absolutely love this blog. Excellent writing and the fact I'm not commenting as regularly as I'd wish to, doesn't mean I'm not reading... Cheers!

Michael Rubin said...

I've been away for a little bit, so I have some catching up to do.

I think these are all great comments. Emily and Victor make some excellent points, and I agree that it probably has less to do with things like artificial intelligence and more to do with defining the interaction scope. With respect to Corvus, I would say that your expertise and precision with regard to this material is clearly greater than mine, so I certainly respect that distinction. Still, I would not necessarily say that I completely contradicted that, since when I refer to stories being about characters, I am interpreting characters as "their emotions, their struggles, and their relationships," which to me is essentially (I think) what you were saying.

It's a little difficult to synthesize and discuss all of the different things covered in the comments here, but I'd say to a large extent what I'm trying to do is to distinguish between two aspects of characters in games that I think would contribute most to the design of the Totally Unbelievable Character: interaction and simulation.

Interaction is probably more appropriately discussed as part of the game system itself rather than the characters, but since it relates closely to the design, manipulation, and portrayal of characters, I considered it as part of this discussion. For the most part, the end of my original post was referring more to this concept of character interaction, and that the mechanism of interaction in most games, including IF, can often be unsatisfying. In that respect, it perhaps would have been better to ask a separate question, such as: what would Totally Unbelievable Character Interaction be like?

Instead, the discussion more appropriately centered around character design, or what I like to think of as simulation. It's kind of a parallel to the discussion of game structure in general -- the spectrum from linear games at one end to sandbox games at the other, which can also apply at the level of character implementation within games: highly scripted vs. fully simulated characters. The latter is something that, like the parser that is able to interpret any kind of player input, is neither reasonable nor particularly desired. But I suppose the question becomes how much simulation is desired?

I'm guessing the answer that most people would give is, "it depends." Depends on the game, what the author is trying to accomplish or convey in the game, and so on. Which I think is very valid.

Emily and Victor both talk about being able to hurt NPCs, or, as Emily stated more generically, being able to have "the freedom and agency to do things that I know will provoke a strong emotional reaction," and to see that reaction play out. But to do so requires a certain level of simulation in the NPCs. If you have the freedom to provoke that reaction, the author also has to implement the counterfactual: the events and reactions that occur in the absence of the player taking that provocative action. And if that provocation has far-reaching implications, isn't it necessary to account for both possibilities throughout the narrative? How much hard coding is required to create NPCs that are able to account for the freedom we want to provide players with respect to interaction?

I also think this highlights the interconnectedness of the two aspects of interaction and simulation with characters. A certain level of simulation is required to handle a certain degree of interactiveness, and possibly vice-versa.

as if's comment is a good example of this, where the tracking and communication of NPC states (health, respect, and mood) is one particular level of simulation they chose to implement, but which was also closely tied to the system of interaction. It's actually quite similar to a system I had been pondering, and which I am hoping to blog about here soon.

Oh, and a big "thanks" to gnome for the props, not to mention everybody else for participating and making this blog a whole lot of fun.

Powered by FeedBurner