Optional ReadonlyloopThe maximum number of iterations to allow in a Viv loop. Rather than throwing an error if the threshold is reached, the runtime will simply exit the loop.
Optional ReadonlymemoryA positive number specifying a salience threshold for memories, below which memories will be forgotten.
Viv models character memories fading over time by reducing salience during periods where a memory
is not re-experienced by a character -- re-experiencing happens when the memory's subject action
is cast in another action that the character experiences, observes, or hears about. This is driven
by the value set in memoryRetentionMonthlyMultiplier.
If ever a salience value is reduced such that this threshold exceeds it, the associated memory will be marked CharacterMemory.forgotten, to model total forgetting of the past event. To be clear, we only do this if the salience value is strictly less than the threshold.
Note that a forgotten memory can be revitalized for a character who relearns about the subject action.
Important: If the initial salience value for a new memory is lower than this threshold, it will not immediately be marked as forgotten, but instead this will occur the first time the memory is faded (via fadeCharacterMemories).
Optional ReadonlymemoryIf specified, the maximum salience value for character memories.
Clamping will not occur if this field is elided or set to null.
Note that saliences accumulate as memories are re-experienced -- re-experiencing happens when the memory's subject action is cast in another action that the character experiences, observes, or hears about. As such, saliences have no explicit upper bound given a content bundle, even if you e.g. use enum values to specify salience increments. This parameter allows you to specify such an upper bound.
Optional ReadonlymemoryA number specifying the degree to which character memories will be retained month over month.
This important config parameter drives the modeling of characters gradually forgetting past events.
I recommend a value around 0.9 here, but you might have your own intuitions (or empirical methods).
Specifically, the value here must be a number between 0.0 (characters quickly forget everything) and
1.0 (characters never forget anything). With each passing month, a given character's salience value
will be multiplied by this number to model how much the character's memory faded over that time.
For instance, if the character's current salience is 10 and the value set here is 0.9, the
character's updated salience after one month would be 9. If another month passed without the
character re-experiencing the memory -- re-experiencing happens when the memory's subject action
is cast in another action that the character experiences, observes, or hears about -- the salience
would be further reduced to 8.1. And so forth.
If ever the salience is reduced to a number below the threshold set via
memoryForgettingSalienceThreshold, the memory will be marked
CharacterMemory.forgotten, to model total forgetting of the past event.
Note that the salience scale will always be (memoryForgettingSalienceThreshold,
memoryMaxSalience] -- or (memoryForgettingSalienceThreshold, Infinity) if
memoryForgettingSalienceThreshold is not defined -- where the meaning of a given value is
entirely defined by your host application. This lower bound is established because any initial
salience value less than or equal to memoryForgettingSalienceThreshold will prevent the
associated memory from being formed in the first place.
Important: We use a timeframe of one month here only to support designer intuitions around forgetting, since it would be difficult to reason about e.g. the degree to which one forgets a past event each minute. The actual frequency of memory fading depends on the frequency with which the host application invokes fadeCharacterMemories -- but that function will always convert the time since the last invocation into a number of months, so as to always honor your config parameter here.
Configuration parameters controlling various aspects of Viv system behavior.