Developing the Dynamic Investigation System took a couple of weeks longer than expected. The design changed quite a bit during this time as we tested different solutions for the design goal on real world implementations. A bunch of ideas turned out to be either too difficult to program in a reasonable time or being too complicate for the player to use. After all the game has to be fun to play and besides one of the reasons a game sucks is if it is too complicate for its own good. The system we whacked together right now seems to be a good middle ground between the original design goals and a system which is actually usable in a real game situation. So let's dive a bit deeper into all this.
Investigate the Story
One of the important points on this project is to go away from the typical way of story telling in games. In general the player runs around and blows NPCs in the face or has to find some items littering around in the world. This boils down often to a sort of ping-pong game where the player bounces between different NPCs sending him from one end of the world to the other. Especially painful this experience gets if you figured out what is going on but yet you have to travel down the entire story path, often triggering traps you smelled way ahead, just to get to the point where you actually have to go. Even if games have different ways to progress through a story, like a good or bad way of doing it, the player is forced to roll along a given path to the goal. Shortcuts are disallowed in these games. Not so in this game. The player is given the liberty to conduct his investigation the way he sees fit. How fast or slow you get through solving the cases depends on how you approach the investigation. Especially the story itself is not told by blowing NPCs in the face but by investigating a large case. So it is up to the player to figure out the story. And depending on how he does it he triggers or does not trigger certain story parts. If you smell a trap you are allowed to avoid it if you are smart enough. On the other hand if you are stupid enough to talk with the bad guys without knowing it you will trigger counter measures. Can you outsmart the criminal master minds?
To enable this kind of investigation system the Knowledge System has been created. The system is rather simple by implementation but rather powerful. Knowledge is represented as a named information in the world. Each entity, which can be anything from people to documents, has a list of knowledge objects it knows about. While picking up or talking to people these bits of information can be added to the knowledge the player has. The interesting part on this system is that the knowledge is alive. This means it can be handed around from NPC to NPC or from an NPC to some inanimate object. For example an NPC can put information on a MemoPad. In this case you can suddenly find the same information by talking to the NPC or by finding that MemoPad. So for example an NPC does not want to tell you what you want to know but he put it on a MemoPad for some reason. If you find that MemoPad you still get the information. On the other hand if an NPC gets killed it is possible the information vanishes from the world. In this case you need to find an alternate route to get to your goal. This way the actions of the player influence a great deal how the investigation unfolds. You can think of knowledge as being a flag you carry around and that you can hand off to others. The player has to find the right set of flags but how he figures out where they are is the interesting part.
Dynamic Investigation System
To help the player on his journey an Investigation System is at his disposal. This is represented by a special device the player owns. More about this later as it has not been modelled yet. So for the time being the investigation window is displayed in the typical 2D overlay way. You can later on though also use it like the ThunderPad if you want. The investigation system keeps track of cases, files, notes and the knowledge you found. Finding knowledge can add new information to files or cases as well as triggering special actions like adding new goals or even new cases. Files store informations about individual entities in the world. These entities can be people, objects, document and many other things. The collected information is valuable to figure out cases. Each case contains a set of goals some of which are mandatory others optional. To solve a case you need to find enough knowledge for the mandatory goals. You can then go to the person who gave you the case to close it off. If you gathered the needed knowledge you are done for. Otherwise you have to look harder. The difficulty of cases influences the amount and kind of knowledge you have to gather to solve a case. Finding new knowledge history entries will be added to the case history. These are brief descriptions of information you found along your way. It is destined to help the player solve the case. Cases can also contain hidden tracks. So for example you an solve certain cases straight away by following the goals given when you received the case. But maybe there is more to it than meets the eye? Finding certain knowledge can reveal new goals and make you aware of a more complex case than you first thought. The player can therefore decide himself if he just does what he has to or if he digs deeper than he should. Who knows what awaits you there. The images below show screenshots of the investigation window in action.
Finding informations by picking up objects is in the long run nice but no game gets on without conversation of some kind. For this a preliminary Conversation System has been implemented. For this have a look at the image below. Conversation is done by walking up to an NPC and using the "talk" use mode. Then a full screen overlay is presented with the converation options. Currently you are stuck in the position you are but later on you will be able to move around if you wish to do so to continue investigation while you have a chat. In the current version a list of files is presented as well as a list of topics. Many games implement the approach of offering just a topic to talk about. This is usually though too crude to be usable. So for example if you talk about a person as the topic what is it you actually want to talk about... "who he is?", "where he can be found?", "what organization he works for?". So you get "something" talked back which does not necessarily reflect what you want to talk about to begin with. To remedy this problem the separation into files and topics is used. The player selects one of the files and is then presented with a list of topics related to this entity. He can then talk about a specific topic like who a person is, where she can be found or case relevant topics. While gathering informations new topics and files can be added. The presence of topics can depend on the knowledge the player found. So it is very well possible that a new topic becomes available if you find documents.
Right now this system is still in infancy stage and requires more work. The conversation is defined using an XML file and provides, besides the mandatory conditional support, support for redirecting conversation using snippets as well as the possibility to layer conversations. So for example it is possible to start talking about something and then to interrupt the discussion by talking briefly about something else and then returning. This is possible since the conversation system uses a stack like system allowing for a lot of possibilities to make conversations less rigid and more vivid. In addition snippets can be used to inject conversation parts from different locations including different actors. This way different player actors can use different lines they say without having to create alternate conversation scripts or other actors can throw in a few lines. Another planed addition is to allow the talking actors, player and NPC, to walk around while talking. The idea is to remove the rigid "we have a chat" situation. So NPCs will be able to continue doing their work while talking to you as well as you being able to walk around and examine objects while talking. This is though something to be implemented in the future.
A lot of work has still to be done on the Dynamic Investigation System. One important addition is that the bad guys can react on the player snooping around. There will be a special AI (the Criminal Master similar to a Dungeon Master) which keeps track of the player and tries to get in his way. It depends then on how clever the player is if he can outsmart the bad guys. This though requires a bunch of other work to be done first. So for the next time more conversation stuff is planed as well as adding support for acting while talking. So stay tuned.