1
0
Fork 0

fix(docs): describe load/save and worlds, procedural vs narrative, update readme features

This commit is contained in:
ssube 2021-06-20 00:25:37 -05:00
parent 2abae8c8b8
commit b156b2f502
Signed by: ssube
GPG Key ID: 3EED7B957D362AF1
2 changed files with 34 additions and 34 deletions

View File

@ -1,6 +1,7 @@
# Textual Engine
This is a text adventure engine for the CLI and browsers.
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.
@ -15,16 +16,18 @@ See [the demo on Github Pages](https://ssube.github.io/textual-engine/) or [the
- item modifiers
- persistent rooms
- procedural expansion
- geometric links
- wandering monsters
- save and load
- engine:
- entity scripts
- event broadcast
- localization of both input and output (with [i18next](https://github.com/i18next/i18next))
- multiple data loaders (fetch, file, and page elements)
- multiple rendering engines ([readline](https://nodejs.org/api/readline.html), [Ink](https://github.com/vadimdemedes/ink), and [React](https://github.com/facebook/react/))
- 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:
- natural language processing for input
- chat client and network play
- world editor for React browser UI
## Contents

View File

@ -11,7 +11,7 @@ This guide covers a little bit of everything in light detail.
- [Where Can I Play?](#where-can-i-play)
- [Notable Features](#notable-features)
- [For Dungeon Crawlers](#for-dungeon-crawlers)
- [For Interactive Fiction](#for-interactive-fiction)
- [For Narrative Fiction](#for-narrative-fiction)
- [Concepts](#concepts)
- [Command Structure](#command-structure)
- [Entity Types](#entity-types)
@ -81,23 +81,20 @@ the game engine invoke a named script on the target entity, and can be extended
#### For Dungeon Crawlers
TODO:
`textual-engine` can be used for procedural dungeon crawlers: the world is generated from a starting room and series
of templates, following the portals between rooms. With a wide variety of rooms and enemies, the player can explore
sprawling worlds, limited only by memory and processing power. Non-player actors can interact with items and each
other, and wander between rooms. The world will continue to expand as the player moves between rooms, until all
available portals have been connected.
- procedural dungeon crawlers
- templates and layered modifiers
- expanding as player moves
- limited by memory and time
- pruning old rooms
Pruning old rooms to allow infinite exploration is a planned feature: https://github.com/ssube/textual-engine/issues/13
#### For Interactive Fiction
#### For Narrative Fiction
TODO:
- story-based text adventures may not want or need randomization
- fixed structure
- no template strings
- 100% chance on all template refs
- no procedural rooms, all portals match
`textual-engine` can also be used for narrative fiction: predictable and guided worlds can be created by linking a
single starting room with a single destination for each portal. Using the template system, you can add slight
variations to flavor text, while keeping room and character names constant. Some stories do not need random worlds,
and the procedural creation can be disabled.
## Concepts
@ -134,8 +131,6 @@ The valid targets include:
When multiple entities match the `target`, the `index` can be used to differentiate.
A natural-language processing command mode is planned (https://github.com/ssube/textual-engine/issues/94).
### Entity Types
The commands shown above often require a target, the game entity with which you want to interact. There are a few
@ -154,11 +149,9 @@ The portals that lead into other rooms are also valid targets, but are not prope
### Worlds and Templates
TODO:
- loading games, templates
- saved game state
- world templates
The game world is created from a template, when the demo loads or using the `create` command. Once a game world
has been created, it can be saved and reloaded later, resuming from the last turn with the same player character.
Templates can be loaded directly from Github or another `https` source using the `load` command.
## Playing The Game
@ -177,12 +170,16 @@ available verbs: create, debug, graph, help, load, quit, save, drop, hit, look,
These verbs are split into two groups: commands to the game world and meta-commands to the game itself.
Additional room and item-specific verbs are planned (https://github.com/ssube/textual-engine/issues/78).
The current world and room can provide verbs of their own, or remove some of the common verbs. If you find
yourself unable to `move`, check the `help` for a list of available verbs.
### World Commands
- `drop <item>`
- drop an item from your inventory
- drop an item from your inventora list of y
- `equip <item>`
- equip an item from your inventory
- your equipped weapon will be used to hit
- `hit <actor>`
- hit an enemy actor
- `look [entity]`
@ -198,7 +195,7 @@ Additional room and item-specific verbs are planned (https://github.com/ssube/te
- take an item from the current room
- `use <item>`
- use an item on yourself
- (using items on other actors is a planned feature)
- using items on other actors is a planned feature: https://github.com/ssube/textual-engine/issues/102
- `wait`
- skip your turn
@ -334,7 +331,7 @@ A new world can be created at any point with the `create` command: `create templ
The `depth` parameter controls the initial size of the world and the number of rooms that will be generated before
the game loads, but it does not control the final size of the world.
A command to list available world templates is planned (https://github.com/ssube/textual-engine/issues/104).
The available worlds can be listed with the `worlds` command.
## Further Reading