Player nodes are where you predict what your players will say and how they will respond to character questions.
If the player says something that matches how the Player node was setup, then Charisma is able to select that pathway. There are multiple kinds of matching, such as general intents and specific intents.
By clicking the
Use intents? button on a Player node, you can select from common pre-created intents:
- Thumbs up: anything positive or agreeable, like "Yes", "Sounds good" or "Great!"
- Thumbs down: anything negative or disagreeable, like "No", "That's bad" or "Terrible!"
- Don't care: anything expressing ambivalence, like "Whatever" or "I couldn't care less"
- Confused: anything expressing confusion, like "Huh?" or "I don't understand"
- Compliment: anything complimenting a character specifically, like "You look nice" or "You're wonderful"
- Insult: anything insulting a character specifically, like "You're ugly" or "I hate your dress sense"
General intents can cover quite a wide range of what a player might say next. For anything else, you'll want to use specific intents.
This is a way to add your own examples of what a player might say next. This node is matched if Charisma's machine learning picks up that the player's sentence was broadly semantically similar to the examples entered in this node.
Generally, the more examples, the better! However, it should be sufficient to only have a few diverse examples.
You can add category tags into player node examples, such as
<Person> and your own custom categories. If a category is used, it is matched fuzzily. For example, if your category is "colours" and the examples were "red" and "blue", if you then had a player node example with
my favourite colour is <colours>, it would match a player saying
my favourite colour is purple, even though "purple" was not in the category.
If a category can be extracted from a player message, it will become available to save into memories using a Memory node, or for use in a directly connected Character node by using the same category tag.
You can also add memory tags into player node examples. For example, if you had a
player_name memory saved as the value "Alexa", you could add
my name is <player_name> as an example, and if the player says "My first name is Alexa", this would match.
If a player node example has less than three words, in addition to the semantic match described above, it is also considered for 'keyword matching'.
This behaviour looks for any word in the player sentence that might match the keyword.
wanna know my favourite thing in the world? felines
The above example does not match the semantic similarity check, but it does match the keyword check, because
cats is sufficiently similar as a keyword compared to
Also with specific intents, you can turn on 'exact match'. Instead of using machine learning, this literally tries the player sentence against each example to see if it's an exact match.
This can be useful if you're trying to match a specific passphrase like "alohamora"!
Exact match is case-insensitive and strips out all punctuation.
Note that it's still considered a match if an example is a substring of the player input, for example:
Not a match ❌
You can use asterisks in exact match mode as wildcards which match to any substring. So for example:
cats * great
cats are really really great
If you find yourself re-using the same player node examples in a bunch of different Player nodes throughout a story, you can create a custom intent instead in the "Intents" page in the sidebar.
This allows you to specify the examples only once, and link it to a number of Player nodes using the
Link a custom intent button. Then you can update the examples in the custom intent and the updates will cascade to any linked nodes!
Custom intents can be exact or non-exact, working in the same way as the 'exact match' functionality described above.
At the bottom-left of the graph, there is a toolbar where you can access the machine learning tools.
Here you can view the intents and categories of a player's sentence, and test whether a sentence is sufficiently similar to another sentence.