JSON

JSON Format Overview

To export JSON, use the Dialogue Editor's Database page > Export Database foldout.

To import JSON, use the JSON Import window.

DialogueDatabase JSON format:

  • version: string
  • author: string
  • description: string
  • globalUserScript: string (Lua code)
  • emphasisSettings: 4 JSON objects that define font formatting.
  • actors: a list of Actors objects, a subtype of Asset*. In addition to Asset values, it also has these values that only have meaning inside Unity.
    • portrait
    • spritePortrait
    • alternatePortraits
    • alternateSpritePortraits
  • items: list of Item objects, a subtype of Asset. Also used for quests.
  • locations: list of Location objects, a subtype of Asset.
  • variables: list of Variable objects, a subtype of Asset.
  • conversations: list of Conversation objects, a subtype of Asset. In addition to Asset values, it also has:
    • overrideSettings: object defining some conversation values.
    • dialogueEntries: list of DialogueEntry objects – not a subtype of Asset, but similar.

Asset

  • id: a unique integer within its list (actors, items, etc.).
  • fields: list of <title, value, type, typeString>
    • type: numbered from 0: 0=Text, 1=Number, 2=Boolean, Files (string), Localization, Actor (ID), Item (ID), Location (ID)
    • typeString: string "CustomFieldType_Text", "CustomFieldType_Number", "CustomFieldType_Actor", etc.

Fields

Asset subtypes such as Actor and Item, as well as DialogueEntry, uses different fields. Some important fields:

  • Actor:
    • Name
    • Display Name
    • IsPlayer: (no space in name) true for PCs, false for NPCs
  • Item:
    • Name
    • Display Name
    • Is Item: true for items, false for quests
    • Several quest-related fields
  • DialogueEntry:
    • Menu Text
    • Dialogue Text
    • Sequence

In general, localized versions use fields of type Localization and titles with the language code at the end, such as "Display Name es" for Spanish.

DialogueEntry

  • fields: Same list as in Asset.
  • id: unique within its conversation.
  • conversationID
  • isRoot: bool
  • isGroup: bool
  • nodeColor: string, web color (e.g., "#ffffff").
  • delaySimStatus: bool
  • conditionPriority: numbered from 0: 0=Low, 1=BelowNormal, 2=Normal, 3=AboveNormal, 4=High
  • outgoingLinks: list of <originConversationID, originDialogueID, destinationConversationID, destinationDialogueID, isConnector, priority>
    • isConnector is false.
    • priority is same value as conditionPriority.
  • conditionsString: string (Lua code)
  • userScript: string (Lua code)
  • onExecute: ony has meaning inside Unity.
  • canvasRect: node position <x, y, width, height>

DialogueDatabase JSON Example

