27 août 2026

C'est la rentrée,
sortez les cahiers
(ou Loreline)

Entre deux boissons fraîches sirotées (trop) près du soleil de cet été, le travail de fond sur Loreline a continué.

La version 0.10.0 vient de sortir, et avec elle plusieurs nouveautés : des beat qui prennent des arguments, l'arrivée de PHP parmi les plateformes supportées (so 2010), un export 100% GDScript pour Godot, et des correctifs divers sous le capot.

Des beats qui prennent des arguments

C'était la fonctionnalité annoncée à la fin du dernier post, et elle est maintenant là. Les beat peuvent recevoir des paramètres, y compris avec des valeurs par défaut.

character sarah
  name: Sarah

character james
  name: James

beat MatineeTranquille
  La matinée s'annonce tranquille, les habitués défilent.

  Servir(sarah.name, "un latte")
  Servir(james.name, "un thé vert", true)

beat Servir(client, boisson, emporter = false)
  $client s'approche du comptoir.

  barista: Salut $client ! Je te sers $boisson, comme d'habitude ?

  if emporter
    $client tend sa tasse réutilisable.
    barista: À emporter, c'est noté !
    $client repart aussitôt, sa tasse fumante à la main.

  else
    $client part s'installer à sa place habituelle.

Concrètement, les arguments permettent de modulariser son histoire. Des beats peuvent être utilisés de manière plus générique comme gabarits pour des situations qui se ressemblent ou se répètent à plusieurs endroits de la narration.

Et des appels dynamiques de beat

On peut aller plus loin et appeler un beat dont le nom est déterminé au moment de l'exécution, en passant une variable :

state
  boissonDuJour: Latte

beat EntrerCafe
  Le comptoir du coffee shop, un lundi matin.
  barista: Salut ! Je te prépare la boisson du jour ?

  // Appelle dynamiquement le beat `PreparerLatte`
  beat("Preparer" + boissonDuJour, "noisette")

  barista: Bonne dégustation !

beat PreparerLatte(parfum)
  barista: Un latte $parfum, ça marche.

Ce type de brique ouvre de nouvelles possibilités : aiguillages construits dynamiquement, appel de beats plus spécifiques en fonction de la situation...

Le guide d'écriture a été mis à jour avec une section dédiée aux paramètres et aux appels dynamiques.

L'éléphant dans la pièce : PHP

Loreline peut désormais faire tourner des histoires en PHP, compatible avec PHP 8.1 et versions ultérieures.

Cela peut sembler inattendu, mais PHP reste utilisé pour de nombreux sites web, notamment avec WordPress, et c'est très facile d'héberger une page PHP sur un serveur mutualisé. Le guide dédié montre comment charger un .lor, gérer les dialogues, les choix, la fin du script, et servir tout ça comme une simple page. Peut-être que cela peut donner lieu à des expérimentations nouvelles...

Cette cible est aussi rendue possible par l'architecture en Haxe de Loreline. Le même code source alimente toutes les plateformes.

Godot : un export 100% GDScript

Jusqu'ici, l'intégration Godot passait par une gdextension qui reliait l'export C++ de Loreline au GDScript de Godot. C'est efficace, mais ça implique des binaires natifs à gérer par plateforme.

Il existe maintenant une seconde option : un export entièrement en GDScript. Il n'était pas vraiment indispensable, mais là aussi, en couplant la puissance de Haxe avec Reflaxe et Reflaxe.GDScript, le code source de Loreline a pu être transpilé en GDScript pur. Cette cible passe tous les tests unitaires, comme toutes les autres, donc elle est considérée utilisable, bien qu'en pratique, l'extension native reste l'option recommandée.

Les deux approches coexistent : la gdextension native pour un maximum de performance, l'export GDScript pour un maximum de simplicité et de portabilité. Voir le guide Godot.

Le retour à la ligne automatique

C'était une demande récurrente : quand on écrit de la fiction interactive, les lignes de texte ont vite fait de s'allonger. Le retour à la ligne automatique (word wrapping) est à présent disponible dans l'Atelier comme dans Loreline Writer.

Sous le capot

Quelques évolutions plus discrètes, mais utiles :

Et maintenant ?

Loreline continue d'avancer à son rythme, guidé par les retours d'utilisation. La liste des plateformes s'est encore allongée, le langage gagne en expressivité, et l'outillage se solidifie.

Comme toujours, si vous testez Loreline et que quelque chose vous manque ou vous bloque, n'hésitez pas à en faire part. C'est ce qui aide le plus à prioriser la suite.

C'est tout pour cette fois...

...et sur ce, je vous souhaite une bonne rentrée, et surtout, bonne écriture ✍️