VNLEWIKICréez des histoires. Reliez des mondes.
Français
Manuel VNLE

Comprendre les fichiers et le JSON

Qu'est-ce que JSON ?

JSON est un format texte contenant des données structurées. Les accolades regroupent des propriétés nommées ; les crochets contiennent une liste ordonnée. Les chaînes de caractères sont entourées de guillemets doubles, contrairement aux nombres et aux valeurs true/false. Les identifiants relient les éléments. Vous pouvez consulter le fichier dans un éditeur de texte, mais modifiez normalement votre histoire dans VNLE, puis exportez à nouveau.

Présentation de JSON · Parcours d’apprentissage : intégrer le contenu à votre jeu

Le projet modifiable et l’export destiné au jeu ont des rôles différents. Modifiez le contenu dans VNLE, puis exportez à nouveau. Les extraits suivants proviennent du projet fourni.

Dossiers de l’export

story.json                  Game data: flow + text + catalogs
assets/files/…png           Images used by the game
story-index.json            Entry points for starting conversations
export-info.json            Export result
project/
  project.vnle.json          Project name, languages, catalog references
  chapters/                 Chapter structure
  flows/                    Scene nodes and entry points
  layout/                   Node positions in the editor
  characters/               Characters and portrait references
  variables/                Variable definitions and initial values
  commands/                 Game actions, inputs and outcomes
  items/, quests/, locations/ Resources
  localization/             Source texts and translations
  assets/                   Asset catalog and image files

L’exemple pédagogique ajoute guide-map.json pour associer les identifiants à des noms lisibles. Ce fichier lui est propre et n’est pas généré pour tous les projets. Dans un export habituel, les points d’entrée sont dans story-index.json et les catalogues dans story.json.

Démarrer une conversation

Un point d’entrée se compose de flowRef et entryRef. Ce sont des identifiants, pas des noms affichés. Lisez execution.entries[entryRef].nodeRef : il indique où commencer. Voici les véritables identifiants utilisés par l’exemple :

{
  "flowRef": "1f69a7b6-1bdc-4dff-b8ee-9b2819b35168",
  "entryRef": "5e6b2e12-1ac1-4c46-8221-1a051e87370a"
}

Lire un dialogue

{
  "continuation": {
    "kind": "node",
    "nodeRef": "85b3aadf-2b95-4150-bc44-c0c796337874"
  },
  "flowRef": "1f69a7b6-1bdc-4dff-b8ee-9b2819b35168",
  "id": "ffa7141b-97ed-44c1-a346-8bba7e26d94f",
  "kind": "dialogue",
  "speakerRef": "807b2957-7bab-4a28-83a4-1f3d1589bbc2",
  "text": {
    "bindings": {},
    "textRef": "fd7b61a3-8233-4ba7-8f77-b88b119a91bf"
  }
}

kind indique le type de nœud. speakerRef désigne un personnage dans content.characters. text.textRef désigne un texte dans content.texts. continuation précise ce qui se passe après Continue.

Retrouver le texte dans la bonne langue

{
  "id": "fd7b61a3-8233-4ba7-8f77-b88b119a91bf",
  "category": "dialogue",
  "sourceMessage": {
    "kind": "segments",
    "segments": [
      {
        "kind": "text",
        "text": "Welcome to the harbour. I am Mira."
      }
    ]
  },
  "placeholders": {},
  "externalUse": false
}

Utilisez content.translations[language][text ID].message s’il existe, sinon sourceMessage. Les segments de texte fournissent les mots affichés ; les paramètres de substitution reçoivent les valeurs associées dans le nœud. La langue relève des paramètres du jeu : la changer ne modifie pas la progression.

Afficher le nom et le portrait

{
  "id": "807b2957-7bab-4a28-83a4-1f3d1589bbc2",
  "name": "Mira",
  "key": "character_2fbfc3b256cb4ecf94a89965ef8e4549",
  "nameTextRef": "ff2cf3d4-08d3-47d8-b41a-86f1a801e1b7",
  "color": "#82d5e6",
  "defaultPortraitRef": "eacb484c-0663-4ffd-876d-401664b980db",
  "emotions": {}
}

Résolvez nameTextRef comme tout autre texte. Pour l’image, utilisez le portrait de l’émotion choisie ou defaultPortraitRef. Le fichier est indiqué par content.assets[portrait ID].relativePath. Copiez assets à côté de story.json.

Consulter tous les champs

Référence complète des champs · Schéma JSON · story.json