The inkle blog

Autocut!

Here at inkle we're currently into the closing stages of work on our upcoming Scottish adventure, A Highland Song. It's a 2D platformer with climbing, running and jumping - and narrative elements. As the protagonist, Moira, explores the hills and caves on her way to sea she'll find things to investigate and characters to talk to.

So far so good - but there's a problem with mixing adventure gaming and platforming. In adventure games, it's usual for the player to walk up to an interactive object and stand in front of it while the protagonist describes it. But platformers are all about motion. Taking away control from the player feels bad.

So how do we keep things feeling snappy and responsive, while still allowing the player to get stuck into a good inkle-style conversation if they want to?

Put another way, how do we let the player get knots-deep into a conversation - while still being able to walk away at any moment?

Autocuts

Enter the "autocut": two variables we set at the start of a conversation or interaction which are observed on the game side.

~ autoCutZone = WOODSMAN_TRIGGER_VOLUME
~ autoCutKnot = -> leave_woodsman

For those who know ink, the first of these variables takes a LIST value, which specifies a volume in the world. Should the player, who's still free to move, step outside of this volume, the game uses ChoosePathString to divert immediately to the knot specified in the second variable (and it wipes the autocut values to prevent an infinite loop).

So perhaps you meet a friend who wants to stop and chat, but the sun is going down and you need to get away... you can. And if you meet a lonely poet and ask him for a sample, and he starts to recite at length... you don't have to wait for him to finish before you vote with your feet.

And for almost every conversation in the game, we don't block the player's control at all.

(And should the player - or the other character - finish the conversation with a friendly farewell instead, we simply empty the autoCutZone variable and move on as normal.)

Simple but powerful

It's a simple system, but we're finding it incredibly effective: a game-character can be mid-exposition and the player can simply walk off... and the character will react. They can bid you farewell, remark on your rudeness, or even shout something to try and lure you back.

We can even define a second, larger trigger volume to give the player another chance to really walk away... and so forth.

And ink can still track which bits of content you've seen and which bits you've skipped. So despite having a trapdoor anywhere in any conversation, it doesn't make the flow more complex or damage the script's continuity. We can still test the flow in inky or with an automated tester.

Keeping things moving!

So while the character might still pause on the spot if they're reading a signpost or picking something up, they'll never get stuck in a conversation they don't want to.

... Although, of course, turning your back on someone can have its consequences too...

Letters

A Highland Song is described in the blurb of our announcement trailer as "a narrative adventure with rhythm and survival elements". It's also a game about walking across the wild and empty Scottish highlands, alone.

So how does one tell a story, when you're on your own?

A lonely trek?

Games are a bit peculiar when it comes to telling stories with only one character: in films it's usually considered a basic requirement to have two people going on a journey together (so they can argue along the way), and even the most introspective books usually move their protagonist from human encounter to human encounter.

But games with solo protagonists going on lonely journeys are common, whether it's Breath of the Wild or Elden Ring. As players, we're used to long stretches without storytelling (or with purely "environmental storytelling", which is really another word for "set dressing") as we go from village to town, or from NPC to NPC (or to a coffin on the edge of a lava waterfall, for some reason).

inkle's games are usually different. When you travel the world in 80 Days you're in constant contact with your master, Phileas Fogg; and when you sail the rivers of the Nebula, your robot Six is heckling you the whole time. But then again, for most of Sorcery! you're a lone adventurer (unless you've been cursed by a talkative, grumpy wizard, I suppose.)

What's made A Highland Song more difficult, though, are the Highlands themselves. There are no villages or towns between Moira and the sea. There are some characters, but not too many - too many, and these empty wilds would start to feel weirdly crowded. Not only that, but the journey goes ever-forwards, so players can't backtrack from one character to another: the people you do meet are quickly left behind.

There are no shops to buy upgrades from, and no bandits or tricksters on the roads. So where and how does a narrative arise?

