branching-dialogue
v0.1.0
Published
A stateless API for modeling branching dialogue in role-playing games
Downloads
16
Maintainers
Readme
branching-dialogue
A stateless API for modeling branching dialogue in role-playing games
Background / Initial Motivation
The initial motivation for this library was to power branching dialogue with npc's in a browser game.
To Install
$ npm install --save branching-dialogue
Usage
Conversations are directed graphs are stored as JSON
{
"dialogue": {
"1": {
"text": "I'm doing fantastic! Want to get some dinner?",
"responses": [
{
"next": 4,
"reply": "Absolutely! I'll meet you at La Marina"
}
]
},
"2": {
"text": "Hey how are you?",
"responses": [
{
"next": 1,
"reply": "Great how are you?"
},
{
"next": 3,
"reply": "Not so good :("
}
]
},
"3": {
"text": "Oh no, do you need anything from me?",
"responses": [
{
"next": 5,
"reply": "Nah, I'm alright thank you."
}
]
},
"4": {
"action": "go-to-dinner",
"text": "Sounds great!"
},
"5": {
"action": null,
"text": "Alright, well feel better."
}
},
"start": [
{
"dialogueId": 2,
"if": true
}
]
}
}
// The example convo.json file from above
var convo = require('./convo.json')
var branchingDialogue = require('branching-dialogue')
// We start at dialogue id #2
var startText = branchingDialogue.get(
convo,
convo.start[0].dialogueId
)
// We choose the second response, "Not so good :("
var nextText = branchingDialogue.get(convo, startText.responses[1].next)
// We choose the first response, "Nah, I'm alright thank you"
var nextText = branchingDialogue.get(convo, startText.responses[0].next)
// This gets executed based on the above replies
if (!nextText.action) {
console.log(nextText.text)
// Alright, well feel better.
}
// This does not get executed
if (nextText.action === 'go-to-dinner') {
// Your code might send your player to the dinner venue
}
TODO:
- [ ] Implement the module
- [ ] Figure out API for conditional start / responses
API
branchingDialogue.get(convo, dialogueId)
-> Object
convo
Required
Type: object
A JSON representation of the conversation.
dialogueId
Required
Type: Number
|| String
The id of the part of the conversation that you are retrieving
See Also
// TODO: Link to the module for parsing the conditional response DSL
License
MIT