/Talkit

Non-Linear Game Dialogue Editor

Primary LanguageJavaScriptMIT LicenseMIT

Talkit

Web Based, Non-Linear Game Dialogue Editor.

Talkit is a fork of et1337's wonderful The Poor Man's Dialogue Tree which is currently part of Lemma project. ##Description. Talkit is a Non-linear, node based, game dialog editor. It runs on jointJS. It exports to JSON with game ready content. alt text

##Nodes ###Text Display a message from the specified actor.
Actor: Specify the actor who will say the speech.
Speech: The text the actor will say.

###Choice Intended to populate the players choices for responses.
Title: The title of the choice. This is useful for cases when the buttons the player would have to chose from will differ from the actual speech he will say.
Speech: The text the actor will say.

Set

Sets a variable to a value. Can link to one Text, Node, Set, or Branch.

###Branch Takes one of several paths based on the value of a variable. Each port can link to one Text, Node, Set, or Branch.

###Node Does nothing. Can link to one Text, Node, Set, or Branch, or to one or more Choices.

##Usage Fire up the HTML, make your dialog and export.
You can add ?load="file.json" to the URL to load a graph saved on cache.
Example Output:

[
    {
        "type": "Text",
        "id": "227b6f95-2759-4bda-8364-3bcbcb2cbf4d",
        "actor": "Detective",
        "name": "Now tell me Victor.\nWhere were you last night?",
        "choices": [
            "b24806af-4923-4881-84c8-93426cbe3c19",
            "69261cd7-1cfe-4088-8c7c-99f19bc5fb25"
        ]
    },
    {
        "type": "Choice",
        "id": "69261cd7-1cfe-4088-8c7c-99f19bc5fb25",
        "title": "Honest Answer",
        "name": "I was at her house.\nBut I dind't saw anything strange.",
        "next": "6e9f9c69-3efc-447b-ac3a-ade28635b106"
    },
    {
        "type": "Choice",
        "id": "b24806af-4923-4881-84c8-93426cbe3c19",
        "title": "Lie",
        "name": "",
        "next": "fe9c4ac5-3f5a-4df1-91fe-e45b523017d7"
    },
    {
        "type": "Set",
        "id": "6e9f9c69-3efc-447b-ac3a-ade28635b106",
        "variable": "Honest",
        "value": "true",
        "next": "fd3067f6-2afc-42e8-a697-2bb5739a8438"
    },
    {
        "type": "Set",
        "id": "fe9c4ac5-3f5a-4df1-91fe-e45b523017d7",
        "variable": "Honest",
        "value": "false",
        "next": "fd3067f6-2afc-42e8-a697-2bb5739a8438"
    },
    {
        "type": "Text",
        "id": "fd3067f6-2afc-42e8-a697-2bb5739a8438",
        "actor": "Detective",
        "name": "That will be all for now.",
        "next": null
    }
]

##Not Implemented Yet - TODO:.

  • Add ?import="file.json" to import a graph from disk.
  • Add the ability to make a node a starting node.
  • Display the Id of the node on each node.