Walking and thinking

We realised early on in the project this was a game about walking. And when one's out walking, after a while, things arise - thoughts, feelings, memories... Walking is a way of shaking out your brain and seeing what sticky things come loose. So as Moira walks she has ideas, and thoughts - and she remembers things, the most common of which are things written to her by her Uncle Hamish, who has been sending her letters since she was small.

As the narrative designer on the project, one of my jobs is to ensure that what Hamish has to say is - to be blunt - interesting. I might write a wonderful series of remarks on the subject of wild Scottish heather, but if the player hasn't seen any, doesn't know what it is, and anyway, is up in the snow-capped mountains at this point where the heather doesn't grow, it's not going to be very relevant.

This is always a tricky problem in games (how often has a game character shouted out a useful hint or piece of advice to you in a game? And how often was that advice actually relevant a moment earlier, but not any more?) But in a game about stories, and legends - and in a game with a mystery at its heart, which A Highland Song has - it's not just about making sure the storytelling is relevant. It wants to be more than relevant. It wants to be rewarding.

Letters, and letters back

It was on a walk (from a coffeeshop to home) when I understood that I'd been missing something. The problem with Hamish writing you letters (well, having written you letters that you're now thinking back on) is that, unlike a conversation with a sidekick, you don't get to ask questions in return. You can't lead the conversation; you can't focus on what you're interested in; you can't follow up...

... but the other thing about Hamish having written you letters, in the past, is that Moira might well have written letters back. Letters in response to Hamish's letters: letters asking him questions, or asking for more information.

Of course, all those letters were written well before the game started... but what did Moira ask? What should she have asked? Those are exactly the kinds of decisions we like letting the player take for the protagonist.

Conversation by correspondence

So that leads us to Highland's core "conversation" mechanic, which is perhaps the oddest one we've ever built. As you settle down to sleep, Moira will recall a letter she wrote to her Uncle, asking him something... and she'll recall her Uncle's reply; a little fragment of story, legend, memory (or, like, a joke), all of which add up to form the main narrative thread that winds from peak to peak as you make your way to the sea.

And like the conversations that pass between Aliya and Six in Heaven's Vault, what Moira can ask about is highly contextual, driven by what you've found and what you've seen, by what you've learned recently... What Moira remembers is decided by whatever's at the forefront of Moira's mind, and what threads she's been following.

Guide her to ask more about the ruined castle known as the Outer Wall, and you might learn more about the legendary Queen Morag, which in turn might bring up further questions... but change the subject to Uncle H and his lighthouse, and you'll learn something else.

Explore without and within

A Highland Song is always going to be a game about being on your own, in a place much bigger than you, for which you're ill-prepared. But even if you're alone, you don't need to be lonely. We all carry a universe of voices inside our heads, and there's plenty to explore inside as well as out.

I said above there's a mystery at the heart of the game. Rest assured: Moira has all the answers she needs; if she can only find them...

ink: the official user's guide, is out now!

Newly released via the inkle bookshop: the official user's guide to the ink scripting language.

Consisting of three parts, the guide covers everything from installing the software, to integrating it with Unity, through to using more complex patterns and tricks to push the limits of what's possible in your interactive stories.

Suitable for beginners, but with something to offer the expert, the official guide is the definitive companion to ink.

Buy the guide

Books

The guide

The guide has three parts: Writing with Ink, Running your Ink and Ink Patterns.

Writing with Ink is the manual contained within inky, which guides you from first principles, through to the more complex features of the language. The guide's version is up-to-date with the latest language features, and has been thoroughly revised with new examples.

Running your Ink is also revised from the free copy available with the ink repo: the new version contains additional sections on profiling your ink, managing save files between release versions of your game and localisation.

And the third part, Ink Patterns, is a new release that pulls together several tricks and ink structures we've developed over the years. Some of these have been previously released via Patreon and on Discord; but we've pulled them together and organised them into sections covering lists, loops, shuffling choices, decision-trees and more.

