Please Note! This repository has been archived. I have been contracted to write a proprietary version of this and thus do not plan on updating this repository for the forseable future. That said, if anyone wants to fork it, please feel free to do so.
Try it here! https://nlaha.github.io/EquinoxDialogue/
Equinox dialogue is a web-based dialogue tree builder for EquinoxEngine. It is built using React, please read the instructions below if you are a contributor.
What is "Equinox Engine"? It's something I'm working on that isn't quite ready to be open sourced yet!
Build dialogue trees, when done click save or export. Save will serialize the entire tree + metadata whereas export will only export data needed by a game engine. This is tool is designed to work on a one NPC per tree system, so for each NPC you'll have a dedicated .dlg
file. It does not currently support multiple NPCs in a single conversation.
Limited copy/paste support is available through: CTRL-C CTRL-V
Delete nodes or connections with: DEL
Select multiple nodes by holding SHIFT
and dragging with the left mouse button
- Support for metadata conditionals (if quest completed -> unlocks dialogue subtree)
- Support for metadata
- Support for multiple NPCs in one conversation
- Autosaving
Electron app- Exit node
Jump node and visible node IDs
I recommend using yarn but npm run
works as well
To start a development server run...
yarn start
To build static files for production run...
yarn build
To start the electron app in development mode run...
yarn electron:start
To package the electron app as an executable run...
yarn electron:package:<mac,win,linux>
Replacing <mac,win,linux>
with your OS
The following is sample JSON from an exported dialogue tree
{
"id": "node_0",
"npc_name": "AI Character",
"type": "dialogue_entry",
"responses": [
{
"type": "none",
"next": {
"id": "node_1",
"type": "gameplay_event",
"responses": [
{
"type": "pass",
"next_node": {
"id": "node_2",
"type": "dialogue_event",
"responses": [
{
"type": "end_response",
"text": "Yes"
},
{
"type": "choice_response",
"text": "No",
"next_node": {
"id": "node_3",
"type": "jump_node",
"responses": [
{
"type": "end_response",
"text": "Exit"
}
],
"jump_to": "node_1"
}
},
{
"type": "choice_response",
"text": "Other Response",
"next_node": {
"id": "node_4",
"type": "gameplay_event",
"responses": [
{
"type": "end_response",
"text": "Exit"
}
],
"event": "test_gameplay_event_2"
}
}
],
"npc_text": "This is a test dialogue node"
}
}
],
"event": "test_gameplay_event_1"
}
}
],
"gameplay_events": [
"test_gameplay_event_1",
"test_gameplay_event_2"
]
}