About Loreline

Loreline is made by Jérémy Faivre, a software engineer and game developer based in Paris. Games, creative code, music: the common thread has always been building tools that bring ideas to life.
Why build another narrative scripting language?
Creating interactive stories has always appealed to me, and my background in game development led me to build dialogue systems, branching narrative tooling, and other systems that tell stories. I created and shipped video games with Cyprien and Étienne Périn. Together, we also prototyped real-time narrative gameplay with the participation of FibreTigre.
Every time, the narrative systems were custom-built. But over time, with the ambition to go further in creating interactive stories, the need for a more versatile tool that wasn't tied to a single game became clear. So I first evaluated existing options like Twine, Ink, and Yarn Spinner, only to find them decent but not quite what I'd want to use long-term.
I have a rather radical track record when it comes to tooling: I built an entire open source game engine from scratch, the very one we shipped those games with. I also use a little-known but incredibly powerful programming language called Haxe, made in France 🥖. Let's just say following trends isn't my top priority*!
So, for better or worse, why not pathologically go again and build a tool from scratch?
That's how Loreline was born.
doctor: You're relapsing, Jérémy.
jeremy: Doctor, this time it's different. It's narrative.
The doctor sighs, puts away his notes,
and quietly closes the door behind him.
* Don't worry, after 20 years of software development, I've worked with plenty of different technologies and languages: Unity, C++, Node.js, Android, iOS, React and even Flash. You have to live in society... (and by the way, Loreline is compatible with many of these!)
What shaped the design
A few deliberate choices define Loreline:
- Indentation over delimiters. The structure of the script should match what you see, without closing tags or special markers cluttering the text.
- Characters as first-class citizens. Dialogue-driven stories revolve around characters. They deserve to be declared, tracked, and referenced natively in the language.
- Portable from the start. Loreline is written in Haxe and compiles to JavaScript, C#, C++, Python, and Lua. It can plug into any game engine. A single implementation means consistent behavior everywhere and updates that ship to all platforms at once.
- Readable by writers, equipped for complex cases. The syntax stays close to natural language for the common cases, but variables, conditions, functions, and imports are there when you need them.
The rich aroma of coffee fills the room.
barista: Hey there! How's your day going?
choice
Having a great day
barista: Wonderful! The coffee will make it even better.
Need caffeine...
barista: Say no more! Let me take care of it.
Your name is Alex, right?
barista.name = "Alex"
barista: Oh, I didn't expect you to remember!
Who uses Loreline
Dogfooding matters. I use Loreline for the dialogue system of my puzzle platformer in development: Radiant Zenith, which progressively unfolds an entire narrative arc.
By making the tool available and building this website, I hope to encourage game developers and interactive fiction creators to try Loreline, and maybe even adopt it for their future projects. That will probably happen gradually!
Loreline has just been made public. If you're using it in a project, let me know: I'd love to feature it here!
What's next
Loreline is still recent. The language and its tooling will evolve based on real usage and feedback. I also have plenty of ideas to explore to make it better!
Want to explore further? Start with the Introduction to Loreline, or try it directly in your browser.