Heaven's Vault novels, out now!

When we released Heaven's Vault in 2019, it was the biggest storytelling task we'd ever undertaken - a whole world, with 4,000 years of history, and a language or two besides.

Since then, it's gone on to win awards and gain a loyal community of fans, writing in Ancient, creating new words, and piecing together the hidden corners of the Nebula's turbulent history.

And here at inkle we haven't been able to leave the Nebula behind either - which is why, last year, we began work on a collection of stories from the world of Heaven's Vault. That collection grew into a full novelisation of the game, that deepens, broadens, expands and develops the story of the game.

And it's out now:

Buy Heaven's Vault Books

Books

Two Books, One Story

Split across two 300 page volumes, the story follows Aliya Elasra from her first meeting with hew new robot Six to the rice fields of Maersi and into the wild waters of the Cyclones as they search for missing roboticist, Janniqi Renba, and stumble upon an ancient and dangerous secret that threatens the entire Nebula.

Books

The books are written by the game's narrative designer and writer, Jon Ingold (hi!), and they contain new characters, new locations, new lore and new twists (as well as one full-page Ancient inscription per volume, for translation fans!) If you've played the game, there's plenty more here to enrich the experience.

But the books are also written to be read by people who have never played the game (or played any game!) The books provide a different way to enter and explore the world of the Nebula.

Out now, limited release

We've been sharing copies with fans over the last week, and enjoying the building excitement as people begin to explore this new take on the story. We're now opening the store for everyone - but it won't be open for ever: we're planning to limit the release for a few months.

For more information, check out the shop FAQs page - and if you read, let us know what you think.

Books

Good faith!

Animation and Climbing (video)

Learn all about our progress on animations and our climbing mechanic in our latest update, this time in video form!

Rim-lighting test

We're a small team, so it's critical that we find ways to be efficient with every part of production.

We love to find simple yet powerful building blocks that can be reused in different ways. Here's a great concept that Paul came up with - a straightforward way of adding rim-lighting to all our objects in the world.

On top of our base cloud texture there's an additional lit layer. By masking this off based on a blurry light source texture, we can get a lovely effect as the light passes over it. This can potentially be used for everything in the game - the mountains themselves, the clouds as shown below, as well as trees, buildings, and perhaps even characters.

ink version 1.0 release!

We're proud to announce that ink, our open-source scripting language for interactive narrative, has now officially reached version 1.0!

Inky screenshot in dark mode

What's new in Version 1.0?

Version 1.0 is a stable release of "the story so far". The core features are well-tested and well-used, and the current integration has powered two full inkle releases: 2019's 3D adventure game, Heaven's Vault, and 2020's procedurally narrated tactics game, Pendragon.

But there's one big new feature: we've introduced the concept of parallel, shared-state story-flows - allowing the game to, say, switch between different simultaneous NPC conversations, while still allowing one conversation to affect the other.

We've also improved error handling and improved the way ink calls game-side functions. Inky now has a dark mode (see above!), zoom, a word count and stats menu, and better syntax highlighting. The default web player has new features for links and audio. And the Unity integration now allows live recompilation mid-game.

Full details can be found on the release notes page for ink, Inky and the ink-Unity-integration plugin.

What is ink?

ink is designed from the ground up to be "Word for interactive fiction". Open it up, and start writing. Branch when you need to, rejoin the flow seamlessly, track state and vary what's written based on what came before - without any need to plan, layout, or structure in advance. Organise your content when you know what shape it wants to take, not before.

It was recently awarded an Epic Megagrant, and we're otherwise supported by a Patreon.

Epic MegaGrant logo

A Different Approach To Interactive Writing

ink takes a different approach from other interactive fiction writing software in several ways.

It's entirely script-based, with no diagrams or flow-charts. Instead of being optimised for loops, it allows writers to quickly and robustly create heavily branching flow that runs naturally from beginning to end - as most interactive stories do.

