Ideas on how to enable conversations between NPC:s and players and NPC:s and NPC:s, and how to model concepts.
Concepts are things you can know something of.
Generally, concepts may be organized into categories or classified.
These categories or classes include :
- places / areas (the world, a continent/region, a nation, a natural formation(lake, mountain, etc), a road/river, a city, a neighborhood, a block, a lot, a house, a room, a piece of furniture, a custom area/point in the world)
- information objects of various types (scripts/plans, blueprints, plays, songs, spells, etc.)
- some function of an item
- a category of items
- a culture / subculture
- roles / offices held by a person
Concepts can have:
Ratings of different aspects of something, voted by anyone, or just users / people in contact with the concept, maybe weighted by the credibility / expertize of the voter.
- beauty of a sculpture/art piece, inventiveness of a sculpture / art piece
- prices in a shop, extent of inventory in a shop, quality of service in a shop, atmosphere in a shop,
- coolness of a character, abusiveness/griefiness of a character
- quality of a specific person as newbie mentor,
- risk of a plan, how well the plan achieves the goals it tries to achieve
Historical ratings are also kept, and deltas for the ratings can be calculated (change in last day, change in last week, change in last month, etc) The historical ratings can be summarized together more the older they are, to keep the total used space fixed.
New ratings for some group of concepts could be added by players in some way. At least for things they create themselves (e.g. a "should I make it more pointy?" rating for a sword design, or "quality as a raid leader" for members of a guild) - these approximate polls then. New concepts for larger groups could also be suggested (and voted for?) (from in-game menus? - or just in feature/bug database) by players and implemented/added by the game designers / admins.
Maybe concepts could sort ratings by how often people rate them, and make the most popular ratings visible directly, and put the rest behind a scroll or expanding panel or combo-box or such. Then ratings could be added by anyone (or screened by a GM first).
Personal and cultural ratings
The game would also remember a persons ratings for different things, and maybe the ratings of a guild / subculture / citizens of a nation / inhabits of a town / etc for some things also, allowing to query how e.g. members of one subculture like members of another.
Subcultures could also have predefined values for the ratings, and a strength of the rating, and members of the subculture could inherit the rating (a direct vote from a person would override the cultural bias mostly, but until then the cultural bias could be used for that person.
Usages of ratings
Ratings (esp. those inherited from subcultures and background) can provide a first impression bias for people and things. E.g. an elf NPC might dislike a dwarf player character, until it has learned to know it better.
In addition to ratings, there's associated quirks and such with subcultures by subcultures (e.g. elves think dwarves are griefy (a rating) and eat rats (a typical behavior - needs a different implementation than ratings).
Typical / known behaviors / goals
Either generalized to some group:
E.g. dragons breathe fire at you, dwarves eat rats, the nation of Ard wants to invade the nation of Moraf, guild WTFOMGBBQ are griefers.
Or generalized or specific knowledge of an individual:
Captain Smokey likes whiskey, Von Gargamel wants to take over the world, Miss Betty is looking for a good battle axe, Igor the Orc needs silk (for tailoring).
- location (or covered area, in case of things like cities, roads)
- name of something
- material of an object
- weight of an object
- leader of an organization
Associations and relations to other concepts
- There could be a generic associativeness, that could be mined from game data (e.g. conversations). The AI could use this to find related topics when thinking or conversing (activation network style).
- There could also be relations (and properties) that are inferred from game data and metadata, like 'this bridge is made of granite', or 'Igor is the leader of the Rrumble organization', or 'the Rrumble organization has categorized/tagged itself as a "rock band" and "revolutionary".'
- The AI will probably need some kind of associations, like isAnalogous, isA, has, temporallyFollows, causedBy, etc. might be used. The AI might (collectively?) build them up.
- Similar to ratings, there might be a way to create associations and rate how accurate the associations are. But what kind of purpose do they serve? It should be possible to comment on things like information objects, probably on other things also (guilds, etc). Maybe one could attach or link to different information objects / concepts also, e.g. attaching driving instructions to a place, or linking to a better/alternative recipie for achieving some effect (information objects would also link to the information objects they consist of, and the ones that use them). Also, usage instructions and such might be useful.
(This kind of 'concept forum' with rating, poll, linking, concept properties, etc. possibilities should be implemented with the same mechanisms as custom forums made e.g. for internal guild usage or general discussion too. They would probably benefit from being mirrored on the web too.)
Other things that concepts can have? Feel free to add.
Events are memories of observed happenings. AI:s keep track of them, but compress older ones, generalizing them into information and attitudes about concepts, keeping only fragments and important ones.
E.g. one could ask about what an AI did last week, or what happened to some other character, or if it has seen some object before, etc.
Given the above concept of concepts, how to implement conversations?
Ideally the conversations should be so easy and fast and useful to use that they could be used to aid conversations between players too.
One possible goal of a conversation is to find out information about something (conversation about a concept). Other goals can be to persuade a character to do something, to discuss a contract, to convey status information, or just to have fun talking.
Why do we need conversations about concepts?
Conversation about a concept could happen on the concept forums - how to make talking about concepts with individual characters worthwile?
- A character may have some information not in the concept forum.
- It allows finding out that characters attitudes and knowledge (which allows predicting the character better).
- It can help build relations with the character.
Another way could be to not have all conversation forums available all the time from the game, but that would make them much less used and useful. Or just make it easy to comment on a relevant forum and harder on others (e.g. forums for current location, an object type in inventory, a creature met on the road, a shop you are in, etc. would be presented directly) - wikipedia like 'lost in the information'-jumping from page to page could be reduced by not linking every other word - but OTOH, sometimes that kind of information browsing is useful.
Select 'ask about' button, and type/paste/point at concept/item.
Answer is a normal textual message, but with concept words highlighted (that could be done in most chat too, possibly with a wiki like syntax).
Possible to ask more about one of the linked words, or select from a list of other related alternatives (based on activation network model of the players character - what was it doing/thinking/hearing about recently, and what does that associate to).
Also a 'breadcrumb' like trail of the topics, and possible to jump back to earlier ones.
Text snippets are added to make the conversation a bit more natural ('speaking of that, what do you think about X', 'yes, but let's return to Y, what do you know about Y.z?'). They might be terser also, possibly vary depending on the relation between the characters, impatience, etc..
Also, free text entry is allowed when talking with players (who are logged on). Maybe also for NPC:s when there is some rudimentary natural language parsing. It could also support commands, like "ask 'Orc Village'", "tell about "Captain Smog" and "whiskey"", etc.
Confidential information, secrets, taboos
Depending on who the AI is talking with, different concepts may be evaluated to be of a varying degree of confidentiality, or the AI may want to avoid some concepts. What to avoid can be partly cultural, partly situational, and partly personal. In some cultures talking about your finance may be impolite, the villagers in Borderwood may close up as soon as the topic turns to mysterious disappearances and werewolves, elves may be embarrassed to talk about their ears, and a spy may steer a discussion around his suspicious contacts.
Ask About X
When the AI is asked about X, what does it answer?
The answer depends on:
- The state of mind of the AI will affect the answer - what was the recent topics, how do they relate to X, recent events involving X.
- What the AI can guess of why the person is asking about X, trying to provide an useful answer
- The relation to the conversation partner also affects the answer - is he trusted, can I tell secrets, what can I talk about
- Whether the AI has some other pressing goals, and time to chat
AI:s should not just be passive information bots, they may want to steer the conversation to some favorite topic of their own, or they may be interested in something the other person said and ask about that, or they may branch into other topics.