About
text quest is an open source game engine for running text-based adventure games; using a low/no code approach to game design.
A list of available games can be found on the home page. You can also read more about the games in detail in the games section (be careful - spoilers alert!).
Motivation
Text quest was create to:
- Inspire creative story writing (without images, CGI or video)
- Create a low/no code solution for building games (using YAML)
- Bootstrap something as quickly as possible to test the above (and not get bogged down with tooling, libraries and frameworks)
- Provide a little escapism during these unusual times
Game Design
Games are defined using YAML. A sample game can be seen below, it contains the game, player, powers and single block (See: concepts for more detail):
game:
name: Single Room Example Game
version: 1.0
description: Use commands to in a single room
author: <a href="https://github.com/desholmes">Des Holmes</a>
intro: '"Where am I?!?, maybe I should <b>look</b> around."</p>'
player:
name: "Des"
block: entrance
bag:
powers:
blockHistory:
powers:
help:
description: "help: Lists your powers and any hints."
look:
description: "look: Use `look` for a description of your surroundings."
powers:
description: "powers: List the powers you have unlocked."
blocks:
######
# SINGLE ROOM
######
entrance:
state: default
states:
default:
name: "Single room"
description: "You're in a single room game, nothing much to see in here."
Concepts
Here’s an overview of the core concepts within a games:
- Blocks: A block represents a single location within the game. A block can have:
exits
: Connections to other blocksstates
: Variations for ablock
state (containingexits
,actions
,items
)items
: Items which are ‘visible’ from within ablock
stateactions
: Actions which can be performed by theplayer
within a block state, and actions which can be triggered automatically based on what aplayer
is carrying
- Game: The name, version and author for the game
- Player: The name, current
block
location,powers
anditems
they are carrying - Powers: Descriptions for
powers
aplayer
can unlock (not listed here, as they are part of the game) - Items: Descriptions for items which the player can carry, or can be found in a
block
Technical Details
This project currently uses:
- JavaScript as the core programming language for the game engine
- Parcel web application bundler
- text-terminal for the terminal interface
- YAML to store the game configuration
- ascii generator for the logo
- github-fork-ribbon-css
Development
If you’re interesting in contributing head over to the text quest GitHub project.
Future Roadmap
The follow features are currently being considered for future development.
- Introduce
characters
as a concept (and associatedpowers
) - Cross over with voice activation project (coming soon)
- Upload/point to yaml URL (incl. Game yaml validator)
- Create a supporting website with docs and links to games
- Online game editor (visual, or text based)