Narrat, le moteur qui s'inspire de Disco Elysium

Hello hello, suite à un bref échange discord sur les moteurs qui permettent d’interagir directement avec des éléments à l’écran, j’ai testé le moteur Narrat.
Je trouve l’outil plutôt bien fichu, donc je vous propose un petit rundown des fonctionnalités et des points forts / points faibles.

Narrat: The game engine for narrative games

  • Libre et open source

  • Moteur narratif, donc inclut la manipulation et l’expression de variables de tous types dans le texte + tous les outils associés auxquels on peut s’attendre (logique booléenne, opérateurs mathématiques, opération sur des arrays, etc.). Musiques et FX pris en charge.

  • Produit un export HTML ou electron au choix ; on peut tout très facilement modifier avec du CSS, et ajouter du JS là où on en veut.

  • Très fortement inspiré de Disco Elysium : le texte s’empile par défaut en colonne à droite d’un viewport composé d’arrières-plans, sur lesquels on peut afficher des boutons, des sprites dynamiques, etc. Le portrait des personnages s’affiche dans un encart à côté du texte lorsqu’ils parlent, on peut configurer autant de poses que l’on veut et tutti quanti.

  • Mécaniquement, les features élémentaires d’un RPG sont fournies clé en main : inventaire et objets, choix, épreuves basées sur les stats du perso joué… tout est modulable dans le script correspondant si besoin.

  • Outils de point&click / VN / j’en passe : les éléments affichables peuvent être liés à un écran (« buttons » dans la nomenclature du moteur, très utile pour naviguer entre des zones ou lancer des actions contextuelles propre à un arrière-plan) ou générés dynamiquement (« sprites » qui sont eux définis par un fichier image, peuvent avoir d’autres éléments qui dépendent d’eux, etc.). On peut leur attribuer des classes CSS et des scripts à lancer au clic, tout ça à la volée.

  • Pour approfondir ce qu’on entend par scripts : comme le fait tweego pour Twine (si j’ai bien compris ?), Narrat prend en input un répertoire entier et tous ses fichiers. On peut changer les chemins d’accès selon ses besoins, mais ça marche plutôt bien par défaut : toutes les images organisées d’un côté, tous les fichiers de config (définition à l’échelle du jeu de quels seront les écrans, les items, les personnages etc. avec leurs propriétés) de l’autre, et enfin les fichiers contenant les scripts à proprement parler (ici appelés “labels”). En gros, un label = un passage twine. Si on les déclare proprement dans l’index, on peut séparer nos labels dans autant de fichiers que voulus, ce qui devient assez vite indispensable (ex: un fichier avec tous les labels liés à la navigation entre les zones + prise en compte des variables adéquates pour déclencher des événements, un autre pour le scénario principal du jeu et les dialogues associés, un autre pour les interactions randoms, un pour les narramiettes… tout ça est interopérable, ie. narrat concatène tout ce contenu ensemble)

  • Les fichiers de config fonctionnent en hot reload, bien pratique pour tester la disposition de ses éléments sans recharger sa page test et rejouer des portions en boucle (même s’il y a un menu de debug sur le serveur virtuel qui fonctionne pas mal). Par contre, tout ce qui est contenu dans les fichiers de scripts (dont les sprites) nécessitent un F5.

  • Un petit mot sur la syntaxe qui est très claire et la plus épurée possible ; j’avais linké cet article sur le sujet il y a quelque temps, ça aide beaucoup à écrire de grosses portions d’une traite et à rester dans son rythme. Un exemple de ce à quoi ressemble un fichier de script dispo sur la page de démo → foncez ça fait en 5min le tour de ce à quoi ça ressemble en jeu

  • Les (légers) points négatifs : la doc est très fournie mais de temps à autre on tombe sur un truc qui manque ou pas à jour, il y a des petits trucs mal fichus pas difficile à contourner mais assez illogiques (certains éléments de l’UI ne peuvent pas être supprimés dans la config mais cachés avec du CSS, les items de l’inventaire doivent avoir une catégorie définie même si on ne veut pas les subdiviser, les sprites doivent supporter le hot reload dans un prochain patch mais en attendant c’est l’enfer pour les positionner correctement à tâtons, les fichiers .svg ne sont pas encore reconnus…) Globalement la dev est très réactive sur le serveur discord, l’avantage d’avoir une commu d’utilisateurs très petite… mais ça veut dire aussi moins de ressources, de partage de code…

Petit disclaimer final : au moment où j’écris ces lignes, Narrat est le seul moteur que j’aie testé.

5 « J'aime »

Ça a l’air vraiment sympa, merci pour ce résumé !. J’avais testé un jeu créé avec, mais il n’utilisait pas forcément toutes les fonctionnalités.

3 « J'aime »