All code and technical information is added as mark-up on top of text, making it easy to scan, proof-read, redraft and edit. It's also easy to see what's been changed in a file when using source-control.

Another key concept is global, always-on state tracking: every line the player sees in the course of the game is remembered, automatically, by the engine, without the need to define variables. This allows for fast iteration on game-logic and the easy implementation of cause-and-effect, without the need for "boilerplate" code.

Flexible and Powerful

But that doesn't mean ink is limited: it has variables, functions, maths and logic should you need them, and can also hand off complex decision-making to the game-code itself.

ink is also deliberately layout-agnostic. By handing the UI over to the game, it can be used to make hyperlink games, visual novels, RPGs, chatbots, FMV games, or simply to deliver highly-responsive barks in an first-person action game.

Over on the engine side, ink comes with a run-time debugger that allows reading and poking of variable state, and a profiling tool to help developers in frame-rate dependent environments to find and fix story-side slowdowns.

Uptake

ink has been adopted by game studios and other developers all around the world. It's been used on big indie games such Haven, NeoCab, Over the Alps, Falcon Age, Signs of the Sojourner and others.

For people looking to learn more about using ink, we've got several talks on our approaches, including this on from GDC 2017 on how Heaven's Vault drives its 3D world from a text-based script:

Development History

Here at inkle, ink has been our bedrock. We've used ink on every single title we've released over the last ten years, expanding and developing the feature set of the language over that time from quick mark-up for authoring branching choice-based narratives (Sorcery!) to authoring open-world, responsive, go-anywhere-and-do-anything narratives (er, Sorcery! 3. Also, Heaven's Vault.)

And we're continuing to find new ways to use the engine, like last year's experiment in procedurally narrating a chess-like game.

Originally released as an open source beta in 2016, ink quickly accrued an editor, inky, for easily writing and testing content, and a dedicated Unity plug-in to assist with integrating and testing stories at run-time.

Community Development

Since its release, a wide community of developers and enthusiasts have contributed to the project. There is a full javascript port, built into inky, which allows the editor to produce stand-alone web-playable games. There is a port for the popular Godot engine, and work is progressing on a C port that will ultimately enable Unreal integration.

We've had contributions in the form of bug fixes and features requests to the main ink code base, and too many contributions to ink to list - from Dark Mode, through auto-complete, to an integrated version of the "Writing With Ink" documentation and, most recently, an "open recent project" menu listing.

Looking back, we think these developments have justified our decision to make ink fully free and open source: the development around the system that's taken place would never have happened without the efforts of other developers, and we'd like to take this opportunity to thank everyone who's offered contributions, both large and small, over the last five years.

The core meeting point for ink developers has been the inkle Discord, which is now the go-to place on the internet for assistance with implementing ink features, and contains a wealth of tips and ideas.

Looking forward!

As inkle continues to develop games, we're continuing to develop and extend both ink and the Unity integration to allow us to tackle new problems.

Though we're naturally more cautious with new languages features now the codebase is mature, we have an internal roadmap of issues and features we'd like to address.

The more support we get - both financially, and in terms of bug and community support - the more we can push forwards.

Meanwhile, ink will continue to be free to use and available to all for as long as we are able to support it!

Happy writing!

The Songlines, by Bruce Chatwin

Joe had the idea for our highland game.

The "idea" here doesn't mean the idea of setting a game in the Highlands (okay, he had that idea too), but rather the "idea" is the "idea" which sits at the heart of the game and makes the game into this game. It's the idea we haven't talked about yet (except occasionally, by accident.) We've not formally declared: "hey, we had this idea."

We didn't. Joe did. And it's a great idea.

But when he told me the idea - which I'm not about to tell you, now - it reminded me of something. And for a long time I couldn't put my finger on it. When I say a long time, I mean multiple years, because Joe told me this idea in 2017 and I just realised what it made me think of.

If you want to know, the clue is in the title of this post. It's a book called The Songlines by a writer called Bruce Chatwin.

The Story of a Journey

The Songlines was published in 1987, which makes it essentially ancient history at this point. I read it much later, after writing a play about two explorers in a post-apocalyptic desert arguing about whether a line of burnt-out cars indicated a path to follow or not, when various people in my family told me my play was "basically just The Songlines". They were wrong - my play had more jokes in it, and ends on a gunshot - but they were also right; the play, like the book, was about route-finding, about journeys, stories and lines.

It's a sort-of anthropological book; it describes a journey by the author into Australia. I can't remember what happens on this journey and it's not terribly important. But the book culimates in a collection of thoughts about walking: what it means to walk and how people know which way to walk.

It proposes that us humans are not defined by being "the animal that talks".

We are "the animal that walks".

That sounds ridiculous but it isn't, it's really fascinating.

(This, by the way, is what I think anthropology is supposed to do: take something really mundane and then make you realise how fascinating and bizarre it is. My favourite example of that is "the three-second rule"; the one that allows you to eat crisps which have fallen on the floor of a pub, but only if they've been there for three seconds or less. After that, they become instantly disgusting and filthly. That's sensible, right? Wait. No, it's not. Anyway.)

The Journey of a Story

One of the things discussed in The Songlines (which, I should warn you, may or may not be true, and may be massively oversimplified) is the way Aborigines use stories - songs - as a way to navigate the enormous terrain of the Australian interior. Without maps (there being no paper, presuambly), the traveller recalls a tale, the major beats of which take place at major landmarks along the route. Here is the tree where the story begins; here is the rock where it continues; here is the river the characters crossed; and here is the ending, right where we wanted to go. The stories are the journey, and the journey repeats and reinforces the story.

The sounds ridiculous, doesn't it? Except, only, how many times have you walked through a city and said to your friend, "we go past the place where we met so-and-so; then turn left at that tree you tried to climb but feel out of; then right at the cinema complex where you were stood up that time; and then it's at the end of the street."

The Joy of Walking

This game is a journey about stories, that form the story of a journey. It's also about how glorious, how basic, how simple and how delightful it is to walk.

And when walking is truly delightful, one breaks into...

... ah, now, but that would telling.

The Call of the Wild!

Concept art with character walking across highlands

Every narrative project has to start somewhere - with something you're trying to hit. The highland game's different than most of our previous games because we're trying to hit a feeling. (You'll know it when you see it, I think.) So the narrative part of the game has a different job than it might sometimes: get out of the way quickly, then hold the game up high.

This is a game about going out into the wilds, and not knowing if you're coming back. Which sounds super dark and scary: but this isn't a scary game. You aren't going to get eaten by wolves. (You're more likely to turn into one yourself, perhaps. We'll see.)

So - who are you, and why are you doing it?

We tried some ideas that were adventure stories. After Hitchcock and the 39 Steps, you're a spy, crossing the hills to avoid escape. (Joe pointed out it could almost be called "Over the Highlands" at that point. It's a fair cop.)

Over the alps screenshot

Something more grounded then. You're a teenager and you're running away from home. That's almost this game. But if you're running away from something it's not quite the same as running towards something, is it? With every step away from something the tension recedes and only regret or "oh God it's chasing me" can step in. With running towards something, you can anticipate. You can wonder what you'll find. And - in classic inkle style - you can worry about being late.

So what's across the Highlands that's worth running towards? And who runs? And while you're running, what do you find?

I've done a lot of hill-walking - not in Scotland, as it happens, but in the Borders. For me, the thing I always loved is seeing a peak and striking out for it, getting there somehow or other. The stories of a place are there to help you arrive, and help you set out for the next hill.

What's in the Highlands waiting to be found? And will it pull you off your journey, or push you further along?

Ah, now that sounds like the makings of a tale.