https://github.com/ssube/textual-engine
an event-driven text adventure engine for both narrative story telling and procedural dungeon crawling
https://github.com/ssube/textual-engine
adventure cli game game-engine text-adventure text-adventure-engine text-adventure-game typescript
Last synced: 6 months ago
JSON representation
an event-driven text adventure engine for both narrative story telling and procedural dungeon crawling
- Host: GitHub
- URL: https://github.com/ssube/textual-engine
- Owner: ssube
- License: mit
- Created: 2021-05-13T17:36:11.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-30T22:22:44.000Z (over 1 year ago)
- Last Synced: 2025-03-20T20:13:11.362Z (7 months ago)
- Topics: adventure, cli, game, game-engine, text-adventure, text-adventure-engine, text-adventure-game, typescript
- Language: TypeScript
- Homepage:
- Size: 5.66 MB
- Stars: 16
- Watchers: 2
- Forks: 2
- Open Issues: 38
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Textual Engine
This is a text adventure engine for the CLI and browsers, supporting both narrative fiction and procedural dungeon
crawlers, using an event and service architecture.See [the demo on Github Pages](https://ssube.github.io/textual-engine/) or [the getting started docs](docs/getting-started.md) for more info.
[](https://ssube.github.io/textual-engine/)
## Features
- text
- adventure
- worlds:
- contextual verbs
- item modifiers
- persistent rooms
- procedural expansion
- geometric links
- wandering monsters
- engine:
- localization of both input and output with [i18next](https://github.com/i18next/i18next)
- structured logging with [bunyan](https://github.com/trentm/node-bunyan)
- multiple data loaders: fetch, file, local storage, and page elements
- multiple input parsers: simple word and natural language
- multiple rendering engines: [readline](https://nodejs.org/api/readline.html), [Ink](https://github.com/vadimdemedes/ink), and [React](https://github.com/facebook/react/)
- save and reload game state
- entity scripts for signals and verbs
- planned:
- chat client and network play
- world editor for React browser UI## Contents
- [Textual Engine](#textual-engine)
- [Features](#features)
- [Contents](#contents)
- [Building](#building)
- [Playing](#playing)
- [Docs](#docs)
- [License](#license)## Building
Some `make` targets are provided:
- `make build`: transpile Typescript sources
- `make test`: build and run `mocha` tests
- `make cover`: run `make test` with `nyc` code coverage## Playing
[A recent version of the game is available on Github Pages](https://ssube.github.io/textual-engine/).
If you have a copy of this repository checked out, the `make run` target will build and launch the game on the CLI,
using the Ink rendering engine and demo world.If you prefer to run a Docker image, the latest build is published as `ssube/textual-engine:master-stretch`, and can
be run with:```shell
> docker run --rm -it ssube/textual-engine:master-stretch \
--config data/config.yml \
--data file://data/demo.yml
```## Docs
More detailed docs [are located in `./docs`](docs/).
Available documentation includes:
- [Engine Architecture](docs/architecture.md)
- [Development Workflow](docs/development.md)
- [Getting Started](docs/getting-started.md)
- [Creating Worlds](docs/world-templates.md)## License
This project uses [the MIT license](LICENSE.md).