This is a basic dialogue database in JSON format. It has:

  • Actors (2): Player and NPC.
  • Items/Quests: One quest, with no quest entries.
  • Locations: One location.
  • Variables (2): Text and Boolean.
  • Conversations: One conversation with a <START> node, one NPC node, and one PC node.
{
"version":"1.0",
"author":"Pixel Crushers",
"description":"This is a basic dialogue database.",
"globalUserScript":"",
"emphasisSettings":[
{
"color":{
"r":1.0,
"g":1.0,
"b":1.0,
"a":1.0
},
"bold":false,
"italic":false,
"underline":false
},
{
"color":{
"r":1.0,
"g":0.0,
"b":0.0,
"a":1.0
},
"bold":false,
"italic":false,
"underline":false
},
{
"color":{
"r":0.0,
"g":1.0,
"b":0.0,
"a":1.0
},
"bold":false,
"italic":false,
"underline":false
},
{
"color":{
"r":0.0,
"g":0.0,
"b":1.0,
"a":1.0
},
"bold":false,
"italic":false,
"underline":false
}
],
"actors":[
{
"id":1,
"fields":[
{
"title":"Name",
"value":"Player",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Pictures",
"value":"[]",
"type":3,
"typeString":"CustomFieldType_Files"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"IsPlayer",
"value":"True",
"type":2,
"typeString":"CustomFieldType_Boolean"
}
],
"portrait":{
"instanceID":0
},
"spritePortrait":{
"instanceID":0
},
"alternatePortraits":[
],
"spritePortraits":[
]
},
{
"id":2,
"fields":[
{
"title":"Name",
"value":"NPC",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Pictures",
"value":"[]",
"type":3,
"typeString":"CustomFieldType_Files"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"IsPlayer",
"value":"False",
"type":2,
"typeString":"CustomFieldType_Boolean"
}
],
"portrait":{
"instanceID":0
},
"spritePortrait":{
"instanceID":0
},
"alternatePortraits":[
],
"spritePortraits":[
]
}
],
"items":[
{
"id":1,
"fields":[
{
"title":"Name",
"value":"Quest Q1",
"type":0,
"typeString":""
},
{
"title":"Pictures",
"value":"[]",
"type":3,
"typeString":"CustomFieldType_Files"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":""
},
{
"title":"Success Description",
"value":"",
"type":0,
"typeString":""
},
{
"title":"Failure Description",
"value":"",
"type":0,
"typeString":""
},
{
"title":"State",
"value":"unassigned",
"type":0,
"typeString":""
},
{
"title":"Is Item",
"value":"False",
"type":2,
"typeString":"CustomFieldType_Boolean"
}
]
}
],
"locations":[
{
"id":1,
"fields":[
{
"title":"Name",
"value":"Location L1",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
}
]
}
],
"variables":[
{
"id":1,
"fields":[
{
"title":"Name",
"value":"Alert",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Initial Value",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
}
]
},
{
"id":2,
"fields":[
{
"title":"Name",
"value":"Variable V1",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Initial Value",
"value":"False",
"type":2,
"typeString":"CustomFieldType_Boolean"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
}
]
}
],
"conversations":[
{
"id":1,
"fields":[
{
"title":"Title",
"value":"Conversation C1",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Pictures",
"value":"[]",
"type":3,
"typeString":"CustomFieldType_Files"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Actor",
"value":"1",
"type":5,
"typeString":"CustomFieldType_Actor"
},
{
"title":"Conversant",
"value":"2",
"type":5,
"typeString":"CustomFieldType_Actor"
},
{
"title":"Window Size",
"value":"Auto",
"type":0,
"typeString":"CustomFieldType_WindowSize"
},
{
"title":"Portraits",
"value":"0",
"type":0,
"typeString":"CustomFieldType_ConversationPortraitMode"
}
],
"overrideSettings":{
"useOverrides":false,
"overrideSubtitleSettings":false,
"showNPCSubtitlesDuringLine":true,
"showNPCSubtitlesWithResponses":true,
"showPCSubtitlesDuringLine":false,
"skipPCSubtitleAfterResponseMenu":false,
"subtitleCharsPerSecond":30.0,
"minSubtitleSeconds":2.0,
"continueButton":0,
"overrideSequenceSettings":false,
"defaultSequence":"",
"defaultPlayerSequence":"",
"defaultResponseMenuSequence":"",
"overrideInputSettings":false,
"alwaysForceResponseMenu":true,
"includeInvalidEntries":false,
"responseTimeout":0.0,
"cancelSubtitle":{
"key":27,
"buttonName":""
},
"cancelConversation":{
"key":27,
"buttonName":""
}
},
"nodeColor":"",
"dialogueEntries":[
{
"id":0,
"fields":[
{
"title":"Title",
"value":"START",
"type":0,
"typeString":""
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":""
},
{
"title":"Actor",
"value":"1",
"type":5,
"typeString":"CustomFieldType_Actor"
},
{
"title":"Conversant",
"value":"2",
"type":5,
"typeString":"CustomFieldType_Actor"
},
{
"title":"Menu Text",
"value":"",
"type":0,
"typeString":""
},
{
"title":"Dialogue Text",
"value":"",
"type":0,
"typeString":""
},
{
"title":"Sequence",
"value":"None()",
"type":0,
"typeString":""
},
{
"title":"Response Menu Sequence",
"value":"",
"type":0,
"typeString":""
},
{
"title":"Portraits Visible",
"value":"True",
"type":2,
"typeString":"CustomFieldType_Boolean"
},
{
"title":"Portrait Position",
"value":"0",
"type":0,
"typeString":""
},
{
"title":"Temp Translation",
"value":"False",
"type":2,
"typeString":"CustomFieldType_Boolean"
}
],
"conversationID":1,
"isRoot":false,
"isGroup":false,
"nodeColor":"",
"delaySimStatus":false,
"falseConditionAction":"",
"conditionPriority":2,
"outgoingLinks":[
{
"originConversationID":1,
"originDialogueID":0,
"destinationConversationID":1,
"destinationDialogueID":1,
"isConnector":false,
"priority":2
}
],
"conditionsString":"",
"userScript":"",
"onExecute":{
"m_PersistentCalls":{
"m_Calls":[
]
}
},
"canvasRect":{
"serializedVersion":"2",
"x":30.0,
"y":20.0,
"width":160.0,
"height":30.0
}
},
{
"id":1,
"fields":[
{
"title":"Title",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Actor",
"value":"2",
"type":5,
"typeString":"CustomFieldType_Actor"
},
{
"title":"Conversant",
"value":"1",
"type":5,
"typeString":"CustomFieldType_Actor"
},
{
"title":"Menu Text",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Dialogue Text",
"value":"NPC text.",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Sequence",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
}
],
"conversationID":1,
"isRoot":false,
"isGroup":false,
"nodeColor":"",
"delaySimStatus":false,
"falseConditionAction":"Block",
"conditionPriority":2,
"outgoingLinks":[
{
"originConversationID":1,
"originDialogueID":1,
"destinationConversationID":1,
"destinationDialogueID":2,
"isConnector":false,
"priority":2
}
],
"conditionsString":"",
"userScript":"",
"onExecute":{
"m_PersistentCalls":{
"m_Calls":[
]
}
},
"canvasRect":{
"serializedVersion":"2",
"x":30.0,
"y":70.0,
"width":160.0,
"height":30.0
}
},
{
"id":2,
"fields":[
{
"title":"Title",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Description",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Actor",
"value":"1",
"type":5,
"typeString":"CustomFieldType_Actor"
},
{
"title":"Conversant",
"value":"2",
"type":5,
"typeString":"CustomFieldType_Actor"
},
{
"title":"Menu Text",
"value":"Player short menu text.",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Dialogue Text",
"value":"Player expanded text.",
"type":0,
"typeString":"CustomFieldType_Text"
},
{
"title":"Sequence",
"value":"",
"type":0,
"typeString":"CustomFieldType_Text"
}
],
"conversationID":1,
"isRoot":false,
"isGroup":false,
"nodeColor":"",
"delaySimStatus":false,
"falseConditionAction":"Block",
"conditionPriority":2,
"outgoingLinks":[
],
"conditionsString":"",
"userScript":"",
"onExecute":{
"m_PersistentCalls":{
"m_Calls":[
]
}
},
"canvasRect":{
"serializedVersion":"2",
"x":30.0,
"y":120.0,
"width":160.0,
"height":30.0
}
}
],
"canvasScrollPosition":{
"x":0.0,
"y":0.0
},
"canvasZoom":1.0
}
],
"syncInfo":{
"syncActors":false,
"syncItems":false,
"syncLocations":false,
"syncVariables":false,
"syncActorsDatabase":{
"instanceID":0
},
"syncItemsDatabase":{
"instanceID":0
},
"syncLocationsDatabase":{
"instanceID":0
},
"syncVariablesDatabase":{
"instanceID":0
}
},
"templateJson":"{\"treatItemsAsQuests\":true,\"actorFields\":[{\"title\":\"Name\",\"value\":\"\",\"type\":0,\"typeString\":\"\"},{\"title\":\"Pictures\",\"value\":\"[]\",\"type\":3,\"typeString\":\"CustomFieldType_Files\"},{\"title\":\"Description\",\"value\":\"\",\"type\":0,\"typeString\":\"\"},{\"title\":\"IsPlayer\",\"value\":\"False\",\"type\":2,\"typeString\":\"CustomFieldType_Boolean\"}],\"itemFields\":[{\"title\":\"Name\",\"value\":\"\",\"type\":0,\"typeString\":\"\"},{\"title\":\"Pictures\",\"value\":\"[]\",\"type\":3,\"typeString\":\"CustomFieldType_Files\"},{\"title\":\"Description\",\"value\":\"\",\"type\":0,\"typeString\":\"\"},{\"title\":\"Is Item\",\"value\":\"True\",\"type\":2,\"typeString\":\"CustomFieldType_Boolean\"}],\"questFields\":[{\"title\":\"Name\",\"value\":\"\",\"type\":0,\"typeString\":\"\"},{\"title\":\"Pictures\",\"value\":\"[]\",\"type\":3,\"typeString\":\"CustomFieldType_Files\"},{\"title\":\"Description\",\"value\":\"\",\"type\":0,\"typeString\":\"\"},{\"title\":\"Success Description\",\"value\":\"\",\"type\":0,\"typeString\":\"\"},{\"title\":\"Failure Description\",\"value\":\"\",\"type\":0,\"typeString\":\"\"},{\"title\":\"State\",\"value\":\"unassigned\",\"type\":0,\"typeString\":\"\"},{\"title\":\"Is Item\",\"value\":\"False\",\"type\":2,\"typeString\":\"CustomFieldType_Boolean\"}],\"locationFields\":[{\"title\":\"Name\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Description\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"}],\"variableFields\":[{\"title\":\"Name\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Initial Value\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Description\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"}],\"conversationFields\":[{\"title\":\"Title\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Description\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Actor\",\"value\":\"0\",\"type\":5,\"typeString\":\"CustomFieldType_Actor\"},{\"title\":\"Conversant\",\"value\":\"0\",\"type\":5,\"typeString\":\"CustomFieldType_Actor\"}],\"dialogueEntryFields\":[{\"title\":\"Title\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Description\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Actor\",\"value\":\"\",\"type\":5,\"typeString\":\"CustomFieldType_Actor\"},{\"title\":\"Conversant\",\"value\":\"\",\"type\":5,\"typeString\":\"CustomFieldType_Actor\"},{\"title\":\"Menu Text\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Dialogue Text\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"},{\"title\":\"Sequence\",\"value\":\"\",\"type\":0,\"typeString\":\"CustomFieldType_Text\"}],\"actorPrimaryFieldTitles\":[],\"itemPrimaryFieldTitles\":[],\"questPrimaryFieldTitles\":[],\"locationPrimaryFieldTitles\":[],\"variablePrimaryFieldTitles\":[],\"conversationPrimaryFieldTitles\":[],\"dialogueEntryPrimaryFieldTitles\":[],\"npcLineColor\":{\"r\":1.0,\"g\":0.0,\"b\":0.0,\"a\":1.0},\"pcLineColor\":{\"r\":0.0,\"g\":0.0,\"b\":1.0,\"a\":1.0},\"repeatLineColor\":{\"r\":0.5,\"g\":0.5,\"b\":0.5,\"a\":1.0}}"
}

<< Import & Export