Saturday, December 10, 2011

Notorious: Rumour System

In an attempt to kickstart my programming of Notorious, I had a look again at the rumour system for the game:

Rumour System

  As the player interacts publicly with the villiage or other players, the rumour system will transfer information between NPC’s to build their own world view. Ultimately this world view will generate the notoriety that each player needs to advance in the game. Players can also subvert, create or enhance events that others know about in an effort to manipulate the notoriety of themselves or others. 

World Views:
Each individual NPC will have their own world view  of the events that occur in the world. These events can either be picked up as primary sources (the character participated in the event or was an eyewitness to the event) or secondary sources if someone else told them about the event. Characters may have conflicting reports from different sources, but will attempt to resolve these into a consistent world view that they are satisfied with. Players will also have a world view of everything that has been revealed to them in the game, and can use this to compare against others for detecting or interrogating inconsistencies.

A world view consists of a list (or tree structure) of events. Each event will require:
Description: Written text describing the event / rumour.
Source: Person establishing the event / rumour. Primary sources would have their own name here, otherwise it will be the name of the person who passed it on.
Characters: List of characters involved in the event. May also include items if they are unattached.
Evidence: Direct evidence that was used to confirm this event / rumour.
Links:  Other rumours that are related. May possibly be the same event witnessed by others.

There will also be a way for multiple events to be collated into meta-concepts, with links and evidence used to support the concept. As an example, a farmer notices an ogre approaching, the ogre attacking his cattle, then leaving with the corpses. Instead of running to the village and reporting each individual event, they can combine it into an “attack” rumour to talk about and link to each individual event. Multiple attacks with similar characteristics can be combined to generate a “pattern of attacks”. Ultimately these can be used to guide the creation of quests for heroes, and the general notoriety of the player.

When a character interacts with another, they have a list of events that they wish to tell others (depending on their personality; gossipy types will have a long list) ranked by their assumed importance, as well as a list of questions to ask to attempt to resolve internal world view conflicts. If a character hears a new rumour, that rumour is stored with a confidence level of how well they agree with it.Confidence can range from 100% (fully confident, adamantly so) to 50% (happy to accept as true) to 0% (not sure) to -50% (Rejected) to -100% (absolute rejection). Events left between -50% to 50% are contested and are issues that the character will attempt to resolve through conversation with others.  [May need a sigmoid function for confidence]

Player interaction with the Rumour System
Any character holding a linked gem will give the player complete knowledge of their world view. The player can automatically merge this information into their own world view, bring in any consistent events / rumours and manually handle conflicts, or manually process each event. Even if the information is merged automatically, it should be up to the player to agree or dispute certain events to create a consistent world view. This would entail viewing all the known details of a conflict, highlighting what the general consensus is so far (eg: 3 in favour, 4 not sure, 2 against), and allowing the player to shift their opinion either one way or another.

Creating Rumours
To create a rumour, the player can inject a new event into the memory of a linked creature, then give the creature an action of gossip in town (if needed). If the new event is consistent with other NPC’s world view, it is likely to be adopted and spread.

If there is an internal conflict within the linked creature there will either need to be more changes to make space for the rumour, or more power to add additional certainty to an idea. Complex changes may have even more difficulty in conveying to others.
There should be a way of predicting whether the changes will “take” before accepting the use of power. Rejected rumours stay within their memory as an “idea” that was eventually thought to be inconsistent, which will make successive attempts even harder (and possibly even make the creature doubt themselves as a primary source)

This is also the technique for removing events or modifying events, although care will need to be taken to make sure that these events are not re-exposed to the creature through talking to others.   

To make use of the rumour system, the player may wish to use a reliable villager to start rumours. They may be able to capture a local farmer, give him a gem (in a ring), link to it, then modify the event of him receiving the gem so that he thought it was given to him from his mother. Once you release the farmer, they can then be used to keep track of what is happening inside the city, as well as injecting and denying rumours. The credibility of the character is damaged if injected rumours are found to be false, or they are disagreeing with the general consensus on a rumour. Reduced credibility makes it harder to get others to support their primary sourced events / rumours. This could be used for “boy who cried wolf” scenarios too. 

*NOTE*: Unsure whether power use should be continuous to support a rumour, or a once off that is either accepted and assimilated, or rejected.