The Game Narrative Design Tool

Arrow is the free, open-source and feature-rich tool for game narrative design, text-adventure development, and creation of interactive nonlinear storytelling documents.

Use Arrow Online !


screenshot of an Arrow project

Arrow supports a rich palette of features, from scenes and macros, to variables and characters. It also comes with built-in common node types, providing logic, interactive navigation, random data generation, state management, and more.

Here are few notable features:

Free as in Freedom

Arrow is and will remain free, no strings attached. Absolute ownership of the works you create with Arrow belongs to you.
The source is distributed under MIT license. In brief, it means you can freely download, use and modify Arrow. The project itself is developed using Godot Engine and few other open resources. For more information on them, take a look at copyright info.

100% Visual Development

Arrow is designed with authors and artists in mind.
It takes a graph (node-and-link), or no-coding development approach. Nodes, the most common resources constructing narrative/game-play and logic, are mainly organized on a grid and connected using graph links, to form series that define in what order these building blocks will be played.

Extensible Node System

The editor comes with a handy and complete set of built-in node types, allowing users to quickly design their narrative.
This set is open-source and you can modify or extend it.
Arrow project's Wiki include a dedicated page for each of these built-in nodes.

VCS-Friendly Save Files & JSON Export

Arrow uses JSON format for its saved projects. The format is textual and widely supported by game engines and programming languages. Resource in Arrow projects are managed under unique identifiers and sorted by creation time, forming easily manageable blocks (hunks) of data. This structure makes project revision using VCS tools such as Git much easier.

One-Click Playable Export

We can play our games directly in the Arrow editor's Console, to test and debug them. Porting that small part of the source to any programming language, we can create an interpreter and take advantage of Arrow's exports as assets for our games. Following this idea, Arrow utilizes its own bundled browser-based Official Runtime to export playable HTML+JS documents from the editor. This means you can export your game as a text adventure with one click (approximately)!

Support for Distributed Workflows

We can use Arrow's project organization features, to divide a large project to multiple Chapters (files) and have a workspace in which multiple Authors can work on the same document, and even on the same scene with no conflict.

Continuum Safety

Arrow tracks many visible and invisible relations between resources. Under the hood, it knows how resources depend on one another, and performs many checks to eliminate mistakes such as accidentally removing a variable used by different conditional nodes. These tracked relations are also used to automate tasks, such as renaming a resource that is exposed in tens of textual nodes.

Make sure to browse project's Repository and Wiki, for more information, detailed instructions and guides.