So I was reading some of the Versu design papers and suddenly it hit me: they're doing a lot of the procedural narrative stuff that I want to do, and yet, their magnitude of systems complexity and authoring was still way too much for what I needed (or could feasibly engineer) for Nostrum.
I am now issuing a "strategic retreat" to all departments and agencies here at Radiator: we're going to leave "strong" procedural narrative alone, and pursue a different model for NPC simulation.
For this new approach, I'm digging up another old idea I had: to think of conversation as the exchange of information. For this, I'm leaning heavily on "conversation analysis" theory from linguistics...
Conversation analysis comes from the observation that "communication" is a complex process that requires more than just grammar / syntax / etc. Communication is also a matter of context. Consider this classic exchange:
Alice: "Are you going to Carol's party?"Bob is technically responding to Alice with irrelevant nonsense. Alice was asking whether he was going to the party, not whether he has work! Yet, it's clear what Bob means -- he is implying that no, he will not attend, because he has work, presumably at the same time as the party. Alice understands the implicature, the unsaid consequence and context, of having to work. (Or, if Alice came from a culture that does not privilege forced "productivity" or wage-labor, then she probably would not understand.)
Bob: "I have work."
The theorist Paul Grice argued that there must be some system of assumptions that facilitate this understanding, and he tried to model these assumptions as a "cooperative principle" made of 4 maxims / general guidelines that people in conversations usually try to follow:
Cooperative Principle: Contribute what is required by the accepted purpose of the conversation.
- Maxim of Quality. Make your contribution true, do not convey what you believe false or unjustified.
- Maxim of Quantity. Be as informative as required.
- Maxim of Relation. Be relevant.
- Maxim of Manner. Be perspicuous; so avoid obscurity and ambiguity, and strive for brevity and order.
- What if you speak in different languages, what if you don't understand each other?
- What is "true" when being sarcastic, and what is "ambiguous" when invoking metaphor?
- When would you refrain from speaking truthfully or relevantly, how does etiquette and the social norm factor into this theory?
- Would two people who don't trust each other -- would they really want to cooperate with each other? How do you even negotiate an "accepted purpose of the conversation" -- is it before the conversation starts, or during it? But if there's no accepted purpose of conversation, how can you follow any maxims?
For Nostrum, I am going to consciously accept these limitations in my simulation (for now, sarcasm and exaggeration will be treated as straight-up lies) among other limitations:
- No textual words; all symbolic icons.
This is mainly a consequence of working with VR; text is generally unpleasant to read, whether because of weak peripheral vision / eye focusing problem / low resolution on Rift DK1.
- All ideas consist of a subject-verb-object structure.
There are only 5 verbs, and they are hard-coded.
- Ideas cannot refer to each other, e.g. you cannot talk about talking.
All thought experiments with implementing this dynamic led to a "hall of mirrors" scenario where A refers to B and B refers to A, and I couldn't think of anything more elegant than an arbitrary recursion limit. I believe Versu has a similar constraint, so it seems sensible.
- Conversations end only when it gets too awkward.
A conversation sort of has a "health" value that gets damaged as you say awkward and irrelevant things that violate one or more maxims. Sometimes, you will want to end a conversation quickly and break all the maxims... other times, you will want to prolong a conversation (maybe to distract someone, or maybe force them into revealing information).
I'll talk more about the systems details and implementation in a future post, when I have more of it implemented. For now, it seems promising.