Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lizadaly/windrift

A JS framework for writing mutable stories
https://github.com/lizadaly/windrift

hypertext interactive-fiction

Last synced: 3 months ago
JSON representation

A JS framework for writing mutable stories

Awesome Lists containing this project

README

        

# Windrift

A JavaScript framework for writing mutable narratives

![Integration tests](https://github.com/lizadaly/windrift/actions/workflows/playwright.yml/badge.svg)

Windrift has been used to author interactive hypertext stories including the award-winning [Harmonia](https://lizadaly.com/pages/harmonia/) in 2017, [Stone
Harbor](https://stoneharborgame.com/) in 2016, and [The Ballroom](https://lizadaly.com/projects/the-ballroom/) in 2019, all by Liza Daly. It was
also used by Enrique Henestroza Anguiano to write The
Imposter
(2018) and José Carlos Dias to produce the [Portuguese translation of Stone Harbor](https://stoneharborgame.com/pt/) in 2021.

## Documentation

The [official manual](https://windrift.app/manual) is continuously published as features are added and is itself a Windrift story. The manual is the best way to quickly get an overview of Windrift. Corrections and requests for coverage are gratefully accepted.

## Example stories

Stories demonstrating use of Windrift 2 from the basic to the advanced are available as part of the [official manual](https://windrift.app/manual) , as well as in the [Windrift Playground](https://playground.windrift.app/). Source code is available for all example stories.

## Quick start

### Dependencies

To ensure you're using a fully-compatible version of Node, use [Node Version Manager](https://github.com/nvm-sh/nvm). Follow its installation process for your platform and then run:

```
nvm install 18
nvm use 18
```

Then to install Windrift:

```
npm install
```

### To start a new story

```
npm run new
```

The story identifier must be a single string, like "west-of-house" or "colossal-cave." See the [manual](https://windrift.app/manual) for details.

### To run the local development environment

```
npm run dev
```

Other commands, including deployment options, are described in the Windrift manual.

## About version 2

This is a complete rewrite of Windrift, now based on [NextJS](https://nextjs.org/) and written in [TypeScript](https://www.typescriptlang.org/).

Windrift no longer separates the core library from the web framework, which was previously available as the `windrift-starter` repo. Keeping windrift-starter and windrift core separate made for a confusing installation and update process, and neither was useful without the other.

Windrift 2 unifies them into a single NextJS application, capable of hosting multiple stories. Authors can take advantage of any affordances offered by NextJS, including the free deployment options via [Vercel](https://vercel.com).

Because the core Windrift code is bundled with each story repository, authors can fully modify or alter any fundamental behavior of the library.

The [v1 branch](https://github.com/lizadaly/windrift/tree/v1) is no longer receiving updates.

## Contributor acknowledgment

* 6notes: Playwright test suite conversion