Comparaison avec Ink et Yarn Spinner

Ink et Yarn Spinner sont les deux autres outils couramment utilisés pour le récit interactif. Voici un aperçu de ce qui les distingue.

Cette section essaie de faire une comparaison honnête, au moment où cet article a été rédigé, et ne prétend en aucun cas qu'un outil est meilleur ou moins bon qu'un autre. Militons pour plus de diversité dans les logiciels d'écriture de fiction interactive, et c'est en ce sens que Loreline s'invite à la fête !

À propos d'Ink

Ink a été créé par Inkle et utilisé dans des jeux comme 80 Days et Heaven's Vault. Sa structure repose sur des knots (sections principales), des stitches (sous-sections) et un système de weave pour les embranchements imbriqués. Le contrôle de flux utilise des diverts (-> knot_name), et les choix sont marqués avec * (une seule fois) ou + (permanents). Ink dispose d'un runtime C# mature avec un plugin Unity officiel. Un portage JavaScript (inkjs) est également officiellement supporté. Des portages C++ communautaires existent aussi, dont inkcpp (bibliothèque standalone disponible aussi en plugin UE) et Inkpot (plugin UE5 développé par The Chinese Room). Ink ne dispose d'aucun système de localisation natif, il faut donc construire son propre outillage à partir des métadonnées #tag.

À propos de Yarn Spinner

Yarn Spinner utilise un format similaire à un scénario, organisé en nœuds délimités par --- et ===. Les commandes utilisent <<doubles crochets angulaires>> et les options -> (v2+). Il bénéficie d'une intégration Unity solide et d'un éditeur visuel de nœuds. C'est principalement un outil C#/.NET ; une implémentation C++ officielle pour Unreal Engine est en développement actif (en bêta début 2026).

Comparaison de syntaxe

Pour comparer plus concrètement, voici le même script écrit dans les trois langages : narration, dialogue, un choix conditionnel et une mise à jour de variable :

state
  cafesCommandes: 0

character barista
  name: Alex

beat Cafeteria
  Une bonne odeur de café flotte dans la salle.
  barista: Salut ! Qu'est-ce que je te sers ?

  choice
    Un café normal
      barista: C'est parti !

    Un déca if cafesCommandes > 2
      barista: Tu passes au déca ? Sage décision.

  cafesCommandes += 1
  if cafesCommandes > 3
    barista: Ça fait quand même beaucoup de café aujourd'hui...
VAR cafesCommandes = 0

=== Cafeteria ===
Une bonne odeur de café flotte dans la salle.
Alex: Salut ! Qu'est-ce que je te sers ?

+ Un café normal
  Alex: C'est parti !
+ {cafesCommandes > 2} Un déca
  Alex: Tu passes au déca ? Sage décision.
-
~ cafesCommandes = cafesCommandes + 1
{cafesCommandes > 3:
  Alex: Ça fait quand même beaucoup de café aujourd'hui...
}
-> DONE
title: Cafeteria
---
<<declare $cafesCommandes = 0>>

Une bonne odeur de café flotte dans la salle.
Alex: Salut ! Qu'est-ce que je te sers ?

-> Un café normal
    Alex: C'est parti !
-> Un déca <<if $cafesCommandes > 2>>
    Alex: Tu passes au déca ? Sage décision.

<<set $cafesCommandes = $cafesCommandes + 1>>
<<if $cafesCommandes > 3>>
    Alex: Ça fait quand même beaucoup de café aujourd'hui...
<<endif>>
===

Les trois scripts racontent la même histoire avec une longueur comparable mais des conventions différentes. Chaque langage a sa propre façon de gérer les déclarations, les choix et les embranchements.

Comparatif détaillé

Loreline Ink Yarn Spinner
Structure Sections beat avec indentation ; choix et alternatives imbriqués Knots (sections principales) + stitches (sous-sections) + weave pour les embranchements en ligne Nœuds nommés, chacun délimité par --- / ===
Choix Mot-clé choice + indentation ; conditions if en ligne sur les options individuelles * (disparaît après avoir été choisi) ou + (toujours disponible) ; le marqueur contrôle si l'option réapparaît ; weave gère les embranchements locaux Options -> avec conditions via <<if>>
Personnages Natifs : déclarés avec des champs typés, lisibles et modifiables tout au long de l'histoire Géré par l'application hôte Géré par le moteur de jeu
État Les variables sont déclarées dans des blocs state : state de haut niveau (partagé sur tout le script) ; state dans un beat (limité à ce beat) ; new state (temporaire, réinitialisé à chaque exécution du beat) Variables intégrées : VAR (globale), TEMP (locale), LIST (type énumération) Variables intégrées ; déclarées avec <<declare>>
Tags de texte <tag> intégré sur n'importe quelle ligne ; transmis à l'hôte tel quel sans affecter le flux #tag ajouté au texte de sortie Blocs <<command>> pour les instructions de jeu
Alternatives 5 modes intégrés : sequence, cycle, once, pick, shuffle Séquences et shuffle via les marqueurs de choix & / ~ Pas de support natif ; géré via du script personnalisé
Fonctions Plus de 60 fonctions intégrées. Possibilité de programmer des fonctions personnalisées directement dans les scripts Loreline Fonctions intégrées pour les opérations courantes ; la logique personnalisée nécessite des fonctions externes écrites en C# ou JavaScript Logique personnalisée gérée via des commandes et fonctions C# enregistrées depuis l'application hôte
Localisation Intégrée : étiquettes #clé dans le script + fichiers de traduction .lor par langue Pas de support natif ; les équipes s'appuient généralement sur les métadonnées #tag Export/import de tables CSV
Cibles JS, TS, C#, C++, Java, Python, Lua, Haxe, tous depuis une seule base de code Haxe C# officiel (Unity) ; JS officiel (inkjs) ; C++ communautaire uniquement (inkcpp, Inkpot) C# / .NET officiel (Unity) ; C++ pour UE en développement actif (bêta)

Ink et Yarn Spinner sont matures, bien documentés et ont été utilisés dans des jeux publiés depuis des années. Loreline est plus récent et adopte une approche différente : structure par indentation, personnages et état comme éléments fondamentaux du langage, et compilation native vers plusieurs plateformes depuis une seule base de code. Le meilleur choix dépend de la familiarité de l'équipe, du moteur cible et du style de script qui correspond le mieux à la façon dont on veut écrire.

Essayer Loreline

Le moyen le plus rapide de commencer est l'Atelier, où vous pouvez écrire et exécuter des scripts Loreline directement dans le navigateur, sans rien installer. Pour aller plus loin, le Guide d'écriture couvre le langage complet pas à pas.