Engine: UDK July 2013 Beta
Software: UDK, Illustrator, Photoshop
Time: Part Time
Team: Just me
Assignment: Develop a system that goes beyond the traditional branching interactive dialogue system, is more in tune with the personality of the NPC and is less predictable then current dialogue systems
Approach: As research for this project I studied papers on natural conversation, theoretical dialogue systems and dialogue systems in current AAA games. Using them as an example of things that might work or things that might fail, I drew out the system I wanted to make in a simple flowchart. While writing the design document for the system I was able to visualise potential problems and work them out on paper beforehand.
Interactive Dialogue Mechanics: Specialisation Paper
Interactive Dialogue Mechanics: Specialisation Paper
Dialogue with Temperment: Research Paper
Narro Dialogue System: Technical Design Document
Narro: The Arson case Setting Document
Why interactive dialogue as graduation project:
I am very passionate about Narrative in any form or medium.
It has tread more to the foreground with the use of evolved graphics & audio.
Evolution is the first keyword in all of this.
I still remember that the character on the screen was made from pixels that could be counted on one hand, the computer would bleep out 8-bit sound and you could only walk left or right, jump and fire. These days, games have evolved to full blown 3D eviroments, the size of countries.
Choirs and orchestras guides players through landscapes and dramatic moments. And we need controllers with at least 14 buttons and 2 joysticks to play the game.
In general games become more complex as hardware becomes more powerful, game developers more creative and consumers more demanding. Narrative has also become more complex, in part thanks to highly detailed cutscenes, voice acting and animations. A cutscene alone is not all there is to narrative. Interactive dialogue, for instance, is a tool to drive the narrative and instigating emersion by give the player a sense that she is influencing the story.
Emersion is the second keyword.
Compared to the leaps and bounds other aspects of games have made, the interactive dialogue systems haven't changed much since they were concieved. It's not that there is no room for improvement or no possibility to expand, though. The fact that it has existed for so long can be credited to the idea that the dialogue systems are solid. I my opinion, they are good but they can be better and they still have their flaws.
One of the most used versions of a interactive dialogue system is the tree branching. It's a highly linear system and with that comes predictability and a ridged structure. It also suffers from unused assets that will not be seen by the players unless they replay the game. One of the biggest problems I have with the interactive dialogue systems is the behaviour of the NPC (Non-Player Character).
You can be mean to the NPC but that will often not be reflected in the dialogue. Most NPC's don't have a sense of trust. They will tell the player nearly everything: all she needs to do is ask, regardless of how long or well the NPC knows the player. This behaviour makes the NPC non-coherent and might even come across as retarted. This alone should be a big enough reason to consider making a system that does not displays this inconsistency and leave emersion intact; especially in game where the interaction with NPC's is key gameplay, like RPGs (Role Playing Games).
Narro is my attempt to make a system that can inspire the creation of more evolved interactive dialogue systems for games. With Narro, I have tried to address the main problems of the current system, namely their predicability, ridged structure, large amounts of unused assets and NPC coherency.
My intent was not just to make the system work in Kismet but to also to give it easily adjustable parameters
and keep it clean enough to allow outside designers to work with it without them having to know the full system.
Because this is still a prototype the parameter's variable nodes are useful
for tweaking the overall system without having to tweak every variable at every node separately.
To control the dialogue progress,
the system uses 4 different social parameters
to dictate every dialogue that is presented to the player.
These parameters are based on the document
“Dialog as a Game” (Border, 2005)
Closeness is the feeling people have of being in contact with each other.
Two strangers passing on the street have a closeness of zero.
Greetings increases closeness to a “talking” level (close between 1 and 5).
More interactions may increase the level to “interested” (5-10),
“intimate” (10- 20) and finally to “obsessive” (20+).
Closeness is a very important parameter, and it changes frequently.
Saying something stupid or inappropriate causes one to lose face.
Saying wise, intelligent, incisive things causes one to gain face.
Face is included as a parameter distinct from closeness,
though the two are highly correlated.
Being agreeable and telling jokes can get characters to like each other. Liking is a one-way feeling (A may like B without B liking A) Similarly, being disagreeable can irritate others.
Characters may decide to trust or distrust each other in the course of a conversation. Trust may be required for some chunks. Finding contradictions and untruths in someone's statements causes a loss of trust, while discovering mutual acquaintances usually raise it
On the UDK forum there is a script for recreating the Mass Effect HUD
with the ability to relay the chosen option to another Kismet node.
I have changed some of the code to make it more fitting for this project and changed the HUD’s appearance in flash.
I want to account for a maximum of 6 possible choices and one timer.
To verify whether or not the correct choices are available and the input of the player comes through correctly,
6 lights corresponding to the choices have been setup to light up when a choice becomes available
and only the option chosen will light up after the player has given input or the time runs out.
To keep Kismet clean and more efficient, I made two extra Kismet nodes using Unrealscript.
The differential node is a node that has to calculate how big the difference is between the current social parameters (designated as O) and the ones required to play out one of the next dialogues (designated as Q). The output of the node will be an integer. The smaller the value, the better. Besides comparing the 4 social parameters it also has some fail saves built in to insure that undesirable dialogues will not be triggered. The first thing the node will check for is if the chunk or category of dialogue has not yet been played. If a category already has been played out it’s Boolean will be false, the differential node will skip the comparison and give the output an overload value (a value that is so high it will not be considered viable). The next extra fail save is in the comparison. When the 4 social parameters have been compared, the difference will be added up to make the final output. In some occasions 1 of the parameters might have a significant difference but it will be compensated by the other parameters.
Close : (-5) – 8 = 13
Face: 2 – 2 = 0
Like : 0- (-1) = 1
Trust : 7 – 6 = 1
The difference in the Close Parameter is too big to let the dialogue connected to it play out, even if the total is only 15. Besides the parameter variable nodes and the category Boolean, there is the ability to add a variable node that limits the amount of difference that is allowed (designated as Max Value). When the parameter’s difference is more then allowed, the output will be the overload value.
This node will look at all the categories it is linked to and their appointed differential value given to them by the differential node. The indexer will make an array of all the values and gives back the index of the one with the lowest value. If there are two or more with the same lowest value, the indexer will pick one at random. The index will become the output of the node. The output will be used to tell a switch node which link it needs to activate. If all of the values are above an appointed max value the index will be 0. When a switch activates link 0 it will cause the system to exit the category it is in or play out the final scenario.
The art for Narro will not be implemented due to time constraints.
The NPC character needs to be a mix between a police inspector and a judge. I looked at different police and judge uniforms for inspiration.
This is the first setup.
The first one was too sexy even though it was the favourite of many I dropped it. The second looked more military and not so much police or judge. But I did like the long vest with the gold edge. I looked more closely at judges for the third, using the standard colour black en the white civet. But they are too short and make her look more like a secretary. I did keep the colour red and square at the neck because it frames the chest well.
The second setup
because she was going to be a game character I wanted to stay away from having to use too much cloth simulating. Most judges have long wavy sleeves but that could cause strange deformations when the character bends her arm, therefore I kept the sleeves short or skin tight instead of the traditional sleeves. The togas of judges are also very puffy and not ideal for a dynamic game character so I waisted the toga. I made the civet bigger and more imposing and the toga longer to better reflect the traditional togas.
This setup was too tailored to the character for my taste. It does not have the feeling of a uniform and it’s not imposing enough.
The third setup.
In this setup I tried to make a more unisex uniform that will still accentuate her as a woman. A golden trim on the chest en collar adds importance. The lower part of the toga is replaced with a side split instead of the frock like toga of the previous setup. I also played with the idea of a skirt underneath but that did not seem practical in a police station.
I ended up using the second judge’s toga with the pants and long blue vest to add extra layers.