Dialogue systems in games (most particularly RPGs) have a long way to go before they could be called immersive or sensible. Often, you just aren't given the option of saying what you really want to say. A few (very few) games have broken through this in different sorts of ways. The most memorable for me, perhaps because it was the most spectacular leap from the standard conversation system, is Facade.
This was a game wherein you typed your responses. Not in the sense of Zork or those old Interactive Fiction games, because it is so much more than that. You could say whatever you wanted. At any time you wanted. For the most part, the game's protagonists react very realistically. In a way it is similar to the whole adventure and role playing game dialogue systems (like Mass Effect, Fallout, Monkey Island). In those games you are given a list of choices or responses. Some games even further this by allowing you to do actions within those responses (like intimidate, draw weapon, run, etc.). However it is normally a very short list of things to say. Facade is like this, except the responses are all hidden away from you. And there are hundreds of possible things to say and responses to those things. It's astounding. It feels like however you react to the game, it is understood by the characters. It makes them feel quite real.
I couldn't begin to do something close to Facade's interaction. It took them around 5 years to create a very short game (to play, that is - although there is a ton of replay value).
Instead, I've decided to do something that I feel has been missing from all these dialogue systems. Tone. Emotion. It's generally implied by what is written in the text, but text is sometimes difficult to read into. A response could be laden with sarcasm, or said lightly, or menacingly. It's difficult to tell just from the text itself. It often takes the user clicking on it to find out how the response is actually said. In Mass Effect, they have
paragon(roughly equivalent to good)/
neutral/
renegade(negative or bad) types of responses.
The Witcher has similar limitations. In fact, the Witcher, which prides itself on the greyness of it's moral choices often has binary responses to something that could easily have a myriad of ways to respond to. Even worse, in some games, certain responses have the exact same meaning or reaction from NPCs (non player characters, i.e. anyone who isn't you). What a cheap cop-out. If a choice is the same as another, just remove it. Don't pretend we have a choice. Unfortunately the world doesn't quite work in just those sorts of responses. There's a huge swirling mass of grey, a spectrum of grey choice.
Just look at all that grey. So much choice. Do you see? So much grey is available, I even had to limit my screenshot of morality to grey codes #A3A3A3 through #383838.
I want to be able to have a veritable list of choices. That's for starters. I'm going to try think of as many useful responses as possible to a given situation, question, sentence, whatever. That's not really anything new, however. What I want to do is explicitly include tone within each response. A phrase can easily go multiple ways. So the way it would be to have a basic version of responses listed. You pick one and then apply a tone to it.
For example:
Phrase: Where is the control room?
Applied tone: inquisitive Do you know where the control room is?
Applied tone: angry Where the hell is the control room?
Applied tone: Concise or stern Control room?
Applied tone: irritated Look, just tell me where the control room is.
or:
Phrase: I have a gun.
Applied tone: nervous I...um... I have a gun, yeah, um...ha
Applied tone: serious I have a gun, I know what I'm doing.
Applied tone: threatening Watch yourself or I might have to shoot you.
I will probably have to limit the number of tones that can be applied to one. But it might be interesting to have an amount of tone that can be applied. It would be interesting to see the difference between a slight amount of anger (similar to the
irritated response above) vs a lot of anger (like the
angry response). This should be a fluid or fuzzy amount. Too much anger and you freak somebody out. Depending on their personality, they could cower away from you, shout back, lash out at you, run away, whatever.
Of course, this isn't really all that revolutionary. In fact it's just a nifty way of hiding a whole lot of choices away. Instead of reading through a list of 40 possible dialogue options, you get 5. Then you just apply tone to those. Using this approach makes it easier to quickly pick the option you're looking for. The tones you can apply are pre-set per response. I'll be trying to include as many tones that make sense.
As a single written sentence can have so many meanings, this gives a clear indication to the player what the response actually means. No more picking an option meant to berate an NPC and having them smile blithely as though it were praise. You can specifically state if what you are saying is sarcastic or serious.
It would be interesting to have volume (whisper, shout, normal) attached to this, but would become unwieldy and silly and too often ignored. I think volume can be implied by certain tones. So getting really angry at somebody could mean shouting, which would attract attention to you from further away. I won't bother with this, though - it's superfluous for this game.
The dialogue tree could look something like this. The black blocks with white arrows in just return you to the previous (top) list.
Completely off track rambling to follow:
A long while back I was discussing how to have a really procedural dialogue system. The start of that was based on symbols. Symbols meant different things to different creatures. Food could mean "tree" or "rabbit, voles, and insects". The game was about interacting with tribes of creatures in any way you felt. I'm sad we haven't continued with that game because there was so much to it that would be awesomely fun to play. The story was equally procedural, based in a sense, on the insanity of the main character rationalising what you did.
You could, for example walk through a desert for ages, dying of thirst, while the narration said things like: "But he knew what he was looking for was just over the next rise", "His tiredness is nothing to the import of the journey" and so on. If you just ran up and killed an innocent villager, the game would say something like, "He saw the gleam in the villager's eyes. Acting swiftly to deter the murderous wretch, he stabbed out with his rapier". Everything in the game's view was correct. The path you chose was the exact path you needed to choose. It would even possibly go so far as to show why you were right. Perhaps the villager would have hidden weapons on them, caked in blood and around the corner you would see bodies of all their previous victims.
You could unite tribes or convince them to wage wars on each other depending on how much you'd manipulate them into trusting you. You could, for example, make them trust you by helping them defeat an enemy that you'd encouraged to attack them. And all of it would be rationalised.
The magic system worked much like visual programming language, and in fact the first prototype of this my friend did is part of what inspired my own customized visual language for the level editor.
I'd still be keen to do something like this one day.